dav/scfg.c

changeset 233
d8042cede66c
parent 232
df3fa8637a58
child 244
47791bdf1725
--- a/dav/scfg.c	Tue Mar 22 11:51:48 2016 +0100
+++ b/dav/scfg.c	Tue Mar 22 13:05:09 2016 +0100
@@ -231,14 +231,6 @@
             dir->trash = util_concat_path(t, "/");
             free(t);
         }
-        
-        // create trash directory
-        mode_t mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
-        if (util_mkdir(dir->trash, mode)) {
-            if (errno != EEXIST) {
-                fprintf(stderr, "Cannot create trash directory: %s\n", dir->trash);
-            }
-        }
     } else {
         dir->trash = NULL;
     }
@@ -252,6 +244,34 @@
     return ucx_map_cstr_get(directories, name);
 }
 
+int scfg_check_dir(SyncDirectory *dir) {
+    struct stat s;
+    if(stat(dir->path, &s)) {
+        int err = errno;
+        if(err == ENOENT) {
+            fprintf(stderr, "directory %s does not exist.\n", dir->path);
+        } else {
+            fprintf(stderr, "Cannot stat directory %s.\n", dir->path);
+            perror(NULL);
+        }
+        fprintf(stderr, "Abort.\n");
+        return -1;
+    }
+    
+    if(dir->trash) {
+        // create trash directory
+        mode_t mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
+        if (util_mkdir(dir->trash, mode)) {
+            if (errno != EEXIST) {
+                fprintf(stderr, "Cannot create trash directory: %s\nAbort.\n", dir->trash);
+                return -1;
+            }
+        }
+    }
+    
+    return 0;
+}
+
 char* scfg_create_path(char *cfg) {
     if(!cfg) {
         return NULL;

mercurial