bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cp/mv: add -n option to not overwrite target (Ubuntu bug #229182)


From: Kamil Dudka
Subject: Re: cp/mv: add -n option to not overwrite target (Ubuntu bug #229182)
Date: Tue, 13 Jan 2009 18:48:25 +0100
User-agent: KMail/1.9.6 (enterprise 0.20071012.724442)

Hello Jim,

new version of patch is attached. Options --backup and --no-clobber are now 
mutually exclusive.


Kamil


On Thursday 08 January 2009 08:36:13 Jim Meyering wrote:
> Eric Blake <address@hidden> wrote:
> > According to Jim Meyering on 1/7/2009 12:27 PM:
> >>>> Anyone else have a preference?
> >>>
> >>> Now the option is --no-clobber in attached patch. Anyway the change is
> >>> trivial. No problem to change it if there will be a consensus
> >>> for --no-overwrite or something else.
> >>
> >> Thanks!  Almost done, I think.
> >> Unless anyone pipes up about the choice of long option name.
> >
> > I like --no-clobber, particularly since it is similar to the bash (and
> > tcsh) noclobber shell option.
> >
> >> What do you think about making cp/mv fail if -n and --backup are used
> >> together? Then there would be no risk of misunderstanding.
> >
> > Seems reasonable to me.
> >
> >> +++ b/NEWS
> >> @@ -4,6 +4,9 @@ GNU coreutils NEWS
> >
> > -*- outline -*-
> >
> >>  ** New features
> >>
> >> +  cp and mv accept a new option, --no-clobber (-n): silently refrain
> >> +  from overwriting any existing destination file
> >
> > Missing period.
>
> Thanks for the review.
>
> >> +                                 opened, remove it and try again (The
> >
> > -f option\n\
> >
> >> +                                 is redundant if the -n option is
> >> used.)\n\ +  -i, --interactive            prompt before overwrite  (The
> >> -i option\n\ +                                 overrides a previous -n
> >> option.)\n\ -H                           follow command-line symbolic
> >> links in
> >
> > SOURCE\n\
> >
> >>  "), stdout);
> >>        fputs (_("\
> >> @@ -176,6 +179,8 @@ Mandatory arguments to long options are mandatory
> >
> > for short options too.\n\
> >
> >>    -L, --dereference            always follow symbolic links in
> >> SOURCE\n\ "), stdout);
> >>        fputs (_("\
> >> +  -n, --no-clobber             do not overwrite an existing file  (The
> >
> > -n\n\
> >
> >> +                                 option overrides a previous -i
> >> option.)\n\
> >
> > The formatting is not very consistent here (are these full sentences,
> > with capitalization, periods, and two spaces, or just phrases?)
>
> It's a little bit unusual to insert text into the option list,
> but works for chown --help, so I suggest doing it here, too:
>
> diff --git a/src/mv.c b/src/mv.c
> index 635c4e0..d8ca50b 100644
> --- a/src/mv.c
> +++ b/src/mv.c
> @@ -1,5 +1,5 @@
>  /* mv -- move or rename files
> -   Copyright (C) 86, 89, 90, 91, 1995-2008 Free Software Foundation, Inc.
> +   Copyright (C) 86, 89, 90, 91, 1995-2009 Free Software Foundation, Inc.
>
>     This program is free software: you can redistribute it and/or modify
>     it under the terms of the GNU General Public License as published by
> @@ -295,13 +295,10 @@ Mandatory arguments to long options are mandatory for
> short options too.\n\ fputs (_("\
>        --backup[=CONTROL]       make a backup of each existing destination
> file\n\ -b                           like --backup but does not accept an
> argument\n\ -  -f, --force                  do not prompt before
> overwriting  (The -f option\n\ -                                 overrides
> any previous -i or -n options.)\n\ -  -i, --interactive            prompt
> before overwrite  (The -i option\n\ -                                
> overrides any previous -f or -n options.)\n\ -  -n, --no-replace           
>  do not overwrite an existing file  (The -n\n\ -                           
>      option overrides any previous -f or -i\n\ -                           
>      options.)\n\
> +  -f, --force                  do not prompt before overwriting\n\
> +  -i, --interactive            prompt before overwrite\n\
> +  -n, --no-replace             do not overwrite an existing file\n\
> +If you specify more than one of -i, -f, -n, only the final one takes
> effect.\n\ "), stdout);
>        fputs (_("\
>        --strip-trailing-slashes  remove any trailing slashes from each
> SOURCE\n\
>
> >> +  case 'n':
> >> +    x.interactive = I_ALWAYS_NO;
> >> +    break;
> >
> > Does this actually do the right thing, or does it only prevent overwrites
> > at spots where, without arguments, a prompt would be issued?  In other
> > words, is this particular implementation reinventing the same problems as
> > the deprecated --reply=no?
>
> Kamil's test additions appear to cover most cases.
> Once -n --backup evokes failure, it'd be nice to exercise that, too.
>
>
> _______________________________________________
> Bug-coreutils mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/bug-coreutils


Attachment: 0001-cp-mv-add-no-clobber-n-option-to-not-overwrite.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]