Author: mturk Date: Tue Nov 20 05:50:13 2012 New Revision: 1411551 URL: http://svn.apache.org/viewvc?rev=1411551&view=rev Log: DAEMON-253: Ensure we create pidfile path elements
Modified: commons/proper/daemon/branches/1.0.x/src/native/unix/native/jsvc-unix.c Modified: commons/proper/daemon/branches/1.0.x/src/native/unix/native/jsvc-unix.c URL: http://svn.apache.org/viewvc/commons/proper/daemon/branches/1.0.x/src/native/unix/native/jsvc-unix.c?rev=1411551&r1=1411550&r2=1411551&view=diff ============================================================================== --- commons/proper/daemon/branches/1.0.x/src/native/unix/native/jsvc-unix.c (original) +++ commons/proper/daemon/branches/1.0.x/src/native/unix/native/jsvc-unix.c Tue Nov 20 05:50:13 2012 @@ -501,9 +501,22 @@ static int check_pid(arg_data *args) char buff[80]; pid_t pidn = getpid(); int i, pid; + int once = 0; +retry: fd = open(args->pidf, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); if (fd < 0) { + if (once == 0 && (errno == ENOTDIR || errno == ENOENT)) { + char *p = strrchr(args->pidf, '/'); + once = 1; + if (p != NULL && *p) { + *p = '\0'; + i = mkdir(args->pidf, S_IRWXU | S_IXGRP | S_IRGRP | S_IXOTH | S_IROTH); + *p = '/'; + if (i == 0) + goto retry; + } + } log_error("Cannot open PID file %s, PID is %d", args->pidf, pidn); return -1; }