MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/* left unaltered for tinc -- Ivo Timmermans */
if (!(f=fopen(pidfile,"r")))
return 0;
- fscanf(f,"%ld", &pid);
+ if(fscanf(f,"%ld", &pid) != 1)
+ pid = 0;
fclose(f);
return pid;
}
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;
}