diff -r 12bad63cf5a8 -r 5f1f7602cf77 dav/sync.c --- a/dav/sync.c Thu Mar 17 21:11:19 2016 +0100 +++ b/dav/sync.c Thu Mar 17 22:02:15 2016 +0100 @@ -207,6 +207,7 @@ fprintf(stderr, "Cannot load database file: %s\n", dir->database); return -1; } + remove_deleted_conflicts(dir, db); char *new_url = NULL; if(dir->collection) { @@ -649,6 +650,7 @@ fprintf(stderr, "Cannot load database file: %s\n", dir->database); return -1; } + remove_deleted_conflicts(dir, db); char *new_url = NULL; if(dir->collection) { @@ -1075,6 +1077,32 @@ } +void remove_deleted_conflicts(SyncDirectory *dir, SyncDatabase *db) { + char **dc = calloc(sizeof(void*), db->conflict->count); + int numdc = 0; + + UcxMapIterator i = ucx_map_iterator(db->conflict); + LocalResource *res; + UCX_MAP_FOREACH(key, res, i) { + char *path = util_concat_path(dir->path, res->path); + struct stat s; + if(stat(path, &s)) { + if(errno == ENOENT) { + dc[numdc] = res->path; + numdc++; + } else { + fprintf(stderr, "Cannot stat file: %s\n", path); + perror(""); + } + } + free(path); + } + + for(int i=0;iconflict, dc[i]); + } +} + int cmd_resolve_conflicts(CmdArgs *a) { if(a->argc != 1) { fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few" : "many");