diff options
author | Rob Landley <rob@landley.net> | 2020-08-23 22:50:16 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2020-08-23 22:50:16 -0500 |
commit | dfd403c8d24e881d09703a580cb6a3c8d257adf3 (patch) | |
tree | 071992bbcf25ead23de2733627458c3244d51bc4 | |
parent | 152e32857a50d37eb05cceb901391a32a43eda10 (diff) | |
download | toybox-dfd403c8d24e881d09703a580cb6a3c8d257adf3.tar.gz |
Peter McConalogue pointed out that cp/mv -i prompt should default N.
Also, the failing mv test was because posix says to prompt when mv-ing over an
unwriteable file only when stdin is a tty (but -i prompts either way)
-rwxr-xr-x | tests/mv.test | 20 | ||||
-rw-r--r-- | toys/posix/cp.c | 4 |
2 files changed, 4 insertions, 20 deletions
diff --git a/tests/mv.test b/tests/mv.test index ed8922ac..3731bf6c 100755 --- a/tests/mv.test +++ b/tests/mv.test @@ -135,32 +135,16 @@ testing "no clobber (dest doesn't exist)" \ "yes\n" "" "" rm -f file* -# If there is stdin, it prompts. If no stdin, it moves anyway and file2 won't -# exist. touch file1 file2 chmod 400 file1 file2 -testing "mv over unwritable file: no stdin" \ +testing "over unwritable file only prompts when stdin is a terminal" \ "mv file2 file1 2>/dev/null && [ -e file1 -a ! -e file2 ] && echo yes" \ "yes\n" "" "" rm -f file* touch file1 file2 -chmod 400 file1 file2 -testing "mv over unwritable file: answered YES" \ - "mv file2 file1 2>/dev/null && [ -e file1 -a ! -e file2 ] && echo yes" \ - "yes\n" "" "y\n" -rm -f file* - -touch file1 file2 -chmod 400 file1 file2 -testing "mv over unwritable file: answered NO" \ - "mv file2 file1 2>/dev/null && [ -e file1 -a -e file2 ] && echo yes" \ - "yes\n" "" "n\n" -rm -f file* - -touch file1 file2 testing "interactive: no stdin" \ - "mv -i file2 file1 2>/dev/null && [ -e file1 -a ! -e file2 ] && echo yes" \ + "mv -i file2 file1 2>/dev/null && [ -e file1 -a -e file2 ] && echo yes" \ "yes\n" "" "" rm -f file* diff --git a/toys/posix/cp.c b/toys/posix/cp.c index fd893ef4..09e5701f 100644 --- a/toys/posix/cp.c +++ b/toys/posix/cp.c @@ -166,7 +166,7 @@ static int cp_node(struct dirtree *try) fprintf(stderr, "%s: overwrite '%s'", toys.which->name, s = dirtree_path(try, 0)); free(s); - if (!yesno(1)) return 0; + if (!yesno(0)) return 0; } } @@ -434,7 +434,7 @@ void cp_main(void) // _else_) but I don't care. if (exists && (FLAG(i) || !(st.st_mode & 0222))) { fprintf(stderr, "%s: overwrite '%s'", toys.which->name, TT.destname); - if (!yesno(1)) rc = 0; + if (!yesno(0)) rc = 0; else unlink(TT.destname); } // if -n and dest exists, don't try to rename() or copy |