diff options
Diffstat (limited to 'lib/pid_output.c')
| -rw-r--r-- | lib/pid_output.c | 79 | 
1 files changed, 38 insertions, 41 deletions
diff --git a/lib/pid_output.c b/lib/pid_output.c index 7369e23c20..e2e4434150 100644 --- a/lib/pid_output.c +++ b/lib/pid_output.c @@ -27,53 +27,50 @@  #define PIDFILE_MASK 0644 -pid_t -pid_output (const char *path) +pid_t pid_output(const char *path)  { -  int tmp; -  int fd; -  pid_t pid; -  char buf[16]; -  struct flock lock;   -  mode_t oldumask; +	int tmp; +	int fd; +	pid_t pid; +	char buf[16]; +	struct flock lock; +	mode_t oldumask; -  pid = getpid (); +	pid = getpid(); -  oldumask = umask(0777 & ~PIDFILE_MASK); -  fd = open (path, O_RDWR | O_CREAT, PIDFILE_MASK); -  if (fd < 0) -    { -      zlog_err("Can't create pid lock file %s (%s), exiting", -	       path, safe_strerror(errno)); -      umask(oldumask); -      exit(1); -    } -  else -    { -      size_t pidsize; +	oldumask = umask(0777 & ~PIDFILE_MASK); +	fd = open(path, O_RDWR | O_CREAT, PIDFILE_MASK); +	if (fd < 0) { +		zlog_err("Can't create pid lock file %s (%s), exiting", path, +			 safe_strerror(errno)); +		umask(oldumask); +		exit(1); +	} else { +		size_t pidsize; -      umask(oldumask); -      memset (&lock, 0, sizeof(lock)); +		umask(oldumask); +		memset(&lock, 0, sizeof(lock)); -      set_cloexec(fd); +		set_cloexec(fd); -      lock.l_type = F_WRLCK; -      lock.l_whence = SEEK_SET; +		lock.l_type = F_WRLCK; +		lock.l_whence = SEEK_SET; -      if (fcntl(fd, F_SETLK, &lock) < 0) -        { -          zlog_err("Could not lock pid_file %s, exiting", path); -          exit(1); -        } +		if (fcntl(fd, F_SETLK, &lock) < 0) { +			zlog_err("Could not lock pid_file %s, exiting", path); +			exit(1); +		} -      sprintf (buf, "%d\n", (int) pid); -      pidsize = strlen(buf); -      if ((tmp = write (fd, buf, pidsize)) != (int)pidsize) -        zlog_err("Could not write pid %d to pid_file %s, rc was %d: %s", -	         (int)pid,path,tmp,safe_strerror(errno)); -      else if (ftruncate(fd, pidsize) < 0) -        zlog_err("Could not truncate pid_file %s to %u bytes: %s", -	         path,(u_int)pidsize,safe_strerror(errno)); -    } -  return pid; +		sprintf(buf, "%d\n", (int)pid); +		pidsize = strlen(buf); +		if ((tmp = write(fd, buf, pidsize)) != (int)pidsize) +			zlog_err( +				"Could not write pid %d to pid_file %s, rc was %d: %s", +				(int)pid, path, tmp, safe_strerror(errno)); +		else if (ftruncate(fd, pidsize) < 0) +			zlog_err( +				"Could not truncate pid_file %s to %u bytes: %s", +				path, (u_int)pidsize, safe_strerror(errno)); +	} +	return pid;  }  | 
