dav/scfg.c

changeset 522
46f96dcd6eab
parent 521
c5bbae4b3cca
child 523
923a4528a2ae
--- a/dav/scfg.c	Wed Mar 13 15:05:40 2019 +0100
+++ b/dav/scfg.c	Wed Mar 13 18:43:30 2019 +0100
@@ -36,6 +36,7 @@
 
 #include "scfg.h"
 #include "config.h"
+#include "finfo.h"
 
 #define xstreq(a,b) xmlStrEqual(BAD_CAST a, BAD_CAST b)
 
@@ -306,6 +307,7 @@
     bool lockpull = false;
     bool lockpush = false;
     time_t lock_timeout = 0;
+    uint32_t metadata = 0;
     
     unsigned short parentlineno = node->line;
     node = node->children;
@@ -340,6 +342,13 @@
                 database = value;
             } else if(xstreq(node->name, "tagconfig")) {
                 tagconfig = parse_tagconfig(node);
+            } else if(xstreq(node->name, "metadata")) {
+                char *error = NULL;
+                metadata = parse_finfo(value, &error);
+                if(error) {
+                    print_error(node->line, "unknown metadata: %s\n", error);
+                    free(error);
+                }
             } else if(xstreq(node->name, "versioning")) {
                 versioning = parse_versioning_config(node);
             } else if(xstreq(node->name, "max-retry")) {
@@ -427,6 +436,14 @@
     dir->lockpull = lockpull;
     dir->lockpush = lockpush;
     dir->lock_timeout = lock_timeout;
+    dir->metadata = metadata;
+    if(metadata & FINFO_MODE == FINFO_MODE) {
+        dir->db_settings = DB_STORE_MODE;
+    }
+    if(metadata & FINFO_OWNER == FINFO_OWNER) {
+        dir->db_settings |= DB_STORE_OWNER;
+    }
+    
     if (include) {
         dir->include = include;
     } else {

mercurial