dav/main.c

changeset 181
a8f8cdbf85df
parent 180
5b58389ab9dd
child 182
ca07f14f7bfe
equal deleted inserted replaced
180:5b58389ab9dd 181:a8f8cdbf85df
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);

mercurial