# HG changeset patch # User Olaf Wintermann # Date 1452695470 -3600 # Node ID ca07f14f7bfe9fb0066b5986968e26458be76057 # Parent a8f8cdbf85df04605c79d515a133c20b508654f9 added override option for copy/move diff -r a8f8cdbf85df -r ca07f14f7bfe dav/main.c --- a/dav/main.c Tue Jan 12 19:17:46 2016 +0100 +++ b/dav/main.c Wed Jan 13 15:31:10 2016 +0100 @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -170,6 +171,7 @@ fprintf(stderr, " -a show all files\n"); fprintf(stderr, " -l print resources in long list format\n"); fprintf(stderr, " -t print content type\n"); + fprintf(stderr, " -O override resources\n"); fprintf(stderr, " -n specify namespace uri\n"); fprintf(stderr, " -v verbose output\n"); fprintf(stderr, "\n"); @@ -947,16 +949,19 @@ return -1; } + DavBool override = cmd_getoption(a, "override") ? true : false; + if(repo1 == repo2) { DavResource *res = dav_resource_new(sn, path1); - int err = cp ? dav_copy(res, path2) : dav_move(res, path2); + int err = cp ? dav_copy_o(res, path2, override) + : dav_move_o(res, path2, override); if(err) { print_resource_error(sn, res->path); fprintf(stderr, "Cannot %s resource.\n", cp ? "copy" : "move"); return -1; } } else { - fprintf(stderr, "Copy or Move not supported for differend hosts.\n"); + fprintf(stderr, "Copy or Move not supported for different hosts.\n"); return -1; } diff -r a8f8cdbf85df -r ca07f14f7bfe dav/optparser.c --- a/dav/optparser.c Tue Jan 12 19:17:46 2016 +0100 +++ b/dav/optparser.c Wed Jan 13 15:31:10 2016 +0100 @@ -101,6 +101,10 @@ ucx_map_cstr_put(a->options, "recursive", NOARG); break; } + case 'O': { + ucx_map_cstr_put(a->options, "override", NOARG); + break; + } case 'o': { if(!option) { option = "output"; diff -r a8f8cdbf85df -r ca07f14f7bfe libidav/resource.c --- a/libidav/resource.c Tue Jan 12 19:17:46 2016 +0100 +++ b/libidav/resource.c Wed Jan 13 15:31:10 2016 +0100 @@ -29,6 +29,7 @@ #include #include #include +#include #include #include "utils.h" @@ -893,11 +894,19 @@ } int dav_copy(DavResource *res, char *newpath) { - return dav_cp_mv(res, newpath, 1, 0); + return dav_cp_mv(res, newpath, true, false); } int dav_move(DavResource *res, char *newpath) { - return dav_cp_mv(res, newpath, 0, 0); + return dav_cp_mv(res, newpath, false, false); +} + +int dav_copy_o(DavResource *res, char *newpath, DavBool override) { + return dav_cp_mv(res, newpath, true, override); +} + +int dav_move_o(DavResource *res, char *newpath, DavBool override) { + return dav_cp_mv(res, newpath, false, override); } diff -r a8f8cdbf85df -r ca07f14f7bfe libidav/webdav.h --- a/libidav/webdav.h Tue Jan 12 19:17:46 2016 +0100 +++ b/libidav/webdav.h Wed Jan 13 15:31:10 2016 +0100 @@ -41,6 +41,8 @@ extern "C" { #endif +typedef int DavBool; + typedef struct DavContext DavContext; typedef struct DavProxy DavProxy; typedef struct DavSession DavSession; @@ -224,6 +226,8 @@ int dav_copy(DavResource *res, char *newpath); int dav_move(DavResource *res, char *newpath); +int dav_copy_o(DavResource *res, char *newpath, DavBool override); +int dav_move_o(DavResource *res, char *newpath, DavBool override); char* dav_get_property(DavResource *res, char *name); char* dav_get_property_ns(DavResource *res, char *ns, char *name);