dav/sync.c

changeset 607
5dc7fe41e8f8
parent 603
8e7e072c18c1
child 608
3e4c0285a868
--- a/dav/sync.c	Sun Jun 16 13:14:24 2019 +0200
+++ b/dav/sync.c	Sat Jun 22 16:36:52 2019 +0200
@@ -77,12 +77,12 @@
 static DavPropName defprops[] = {
     { "DAV:", "getetag" },
     { DAV_NS, "status" },
-    { DAV_NS, "finfo" },
-    { DAV_NS, "tags" },
-    { DAV_NS, "xattributes" },
     { DAV_NS, "content-hash" },
     { DAV_NS, "split" },
-    { DAV_NS, "link" }
+    { DAV_PROPS_NS, "finfo" },
+    { DAV_PROPS_NS, "tags" },
+    { DAV_PROPS_NS, "xattributes" },
+    { DAV_PROPS_NS, "link" }
 };
 static size_t numdefprops = 8 ;
 
@@ -345,7 +345,7 @@
         return 1;
     }
     
-    DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_NS, "tags");
+    DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_PROPS_NS, "tags");
     UcxList *res_tags = parse_dav_xml_taglist(tagsprop);
     
     int ret = matches_tagfilter(res_tags, tagfilter);
@@ -552,7 +552,7 @@
     }
     
     int ret = 0;
