aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--svcok.c36
2 files changed, 39 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 5394ff2..9d030c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,7 @@
svcscan
svcsupervise
+svcok
+svcstat
+svctl
*.o
svc
diff --git a/svcok.c b/svcok.c
index e69de29..9919f80 100644
--- a/svcok.c
+++ b/svcok.c
@@ -0,0 +1,36 @@
+#include <err.h>
+#include <errno.h>
+#include <sys/file.h>
+#include <unistd.h>
+
+char *dir = ".";
+
+int
+main(int argc, char **argv)
+{
+ int fd;
+
+ if (argc > 1)
+ dir = argv[1];
+
+ if (chdir(dir) == -1)
+ err(1, "chdir()");
+
+ fd = open("supervise/lock", O_RDONLY);
+ if (fd == -1) {
+ if (errno == ENOENT)
+ exit(100);
+ else
+ err(1, "open()");
+ }
+
+ if (flock(fd, LOCK_EX | LOCK_NB) == -1) {
+ if (errno == EWOULDBLOCK)
+ exit(0);
+ else
+ err(1, "flock()");
+ } else
+ exit(100);
+
+ return 0; /* Not reached */
+}