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; |