-    DavResource *ls = dav_query(sn, "select D:getetag,idav:status,idav:tags,idav:finfo,idav:xattributes,idav:split,idav:link,`idav:content-hash` from / with depth = infinity");
+    DavResource *ls = dav_query(sn, "select D:getetag,idav:status,idav:split,`idav:content-hash`,idavprops:tags,idavprops:finfo,idavprops:xattributes,idavprops:link from / with depth = infinity");
     if(!ls) {
         print_resource_error(sn, "/");
         if(locked) {
@@ -743,7 +743,7 @@
             prev = elm->prev;
             next = elm->next;
             
-            if(dav_get_property_ns(res, DAV_NS, "link")) {
+            if(dav_get_property_ns(res, DAV_PROPS_NS, "link")) {
                 continue;
             }
             
@@ -958,7 +958,7 @@
     char *local_path = create_local_path(dir, res->path);
     
     char *link = SYNC_SYMLINK(dir) ? 
-            dav_get_string_property_ns(res, DAV_NS, "link") : NULL;
+            dav_get_string_property_ns(res, DAV_PROPS_NS, "link") : NULL;
     
     SYS_STAT s;
     DavBool exists = 1;
@@ -1019,7 +1019,7 @@
     while(ret == REMOTE_NO_CHANGE && local) {
         // check if tags have changed
         if(dir->tagconfig) {
-            DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_NS, "tags");
+            DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_PROPS_NS, "tags");
             UcxList *remote_tags = NULL;
             if(tagsprop) {
                 remote_tags = parse_dav_xml_taglist(tagsprop);
@@ -1040,7 +1040,7 @@
         
         // check if extended attributes have changed
         if((dir->metadata & FINFO_XATTR) == FINFO_XATTR) {
-            DavXmlNode *xattr = dav_get_property_ns(res, DAV_NS, "xattributes");
+            DavXmlNode *xattr = dav_get_property_ns(res, DAV_PROPS_NS, "xattributes");
             char *xattr_hash = get_xattr_hash(xattr);
             if(nullstrcmp(xattr_hash, local->xattr_hash)) {
                 ret = REMOTE_CHANGE_METADATA;
@@ -1049,7 +1049,7 @@
         } 
         
         // check if finfo has changed
-        DavXmlNode *finfo = dav_get_property_ns(res, DAV_NS, "finfo");
+        DavXmlNode *finfo = dav_get_property_ns(res, DAV_PROPS_NS, "finfo");
         if((dir->metadata & FINFO_MODE) == FINFO_MODE) {
             FileInfo f;
             finfo_get_values(finfo, &f);
@@ -1291,7 +1291,7 @@
     char *local_path = create_local_path(dir, path);
     
     char *link = SYNC_SYMLINK(dir) ?
-            dav_get_string_property_ns(res, DAV_NS, "link") : NULL;
+            dav_get_string_property_ns(res, DAV_PROPS_NS, "link") : NULL;
     
     char *etag = dav_get_string_property(res, "D:getetag");
     SYS_STAT s;
@@ -2311,7 +2311,7 @@
     UCX_FOREACH(elm, resources) {
         LocalResource *resource = elm->data;
         
-        DavResource *res = dav_get(sn, resource->path, "D:getetag,idav:status,idav:version-collection,idav:finfo,idav:xattributes");
+        DavResource *res = dav_get(sn, resource->path, "D:getetag,idav:status,idav:version-collection,idav:split,`idav:content-hash`,idavprops:tags,idavprops:finfo,idavprops:xattributes,idavprops:link");
         if(!res) {
             printf("skip: %s\n", resource->path);
             continue;
@@ -2673,11 +2673,11 @@
 {
     DavPropName properties[] = {
         {"DAV:", "getetag"},
-        {DAV_NS, "tags"},
         {DAV_NS, "version-collection"},
         {DAV_NS, "content-hash"},
         {DAV_NS, "split" },
-        {DAV_NS, "link" }
+        {DAV_PROPS_NS, "tags"},
+        {DAV_PROPS_NS, "link" }
     };
     int err = dav_load_prop(remote, properties, 6);
     
@@ -2808,7 +2808,7 @@
 
 // TODO: remove code dup (main.c: find_version)
 DavResource* versioning_deltav_find(DavResource *res, const char *version) {
-    DavResource *list = dav_versiontree(res, "D:getetag,idav:status,idav:finfo,idav:xattributes,idav:tags");
+    DavResource *list = dav_versiontree(res, "D:getetag,idav:status,idav:split,idavprops:link,idavprops:finfo,idavprops:xattributes,idavprops:tags");
     DavResource *ret = NULL;
     while(list) {
         DavResource *next = list->next;
@@ -2877,7 +2877,7 @@
 int sync_store_metadata(SyncDirectory *dir, const char *path, LocalResource *local, DavResource *res) {
     int ret = 0;
     
-    DavXmlNode *fileinfo = dav_get_property_ns(res, DAV_NS, "finfo");
+    DavXmlNode *fileinfo = dav_get_property_ns(res, DAV_PROPS_NS, "finfo");
     if(fileinfo) {
         FileInfo f;
         finfo_get_values(fileinfo, &f);
@@ -2900,7 +2900,7 @@
         }
     }
     
-    DavXmlNode *xattr_prop = dav_get_property_ns(res, DAV_NS, "xattributes");
+    DavXmlNode *xattr_prop = dav_get_property_ns(res, DAV_PROPS_NS, "xattributes");
     if(xattr_prop) {
         XAttributes *xattr = xml_get_attributes(xattr_prop);
         if(xattr) {
@@ -2941,7 +2941,7 @@
     
     UcxList *tags = NULL;
     if(dir->tagconfig) {
-        DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_NS, "tags");
+        DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_PROPS_NS, "tags");
         if(tagsprop) {
             tags = parse_dav_xml_taglist(tagsprop);
             
@@ -3572,7 +3572,7 @@
     
     DavBool islink = local->link_target ? 1 : 0;
     if(!local->link_target && local->link_updated) {
-        dav_remove_property_ns(res, DAV_NS, "link");
+        dav_remove_property_ns(res, DAV_PROPS_NS, "link");
     }
     
     size_t split_blocksize = resource_get_blocksize(dir, local, res, s.st_size);
@@ -3590,7 +3590,7 @@
     uint64_t blockcount = 0;
     
     if(islink) {
-        dav_set_string_property_ns(res, DAV_NS, "link", local->link_target);
+        dav_set_string_property_ns(res, DAV_PROPS_NS, "link", local->link_target);
     } else if(issplit) {
         // set split property
         char blocksize_str[32];
@@ -3894,7 +3894,7 @@
             DavBool store_tags = TRUE;
             // get remote tags
             UcxList *remote_tags = NULL;
-            DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_NS, "tags");
+            DavXmlNode *tagsprop = dav_get_property_ns(res, DAV_PROPS_NS, "tags");
             if(tagsprop) {
                 remote_tags = parse_dav_xml_taglist(tagsprop);
             }
@@ -3927,9 +3927,9 @@
             if(store_tags) {
                 if(tags) {
                     DavXmlNode *tagprop = create_xml_taglist(tags);
-                    dav_set_property_ns(res, DAV_NS, "tags", tagprop);
+                    dav_set_property_ns(res, DAV_PROPS_NS, "tags", tagprop);
                 } else {
-                    dav_remove_property_ns(res, DAV_NS, "tags");
+                    dav_remove_property_ns(res, DAV_PROPS_NS, "tags");
                 }
             }
             
@@ -3956,7 +3956,7 @@
             resource_set_xattr(res, local->xattr);
             hashes.xattr = strdup(local->xattr->hash);
         } else {
-            dav_remove_property(res, "idav:xattributes");
+            dav_remove_property(res, "idavprops:xattributes");
         }
     }
     return hashes;

mercurial