dav/sync.c

changeset 377
d6d7c16dd066
parent 374
38ae05d46f9a
child 378
d64ecd8d6969
--- a/dav/sync.c	Sun May 27 11:47:49 2018 +0200
+++ b/dav/sync.c	Sun May 27 12:57:12 2018 +0200
@@ -134,6 +134,8 @@
             ret = cmd_remove_tag(args);
         } else if(!strcmp(cmd, "update-tags")) {
             ret = cmd_update_tags(args);
+        } else if(!strcmp(cmd, "list-tags")) {
+            ret = cmd_list_tags(args);
         } else if(!strcmp(cmd, "add-dir")
                 || !strcmp(cmd, "add-directory")) {
             ret = cmd_add_directory(args);
@@ -174,7 +176,8 @@
     fprintf(stderr, "        empty-trash <directory>\n");
     fprintf(stderr, "        add-tag [-s <syncdir>] <file> <tag>\n");
     fprintf(stderr, "        remove-tag [-s <syncdir>] <file> <tag>\n");
-    fprintf(stderr, "        update-tags [-s <syncdir>] <file> [tags]\n\n");
+    fprintf(stderr, "        update-tags [-s <syncdir>] <file> [tags]\n");
+    fprintf(stderr, "        update-tags [-s <syncdir>] <file>\n\n");
     
     fprintf(stderr, "Options:\n");
     fprintf(stderr, "        -c         Disable conflict detection\n");
@@ -1443,7 +1446,7 @@
                 ret = -1;
             }
         } else {
-            // TODO: relete xattr
+            // TODO: delete xattr
             //ret = xattr_remove(path, dir->tagconfig->xattr_name);
         }
     }
@@ -2073,6 +2076,7 @@
 #define CMD_TAG_ADD    0
 #define CMD_TAG_REMOVE 1
 #define CMD_TAG_UPDATE 2
+#define CMD_TAG_LIST   3
 int cmd_add_tag(CmdArgs *args) {
     if(args->argc != 2) {
         fprintf(stderr, "Too %s arguments\n", args->argc <= 1 ? "few" : "many");
@@ -2097,6 +2101,14 @@
     return cmd_tagopt(args, CMD_TAG_UPDATE);
 }
 
+int cmd_list_tags(CmdArgs *args) {
+    if(args->argc != 1) {
+        fprintf(stderr, "Too %s arguments\n", args->argc <= 1 ? "few" : "many");
+        return -1;
+    }
+    return cmd_tagopt(args, CMD_TAG_LIST);
+}
+
 int cmd_tagopt(CmdArgs *args, int cmd) {
     SyncFile file;
     int ret = 0;
@@ -2123,7 +2135,7 @@
     UcxList *tags = NULL;
     DavBool store_tags = FALSE;
     
-    if(cmd == CMD_TAG_ADD || cmd == CMD_TAG_REMOVE) {
+    if(cmd != CMD_TAG_UPDATE) {
         char *tag = args->argv[1];
         char *tagcolor = NULL; // TODO: get color
 
@@ -2131,7 +2143,9 @@
         UcxList *x = NULL;
         UCX_FOREACH(elm, tags) {
             DavTag *t = elm->data;
-            if(!strcmp(t->name, tag)) {
+            if(cmd == CMD_TAG_LIST) {
+                printf("%s\n", t->name);
+            } else if(!strcmp(t->name, tag)) {
                 x = elm;
                 break;
             }
@@ -2145,7 +2159,7 @@
                 tags = ucx_list_append(tags, newtag);
                 store_tags = TRUE;
             }
-        } else {
+        } else if(cmd == CMD_TAG_REMOVE) {
             if(tags) {
                 tags = ucx_list_remove(tags, x);
             }

mercurial