diff -r c5bbae4b3cca -r 46f96dcd6eab dav/scfg.c --- 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 {