diff options
author | Calvin Morrison <mutantturkey@gmail.com> | 2014-04-11 10:06:50 -0400 |
---|---|---|
committer | Calvin Morrison <mutantturkey@gmail.com> | 2014-04-11 10:06:50 -0400 |
commit | 8bfa6a2175fa77183928c605a724c40c32d9af78 (patch) | |
tree | 9348ef9034038c5ae2d6dbbcbaafe05c755f7103 | |
parent | d9332eeb3c27d9e3041e0066db933f4d93926a25 (diff) |
fix line endings, add a try_mkdir function
-rw-r--r-- | lock.c | 65 |
1 files changed, 38 insertions, 27 deletions
@@ -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; +} |