Porting to SunOS 5.8:
[oweals/tinc.git] / lib / pidfile.c
index 2f30a4e..54a6b4c 100644 (file)
@@ -32,6 +32,8 @@
 #include <string.h>
 #include <errno.h>
 #include <signal.h>
+#include <sys/types.h>
+#include <fcntl.h>
 
 /* read_pid
  *
@@ -93,13 +95,15 @@ int write_pid (char *pidfile)
       fprintf(stderr, "Can't open or create %s.\n", pidfile);
       return 0;
   }
-
+  
+#ifdef HAVE_FLOCK
   if (flock(fd, LOCK_EX|LOCK_NB) == -1) {
       fscanf(f, "%d", &pid);
       fclose(f);
       printf("Can't lock, lock is held by pid %d.\n", pid);
       return 0;
   }
+#endif
 
   pid = getpid();
   if (!fprintf(f,"%d\n", pid)) {
@@ -109,11 +113,13 @@ int write_pid (char *pidfile)
   }
   fflush(f);
 
+#ifdef HAVE_FLOCK
   if (flock(fd, LOCK_UN) == -1) {
       printf("Can't unlock pidfile %s, %s.\n", pidfile, strerror(errno));
       close(fd);
       return 0;
   }
+#endif
   close(fd);
 
   return pid;