diff -r c5bbae4b3cca -r 46f96dcd6eab dav/sync.c --- a/dav/sync.c Wed Mar 13 15:05:40 2019 +0100 +++ b/dav/sync.c Wed Mar 13 18:43:30 2019 +0100 @@ -1682,12 +1682,18 @@ res->etag = NULL; res->last_modified = s.st_mtime; res->size = s.st_size; + res->mode = s.st_mode & 07777; + res->uid = s.st_uid; + res->gid = s.st_gid; return res; } else { *isdir = 1; LocalResource *res = calloc(1, sizeof(LocalResource)); res->path = util_concat_path(path, "/"); res->last_modified = s.st_mtime; + res->mode = s.st_mode & 07777; + res->uid = s.st_uid; + res->gid = s.st_gid; res->isdirectory = 1; return res; } @@ -2122,7 +2128,7 @@ int versioning_begin(SyncDirectory *dir, DavResource *res, int *exists) { int ret = 0; - if(dir->versioning->type == VERSIONING_SIMPLE) { + if(dir->versioning->type == VERSIONING_SIMPLE && *exists) { DavResource *history_collection = dav_resource_new( res->session, dir->versioning->collection); @@ -2217,7 +2223,7 @@ } dav_resource_free(history_collection); - } else { + } else if(dir->versioning->type == VERSIONING_DELTAV){ // DeltaV is so much easier :) if(dav_checkout(res)) { ret = VBEGIN_ERROR_CHECKOUT; @@ -2239,6 +2245,7 @@ if(dir->versioning->type == VERSIONING_SIMPLE) { // TODO } + return 0; } int sync_put_resource(