Made pid_file an optional config parameter.
git-svn-id: https://svn.musicpd.org/mpd/trunk@4250 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
		| @@ -22,7 +22,8 @@ Read more about MPD at <\fBhttp://www.musicpd.org/\fP>. | ||||
| Output a brief help message. | ||||
| .TP | ||||
| .BI --kill | ||||
| Kill the currently running mpd session. | ||||
| Kill the currently running mpd session.  The pid_file parameter must be | ||||
| specified in the config file for this to work. | ||||
| .TP | ||||
| .BI --create-db | ||||
| Force (re)creation of database and exit. | ||||
|   | ||||
| @@ -43,10 +43,10 @@ This specifies where the log file should be located. | ||||
| .TP | ||||
| .B error_file <file> | ||||
| This specifies where the error file should be located. | ||||
| .SH OPTIONAL PARAMETERS | ||||
| .TP | ||||
| .B pid_file <file> | ||||
| This specifies the file to save mpd's process ID in. | ||||
| .SH OPTIONAL PARAMETERS | ||||
| .TP | ||||
| .B state_file <file> | ||||
| This specifies if a state file is used and where it is located.  The state of | ||||
|   | ||||
							
								
								
									
										45
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								src/main.c
									
									
									
									
									
								
							| @@ -372,18 +372,20 @@ void startMainProcess() { | ||||
| } | ||||
|  | ||||
| void daemonize(Options * options) { | ||||
| 	FILE * fp; | ||||
| 	ConfigParam * pidFileParam = parseConfigFilePath(CONF_PID_FILE, 1); | ||||
| 	FILE * fp = NULL; | ||||
| 	ConfigParam * pidFileParam = parseConfigFilePath(CONF_PID_FILE, 0); | ||||
| 	 | ||||
| 	/* do this before daemon'izing so we can fail gracefully if we can't | ||||
| 	 * write to the pid file */ | ||||
| 	DEBUG("opening pid file\n"); | ||||
| 	fp = fopen(pidFileParam->value, "w+"); | ||||
| 	if(!fp) { | ||||
| 		ERROR("could not open %s \"%s\" (at line %i) for writing: %s\n", | ||||
| 				CONF_PID_FILE, pidFileParam->value, | ||||
| 				pidFileParam->line, strerror(errno)); | ||||
| 		exit(EXIT_FAILURE); | ||||
| 	if (pidFileParam) { | ||||
| 		/* do this before daemon'izing so we can fail gracefully if we can't | ||||
| 		 * write to the pid file */ | ||||
| 		DEBUG("opening pid file\n"); | ||||
| 		fp = fopen(pidFileParam->value, "w+"); | ||||
| 		if(!fp) { | ||||
| 			ERROR("could not open %s \"%s\" (at line %i) for writing: %s\n", | ||||
| 					CONF_PID_FILE, pidFileParam->value, | ||||
| 					pidFileParam->line, strerror(errno)); | ||||
| 			exit(EXIT_FAILURE); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|         if(options->daemon) { | ||||
| @@ -418,10 +420,12 @@ void daemonize(Options * options) { | ||||
| 		DEBUG("daemonized!\n"); | ||||
|         } | ||||
|  | ||||
| 	DEBUG("writing pid file\n"); | ||||
| 	fprintf(fp, "%lu\n", (unsigned long)getpid()); | ||||
| 	fclose(fp); | ||||
| 	masterPid = getpid(); | ||||
| 	if (pidFileParam) { | ||||
| 		DEBUG("writing pid file\n"); | ||||
| 		fprintf(fp, "%lu\n", (unsigned long)getpid()); | ||||
| 		fclose(fp); | ||||
| 		masterPid = getpid(); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void setupLogOutput(Options * options, FILE * out, FILE * err) { | ||||
| @@ -461,7 +465,9 @@ void setupLogOutput(Options * options, FILE * out, FILE * err) { | ||||
| } | ||||
|  | ||||
| void cleanUpPidFile() { | ||||
| 	ConfigParam * pidFileParam = parseConfigFilePath(CONF_PID_FILE, 1); | ||||
| 	ConfigParam * pidFileParam = parseConfigFilePath(CONF_PID_FILE, 0); | ||||
|  | ||||
| 	if (!pidFileParam) return; | ||||
|  | ||||
| 	DEBUG("cleaning up pid file\n"); | ||||
| 	 | ||||
| @@ -472,9 +478,14 @@ void killFromPidFile(char * cmd, int killOption) { | ||||
| 	/*char buf[32]; | ||||
| 	struct stat st_cmd; | ||||
| 	struct stat st_exe;*/ | ||||
| 	ConfigParam * pidFileParam = parseConfigFilePath(CONF_PID_FILE, 1); | ||||
| 	ConfigParam * pidFileParam = parseConfigFilePath(CONF_PID_FILE, 0); | ||||
| 	int pid; | ||||
|  | ||||
| 	if (!pidFileParam) { | ||||
| 		ERROR("no pid_file specified in the config file\n"); | ||||
| 		exit(EXIT_FAILURE); | ||||
| 	} | ||||
|  | ||||
| 	FILE * fp = fopen(pidFileParam->value,"r"); | ||||
| 	if(!fp) { | ||||
| 		ERROR("unable to open %s \"%s\": %s\n",  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 J. Alexander Treuman
					J. Alexander Treuman