aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCalvin Morrison <mutantturkey@gmail.com>2014-04-11 10:06:50 -0400
committerCalvin Morrison <mutantturkey@gmail.com>2014-04-11 10:06:50 -0400
commit8bfa6a2175fa77183928c605a724c40c32d9af78 (patch)
tree9348ef9034038c5ae2d6dbbcbaafe05c755f7103
parentd9332eeb3c27d9e3041e0066db933f4d93926a25 (diff)
fix line endings, add a try_mkdir function
-rw-r--r--lock.c65
1 files changed, 38 insertions, 27 deletions
diff --git a/lock.c b/lock.c
index 1075628..871425d 100644
--- a/lock.c
+++ b/lock.c
@@ -1,27 +1,38 @@
-/* See LICENSE for licence details. */
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-
-int main(int argc, char **argv){
- if(argc != 2){
- fprintf(stderr, "Please supply one argument: the lock directory.\n");
- return EXIT_FAILURE;
- }
-
- /* create lock */
- if(mkdir(argv[1], S_IRUSR)){
- if(errno && errno != EEXIST) {
- fprintf(stderr, "Failed to create lock %s.\n", argv[1]);
- return EXIT_FAILURE;
- }
- /* lock exists */
- for(; mkdir(argv[1], S_IRUSR); ){
- sleep(1);
- }
- }
- return EXIT_SUCCESS;
-}
+/* See LICENSE for licence details. */
+#include <errno.h>
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <stdlib.h>
+
+int try_mkdir(const char *dn) {
+ int ret;
+
+ errno = 0;
+ ret = 0;
+
+ ret = mkdir(dn, S_IRUSR);
+ if(errno && errno != EEXIST) {
+ fprintf(stderr, "Failed to create lock %s.\n", dn);
+ exit(EXIT_FAILURE);
+ }
+ return ret;
+
+}
+
+int main(int argc, char **argv){
+ if(argc != 2){
+ fprintf(stderr, "Please supply one argument: the lock directory.\n");
+ return EXIT_FAILURE;
+ }
+
+ /* create lock */
+ if(try_mkdir(argv[1])){
+ /* lock exists */
+ for(; try_mkdir(argv[1]); ){
+ sleep(1);
+ }
+ }
+ return EXIT_SUCCESS;
+}