dav/main.c

changeset 210
1d19e0ff18d9
parent 209
d24761f1e07c
child 211
3d12817414e9
equal deleted inserted replaced
209:d24761f1e07c 210:1d19e0ff18d9
231 free(password); 231 free(password);
232 login = 1; 232 login = 1;
233 return 1; 233 return 1;
234 } 234 }
235 235
236 Repository* url2repo(char *url, char **path) { 236 static Repository* url2repo(char *url, char **path) {
237 size_t ulen = strlen(url); 237 size_t ulen = strlen(url);
238 *path = NULL; 238 *path = NULL;
239 239
240 int s; 240 int s;
241 if(ulen > 7 && !strncasecmp(url, "http://", 7)) { 241 if(ulen > 7 && !strncasecmp(url, "http://", 7)) {
283 } 283 }
284 284
285 return repo; 285 return repo;
286 } 286 }
287 287
288 int set_session_config(DavSession *sn, CmdArgs *a) { 288 static int set_session_config(DavSession *sn, CmdArgs *a) {
289 char *plain = cmd_getoption(a, "plain"); 289 char *plain = cmd_getoption(a, "plain");
290 char *crypt = cmd_getoption(a, "crypt"); 290 char *crypt = cmd_getoption(a, "crypt");
291 291
292 if(plain && crypt) { 292 if(plain && crypt) {
293 fprintf(stderr, "Error: -p and -c option set\n"); 293 fprintf(stderr, "Error: -p and -c option set\n");
302 302
303 if (cmd_getoption(a, "verbose")) { 303 if (cmd_getoption(a, "verbose")) {
304 curl_easy_setopt(sn->handle, CURLOPT_VERBOSE, 1L); 304 curl_easy_setopt(sn->handle, CURLOPT_VERBOSE, 1L);
305 curl_easy_setopt(sn->handle, CURLOPT_STDERR, stderr); 305 curl_easy_setopt(sn->handle, CURLOPT_STDERR, stderr);
306 } 306 }
307 307
308 return 0; 308 return 0;
309 }
310
311 static void set_session_lock(DavSession *sn, CmdArgs *a) {
312 char *locktoken = cmd_getoption(a, "lock");
313 if(locktoken) {
314 DavLock *lock = dav_create_lock(sn, locktoken, NULL);
315 dav_add_collection_lock(sn, "/", lock);
316 }
309 } 317 }
310 318
311 static DavSession* connect_to_repo(Repository *repo, CmdArgs *a) { 319 static DavSession* connect_to_repo(Repository *repo, CmdArgs *a) {
312 DavSession *sn = dav_session_new_auth(ctx, repo->url, repo->user, repo->password); 320 DavSession *sn = dav_session_new_auth(ctx, repo->url, repo->user, repo->password);
313 sn->flags = get_repository_flags(repo); 321 sn->flags = get_repository_flags(repo);
702 DavSession *sn = connect_to_repo(repo, a); 710 DavSession *sn = connect_to_repo(repo, a);
703 711
704 if(set_session_config(sn, a)) { 712 if(set_session_config(sn, a)) {
705 return -1; 713 return -1;
706 } 714 }
715 set_session_lock(sn, a);
707 716
708 // override the session key if the -k option is specified 717 // override the session key if the -k option is specified
709 char *keyname = cmd_getoption(a, "key"); 718 char *keyname = cmd_getoption(a, "key");
710 if(keyname) { 719 if(keyname) {
711 DavKey *key = dav_context_get_key(ctx, keyname); 720 DavKey *key = dav_context_get_key(ctx, keyname);
850 DavSession *sn = connect_to_repo(repo, a); 859 DavSession *sn = connect_to_repo(repo, a);
851 860
852 if(set_session_config(sn, a)) { 861 if(set_session_config(sn, a)) {
853 return -1; 862 return -1;
854 } 863 }
864 set_session_lock(sn, a);
855 865
856 DavResource *res = dav_resource_new(sn, path); 866 DavResource *res = dav_resource_new(sn, path);
857 if(!res) { 867 if(!res) {
858 fprintf(stderr, "error\n"); 868 fprintf(stderr, "error\n");
859 return -1; 869 return -1;
892 DavSession *sn = connect_to_repo(repo, a); 902 DavSession *sn = connect_to_repo(repo, a);
893 903
894 if(set_session_config(sn, a)) { 904 if(set_session_config(sn, a)) {
895 return -1; 905 return -1;
896 } 906 }
907 set_session_lock(sn, a);
897 908
898 // override the session key if the -k option is specified 909 // override the session key if the -k option is specified
899 char *keyname = cmd_getoption(a, "key"); 910 char *keyname = cmd_getoption(a, "key");
900 if(keyname) { 911 if(keyname) {
901 DavKey *key = dav_context_get_key(ctx, keyname); 912 DavKey *key = dav_context_get_key(ctx, keyname);
952 963
953 DavSession *sn = connect_to_repo(repo1, a); 964 DavSession *sn = connect_to_repo(repo1, a);
954 if(set_session_config(sn, a)) { 965 if(set_session_config(sn, a)) {
955 return -1; 966 return -1;
956 } 967 }
968
969 // TODO: add lock support (do_copy_move_request doesn't support locks yet)
970 // set_session_lock(sn, a);
957 971
958 DavBool override = cmd_getoption(a, "override") ? true : false; 972 DavBool override = cmd_getoption(a, "override") ? true : false;
959 973
960 if(repo1 == repo2) { 974 if(repo1 == repo2) {
961 DavResource *res = dav_resource_new(sn, path1); 975 DavResource *res = dav_resource_new(sn, path1);
1101 DavSession *sn = connect_to_repo(url2repo(url, &path), a); 1115 DavSession *sn = connect_to_repo(url2repo(url, &path), a);
1102 1116
1103 if(set_session_config(sn, a)) { 1117 if(set_session_config(sn, a)) {
1104 return -1; 1118 return -1;
1105 } 1119 }
1120 set_session_lock(sn, a);
1106 1121
1107 DavResource *res = dav_resource_new(sn, path); 1122 DavResource *res = dav_resource_new(sn, path);
1108 if(!dav_exists(res)) { 1123 if(!dav_exists(res)) {
1109 print_resource_error(sn, res->path); 1124 print_resource_error(sn, res->path);
1110 return -1; 1125 return -1;

mercurial