dav/scfg.c

changeset 347
b6ff6be7aa91
parent 319
2433b5969d44
child 361
b6f2462ee055
--- a/dav/scfg.c	Thu Dec 14 13:35:03 2017 +0100
+++ b/dav/scfg.c	Sat Dec 16 10:37:50 2017 +0100
@@ -135,6 +135,7 @@
     UcxList *include = NULL;
     UcxList *exclude = NULL;
     int max_retry = 0;
+    int allow_cmd = SYNC_CMD_PULL | SYNC_CMD_PUSH | SYNC_CMD_ARCHIVE;
     bool backuppull = false;
     bool lockpull = false;
     bool lockpush = false;
@@ -179,6 +180,24 @@
                     print_warning(node->line, "unsigned integer value "
                             "expected in <max-retry> element\n");
                 }
+            } else if(xstreq(node->name, "allow-cmd")) {
+                int cmds = 0;
+                const char *delims = " ,\r\n";
+                char *cmdstr = strdup(value);
+                char *cmd = strtok(cmdstr, delims);
+                while(cmd) {
+                    if(!strcmp(cmd, "pull")) {
+                        cmds |= SYNC_CMD_PULL;
+                    } else if(!strcmp(cmd, "push")) {
+                        cmds |= SYNC_CMD_PUSH;
+                    } else if(!strcmp(cmd, "archive")) {
+                        cmds |= SYNC_CMD_ARCHIVE;
+                    }
+                    cmd = strtok(NULL, delims);
+                }
+                free(cmdstr);
+                allow_cmd = cmds;
+                
             } else if(xstreq(node->name, "backup-on-pull")) {
                 backuppull = util_getboolean(value);
             } else if(xstreq(node->name, "lock-pull")) {
@@ -229,6 +248,7 @@
     dir->repository = strdup(repository);
     dir->database = strdup(database);
     dir->max_retry = max_retry;
+    dir->allow_cmd = allow_cmd;
     dir->backuppull = backuppull;
     dir->lockpull = lockpull;
     dir->lockpush = lockpush;

mercurial