* 0 is returned if either there's no pidfile, it's empty
* or no pid can be read.
*/
-pid_t read_pid (char *pidfile)
-{
+pid_t read_pid (char *pidfile) {
FILE *f;
long pid;
* table (using /proc) to determine if the process already exists. If
* so the pid is returned, otherwise 0.
*/
-pid_t check_pid (char *pidfile)
-{
+pid_t check_pid (char *pidfile) {
pid_t pid = read_pid(pidfile);
/* Amazing ! _I_ am already holding the pid file... */
* Writes the pid to the specified file. If that fails 0 is
* returned, otherwise the pid.
*/
-pid_t write_pid (char *pidfile)
-{
+pid_t write_pid (char *pidfile) {
FILE *f;
int fd;
pid_t pid;
- if ( ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1)
- || ((f = fdopen(fd, "r+")) == NULL) ) {
+ if ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1) {
+ return 0;
+ }
+
+ if ((f = fdopen(fd, "r+")) == NULL) {
+ close(fd);
return 0;
}
pid = getpid();
if (!fprintf(f,"%ld\n", (long)pid)) {
- close(fd);
+ fclose(f);
return 0;
}
fflush(f);
#ifdef HAVE_FLOCK
if (flock(fd, LOCK_UN) == -1) {
- close(fd);
+ fclose(f);
return 0;
}
#endif
- close(fd);
+ fclose(f);
return pid;
}
* Remove the the specified file. The result from unlink(2)
* is returned
*/
-int remove_pid (char *pidfile)
-{
+int remove_pid (char *pidfile) {
return unlink (pidfile);
}
#endif