# HG changeset patch # User Olaf Wintermann # Date 1507833466 -7200 # Node ID 54819e984a19629fe1077e4b9f6e57d52e4b8d52 # Parent 2dc61cc5a8ac7992da1df8617b051f7de3669553 adds dav get option to keep existing files diff -r 2dc61cc5a8ac -r 54819e984a19 dav/main.c --- a/dav/main.c Mon Oct 09 14:55:47 2017 +0200 +++ b/dav/main.c Thu Oct 12 20:37:46 2017 +0200 @@ -161,7 +161,7 @@ fprintf(stderr, " list [-altdepcR] [-u ] \n"); fprintf( stderr, - " get [-pcR] [-o ] [-u ] \n"); + " get [-pcRK] [-o ] [-u ] \n"); fprintf(stderr, " put [-pcR] [-k ] [-L ] \n"); fprintf(stderr, " mkdir [-pc] [-k ] [-L ] \n"); fprintf(stderr, " remove [-pc] [-L ] \n"); @@ -189,6 +189,7 @@ fprintf(stderr, " -R " "Recursively do the operation for all children\n"); + fprintf(stderr, " -K Keep already present files\n"); fprintf(stderr, " -o Write output to file\n"); fprintf( stderr, @@ -747,12 +748,27 @@ return 0; } + int isstdout = !strcmp(out, "-"); + if(cmd_getoption(a, "keep") && !isstdout) { + struct stat s; + if(stat(out, &s)) { + if(errno != ENOENT) { + perror("stat"); + } + } else { + if(cmd_getoption(a, "recursive")) { + printf("skip: %s\n", res->path); + } + return 0; + } + } + // print some status message in recursive mode if(cmd_getoption(a, "recursive")) { printf("get: %s\n", res->path); } - - FILE *fout = !strcmp(out, "-") ? stdout : fopen(out, "wb"); + + FILE *fout = isstdout ? stdout : fopen(out, "wb"); if(!fout) { fprintf(stderr, "cannot open output file\n"); return -1; diff -r 2dc61cc5a8ac -r 54819e984a19 dav/optparser.c --- a/dav/optparser.c Mon Oct 09 14:55:47 2017 +0200 +++ b/dav/optparser.c Thu Oct 12 20:37:46 2017 +0200 @@ -128,6 +128,10 @@ ucx_map_cstr_put(a->options, "structure", NOARG); break; } + case 'K': { + ucx_map_cstr_put(a->options, "keep", NOARG); + break; + } case 'o': { if(!option) { option = "output"; diff -r 2dc61cc5a8ac -r 54819e984a19 dav/sync.h --- a/dav/sync.h Mon Oct 09 14:55:47 2017 +0200 +++ b/dav/sync.h Thu Oct 12 20:37:46 2017 +0200 @@ -33,6 +33,8 @@ #include #include +#include + #include "sopt.h" #include "version.h" diff -r 2dc61cc5a8ac -r 54819e984a19 dav/version.h --- a/dav/version.h Mon Oct 09 14:55:47 2017 +0200 +++ b/dav/version.h Thu Oct 12 20:37:46 2017 +0200 @@ -29,7 +29,7 @@ #ifndef VERSION_H #define VERSION_H -#define DAV_VERSION "1.1 RC1" +#define DAV_VERSION "1.1 dev" #endif /* VERSION_H */