98 } |
98 } |
99 } else if(!cfgret) { |
99 } else if(!cfgret) { |
100 if(!strcmp(cmd, "pull")) { |
100 if(!strcmp(cmd, "pull")) { |
101 ret = cmd_pull(args); |
101 ret = cmd_pull(args); |
102 } else if(!strcmp(cmd, "push")) { |
102 } else if(!strcmp(cmd, "push")) { |
103 ret = cmd_push(args); |
103 ret = cmd_push(args, FALSE); |
|
104 } else if(!strcmp(cmd, "archive")) { |
|
105 ret = cmd_push(args, TRUE); |
104 } else if(!strcmp(cmd, "resolve-conflicts")) { |
106 } else if(!strcmp(cmd, "resolve-conflicts")) { |
105 ret = cmd_resolve_conflicts(args); |
107 ret = cmd_resolve_conflicts(args); |
106 } else if(!strcmp(cmd, "delete-conflicts")) { |
108 } else if(!strcmp(cmd, "delete-conflicts")) { |
107 ret = cmd_delete_conflicts(args); |
109 ret = cmd_delete_conflicts(args); |
108 } else if(!strcmp(cmd, "trash-info")) { |
110 } else if(!strcmp(cmd, "trash-info")) { |
140 fprintf(stderr, "Usage: %s command [options] arguments...\n\n", cmd); |
142 fprintf(stderr, "Usage: %s command [options] arguments...\n\n", cmd); |
141 |
143 |
142 fprintf(stderr, "Commands:\n"); |
144 fprintf(stderr, "Commands:\n"); |
143 fprintf(stderr, " pull [-cld] <directory>\n"); |
145 fprintf(stderr, " pull [-cld] <directory>\n"); |
144 fprintf(stderr, " push [-cld] <directory>\n"); |
146 fprintf(stderr, " push [-cld] <directory>\n"); |
|
147 fprintf(stderr, " archive [-cld] <directory>\n"); |
145 fprintf(stderr, " resolve-conflicts <directory>\n"); |
148 fprintf(stderr, " resolve-conflicts <directory>\n"); |
146 fprintf(stderr, " delete-conflicts <directory>\n"); |
149 fprintf(stderr, " delete-conflicts <directory>\n"); |
147 fprintf(stderr, " trash-info <directory>\n"); |
150 fprintf(stderr, " trash-info <directory>\n"); |
148 fprintf(stderr, " empty-trash <directory>\n\n"); |
151 fprintf(stderr, " empty-trash <directory>\n\n"); |
149 |
152 |
733 |
736 |
734 static int res_isconflict(SyncDatabase *db, LocalResource *res) { |
737 static int res_isconflict(SyncDatabase *db, LocalResource *res) { |
735 return ucx_map_cstr_get(db->conflict, res->path) ? 1 : 0; |
738 return ucx_map_cstr_get(db->conflict, res->path) ? 1 : 0; |
736 } |
739 } |
737 |
740 |
738 int cmd_push(CmdArgs *a) { |
741 int cmd_push(CmdArgs *a, DavBool archive) { |
739 if(a->argc != 1) { |
742 if(a->argc != 1) { |
740 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few" : "many"); |
743 fprintf(stderr, "Too %s arguments\n", a->argc < 1 ? "few" : "many"); |
741 return -1; |
744 return -1; |
742 } |
745 } |
743 |
746 |
876 } |
879 } |
877 } |
880 } |
878 } |
881 } |
879 |
882 |
880 // delete all removed files |
883 // delete all removed files |
881 if(ret == 0) { |
884 if(ret == 0 && !archive) { |
882 UcxMapIterator i = ucx_map_iterator(db->resources); |
885 UcxMapIterator i = ucx_map_iterator(db->resources); |
883 LocalResource *local; |
886 LocalResource *local; |
884 UCX_MAP_FOREACH(key, local, i) { |
887 UCX_MAP_FOREACH(key, local, i) { |
885 if (!res_matches_filter(dir, local->path+1)) { |
888 if (!res_matches_filter(dir, local->path+1)) { |
886 if(sync_delete_remote_resource(sn, local, &sync_delete)) { |
889 if(sync_delete_remote_resource(sn, local, &sync_delete)) { |
933 if(ret != -2) { |
936 if(ret != -2) { |
934 char *str_success = sync_success == 1 ? "file" : "files"; |
937 char *str_success = sync_success == 1 ? "file" : "files"; |
935 char *str_delete = sync_delete == 1 ? "file" : "files"; |
938 char *str_delete = sync_delete == 1 ? "file" : "files"; |
936 char *str_skipped = sync_delete == 1 ? "file" : "files"; |
939 char *str_skipped = sync_delete == 1 ? "file" : "files"; |
937 char *str_error = sync_error == 1 ? "error" : "errors"; |
940 char *str_error = sync_error == 1 ? "error" : "errors"; |
938 printf("Result: %d %s pushed, %d %s deleted, %d %s skipped, %d %s\n", |
941 |
939 sync_success, str_success, |
942 printf("Result: %d %s pushed, ", sync_success, str_success); |
940 sync_delete,str_delete, |
943 if(!archive) { |
941 sync_skipped,str_skipped, |
944 printf("%d %s deleted, ", sync_delete, str_delete); |
942 sync_error, str_error); |
945 } |
|
946 printf("%d %s skipped, %d %s\n", |
|
947 sync_skipped, str_skipped, sync_error, str_error); |
943 } |
948 } |
944 |
949 |
945 return ret; |
950 return ret; |
946 } |
951 } |
947 |
952 |