104 !strcasecmp(cmd, "delete")) |
104 !strcasecmp(cmd, "delete")) |
105 { |
105 { |
106 ret = cmd_remove(args); |
106 ret = cmd_remove(args); |
107 } else if(!strcasecmp(cmd, "mkdir") || !strcasecmp(cmd, "mkcol")) { |
107 } else if(!strcasecmp(cmd, "mkdir") || !strcasecmp(cmd, "mkcol")) { |
108 ret = cmd_mkdir(args); |
108 ret = cmd_mkdir(args); |
|
109 } else if(!strcasecmp(cmd, "copy") || !strcasecmp(cmd, "cp")) { |
|
110 ret = cmd_move(args, true); |
|
111 } else if(!strcasecmp(cmd, "move") || !strcasecmp(cmd, "mv")) { |
|
112 ret = cmd_move(args, false); |
109 } else if(!strcasecmp(cmd, "date")) { |
113 } else if(!strcasecmp(cmd, "date")) { |
110 ret = cmd_date(args); |
114 ret = cmd_date(args); |
111 } else if(!strcasecmp(cmd, "set-property")) { |
115 } else if(!strcasecmp(cmd, "set-property")) { |
112 ret = cmd_set_property(args); |
116 ret = cmd_set_property(args); |
113 } else if(!strcasecmp(cmd, "get-property")) { |
117 } else if(!strcasecmp(cmd, "get-property")) { |
137 stderr, |
141 stderr, |
138 " get [-pcR] [-o <file>] [-u <date>] <url>\n"); |
142 " get [-pcR] [-o <file>] [-u <date>] <url>\n"); |
139 fprintf(stderr, " put [-pcR] [-k <key>] <url> <file>\n"); |
143 fprintf(stderr, " put [-pcR] [-k <key>] <url> <file>\n"); |
140 fprintf(stderr, " mkdir [-pc] [-k <key>] <url>\n"); |
144 fprintf(stderr, " mkdir [-pc] [-k <key>] <url>\n"); |
141 fprintf(stderr, " remove [-pc] <url>\n"); |
145 fprintf(stderr, " remove [-pc] <url>\n"); |
|
146 fprintf(stderr, " copy [-pc] <url> <url>\n"); |
|
147 fprintf(stderr, " move [-pc] <url> <url>\n"); |
142 fprintf( |
148 fprintf( |
143 stderr, |
149 stderr, |
144 " get-property [-pc] [-n <uri>] <url> <property>\n"); |
150 " get-property [-pc] [-n <uri>] <url> <property>\n"); |
145 fprintf( |
151 fprintf( |
146 stderr, |
152 stderr, |
919 |
925 |
920 free(path); |
926 free(path); |
921 return 0; |
927 return 0; |
922 } |
928 } |
923 |
929 |
|
930 int cmd_move(CmdArgs *a, int cp) { |
|
931 if(a->argc != 2) { |
|
932 // TODO: change, when creation of multiple dirs is supported |
|
933 fprintf(stderr, "Too %s arguments\n", a->argc < 2 ? "few":"many"); |
|
934 return -1; |
|
935 } |
|
936 |
|
937 char *url1 = a->argv[0]; |
|
938 char *path1 = NULL; |
|
939 Repository *repo1 = url2repo(url1, &path1); |
|
940 |
|
941 char *url2 = a->argv[1]; |
|
942 char *path2 = NULL; |
|
943 Repository *repo2 = url2repo(url2, &path2); |
|
944 |
|
945 DavSession *sn = connect_to_repo(repo1); |
|
946 if(set_session_config(sn, a)) { |
|
947 return -1; |
|
948 } |
|
949 |
|
950 if(repo1 == repo2) { |
|
951 DavResource *res = dav_resource_new(sn, path1); |
|
952 int err = cp ? dav_copy(res, path2) : dav_move(res, path2); |
|
953 if(err) { |
|
954 print_resource_error(sn, res->path); |
|
955 fprintf(stderr, "Cannot %s resource.\n", cp ? "copy" : "move"); |
|
956 return -1; |
|
957 } |
|
958 } else { |
|
959 fprintf(stderr, "Copy or Move not supported for differend hosts.\n"); |
|
960 return -1; |
|
961 } |
|
962 |
|
963 return 0; |
|
964 } |
|
965 |
924 |
966 |
925 static size_t get_date_header_cb(void *header, int s, int n, void *data) { |
967 static size_t get_date_header_cb(void *header, int s, int n, void *data) { |
926 char **date_str = (char**)data; |
968 char **date_str = (char**)data; |
927 |
969 |
928 //printf("header: %.*s\n", s*n, header); |
970 //printf("header: %.*s\n", s*n, header); |