From 561a2fa77d29d3b797456ed92dc0f8f23798c0ea Mon Sep 17 00:00:00 2001 From: FRIGN Date: Fri, 11 Apr 2014 12:47:37 +0200 Subject: Fixing the obvious stuff by mar77i and fixing the obvious stuff he forgot. --- lock.c | 43 +++++++++---------------------------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/lock.c b/lock.c index 68245ac..1075628 100644 --- a/lock.c +++ b/lock.c @@ -1,4 +1,5 @@ /* See LICENSE for licence details. */ +#include #include #include #include @@ -6,47 +7,21 @@ #include int main(int argc, char **argv){ - size_t pathlen, argvlen; - char *path; - if(argc != 2){ fprintf(stderr, "Please supply one argument: the lock directory.\n"); return EXIT_FAILURE; } - if(access(argv[1], F_OK)){ - /* create lock */ - if(mkdir(argv[1], S_IRUSR | S_IXUSR)){ + /* 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; } - return EXIT_SUCCESS; - } - - /* prepare path */ - argvlen = strlen(argv[1]); - pathlen = argvlen + sizeof("/..") + 1; - path = malloc(pathlen); - if(path == NULL) { - fprintf(stderr, "malloc() failed\n"); - return EXIT_FAILURE; - } - - memcpy(path, argv[1], argvlen); - memcpy(path + argvlen, "/..\0", sizeof("/..") + 1); - - if(access(path, F_OK)){ - /* invalid lock */ - fprintf(stderr, "%s is not a lock directory.\n", argv[1]); - free(path); - return EXIT_FAILURE; - } - - /* lock exists */ - for(; !access(path, F_OK) ;){ - sleep(1); - } - - free(path); + /* lock exists */ + for(; mkdir(argv[1], S_IRUSR); ){ + sleep(1); + } + } return EXIT_SUCCESS; } -- cgit v1.2.1