diff -r 6524f45f304e -r 7870656d302d dav/scfg.c --- a/dav/scfg.c Sun Aug 11 11:27:04 2019 +0200 +++ b/dav/scfg.c Sun Aug 11 18:41:06 2019 +0200 @@ -393,9 +393,10 @@ bool lockpull = false; bool lockpush = false; bool hashing = false; - bool detect_copy = false; + //bool detect_copy = false; time_t lock_timeout = 0; uint32_t metadata = 0; + uint32_t symlink = 0; unsigned short parentlineno = node->line; node = node->children; @@ -489,6 +490,23 @@ } } else if(xstreq(node->name, "hashing")) { hashing = util_getboolean(value); + } else if(xstreq(node->name, "symlinks")) { + uint32_t symlinkconfig = 0; + const char *delims = " ,\r\n"; + char *cmdstr = strdup(value); + char *s = strtok(cmdstr, delims); + while(s) { + if(!strcmp(s, "sync")) { + symlinkconfig |= SYNC_SYMLINK_SYNC; + } else if(!strcmp(s, "extern_nofollow")) { + symlinkconfig |= SYNC_SYMLINK_EXTERN_NOFOLLOW; + } else if(!strcmp(s, "intern_nofollow")) { + symlinkconfig |= SYNC_SYMLINK_INTERN_NOFOLLOW; + } + s = strtok(NULL, delims); + } + free(cmdstr); + symlink = symlinkconfig; } else { print_error(node->line, "unknown directory config element: %s\n", node->name); @@ -535,7 +553,7 @@ dir->lock_timeout = lock_timeout; dir->metadata = metadata; dir->splitconfig = splitconfig; - dir->symlink = SYNC_SYMLINK_STORE; // TODO: add config elements + dir->symlink = symlink; if((metadata & FINFO_MODE) == FINFO_MODE) { dir->db_settings = DB_STORE_MODE; }