All pastes #947064 Raw Edit

Stuff

public c v1 · immutable
·published 2008-03-18 03:49 UTC
rendered paste body
pid_output (const char *path){  int tmp;  int fd;  pid_t pid;  char buf[16];  struct flock lock;  mode_t oldumask;  pid = getpid ();  oldumask = umask(0777 & ~LOGFILE_MASK);  fd = open (path, O_RDWR | O_CREAT, LOGFILE_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));      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);        }               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;}