On Fri, Aug 31, 2018 at 09:42:08AM +0200, Martijn van Duren wrote:
> part 2
>
> OK?
ok stsp@
>
> martijn@
>
> diff --git cp.c cp.c
> index 321e82f..fbf924c 100644
> --- cp.c
> +++ cp.c
> @@ -395,9 +395,9 @@ copy(char *argv[], enum op type, int fts_options)
>
> switch (curr->fts_statp->st_mode & S_IFMT) {
> case S_IFLNK:
> - if (copy_link(curr, !fts_dne(curr)))
> + if ((cval = copy_link(curr, !fts_dne(curr))) == 1)
> rval = 1;
> - else if (vflag)
> + if (!cval && vflag)
> (void)fprintf(stdout, "%s -> %s\n",
> curr->fts_path, to.p_path);
> break;
> @@ -430,8 +430,8 @@ copy(char *argv[], enum op type, int fts_options)
> case S_IFBLK:
> case S_IFCHR:
> if (Rflag) {
> - if (copy_special(curr->fts_statp,
> - !fts_dne(curr)))
> + if ((cval = copy_special(curr->fts_statp,
> + !fts_dne(curr))) == 1)
> rval = 1;
> } else {
> cval = copy_file(curr, fts_dne(curr));
> @@ -445,7 +445,8 @@ copy(char *argv[], enum op type, int fts_options)
> break;
> case S_IFIFO:
> if (Rflag) {
> - if (copy_fifo(curr->fts_statp, !fts_dne(curr)))
> + if ((cval = copy_fifo(curr->fts_statp,
> + !fts_dne(curr))) == 1)
> rval = 1;
> } else {
> cval = copy_file(curr, fts_dne(curr));
> diff --git utils.c utils.c
> index 3a8d6b4..4a9219c 100644
> --- utils.c
> +++ utils.c
> @@ -199,6 +199,8 @@ copy_link(FTSENT *p, int exists)
> int len;
> char name[PATH_MAX];
>
> + if (exists && !copy_overwrite())
> + return (2);
> if ((len = readlink(p->fts_path, name, sizeof(name)-1)) == -1) {
> warn("readlink: %s", p->fts_path);
> return (1);
> @@ -218,6 +220,8 @@ copy_link(FTSENT *p, int exists)
> int
> copy_fifo(struct stat *from_stat, int exists)
> {
> + if (exists && !copy_overwrite())
> + return (2);
> if (exists && unlink(to.p_path)) {
> warn("unlink: %s", to.p_path);
> return (1);
> @@ -232,6 +236,8 @@ copy_fifo(struct stat *from_stat, int exists)
> int
> copy_special(struct stat *from_stat, int exists)
> {
> + if (exists && !copy_overwrite())
> + return (2);
> if (exists && unlink(to.p_path)) {
> warn("unlink: %s", to.p_path);
> return (1);
>