dav/scfg.c

changeset 623
7870656d302d
parent 576
62cc92445234
child 630
046b869a1c49
--- 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;
     }

mercurial