X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=lib%2Fpidfile.c;h=b67e187679af3b46ff59813463dac47e9ad773c8;hp=61a802f69713c78e78dedfb4bf81680eac884402;hb=f02d3ed3e135b5326003e7f69f8331ff6a3cc219;hpb=5900c07fab39d2833ea66429ad652ca49a91a508 diff --git a/lib/pidfile.c b/lib/pidfile.c index 61a802f6..b67e1876 100644 --- a/lib/pidfile.c +++ b/lib/pidfile.c @@ -34,8 +34,7 @@ * 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; @@ -52,8 +51,7 @@ pid_t read_pid (char *pidfile) * 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... */ @@ -78,14 +76,17 @@ pid_t check_pid (char *pidfile) * 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; } @@ -98,18 +99,18 @@ pid_t write_pid (char *pidfile) 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; } @@ -119,8 +120,7 @@ pid_t write_pid (char *pidfile) * 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