--- 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;