From: senhuang42 Date: Tue, 25 Aug 2020 00:19:55 +0000 (-0400) Subject: Only ask to proceed if using --rm, otherwise just display warning. -f bypasses it... X-Git-Tag: v1.4.7~87^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dde97de6c43f0f6ca43c7ba382471f698ccb2873;p=thirdparty%2Fzstd.git Only ask to proceed if using --rm, otherwise just display warning. -f bypasses it all. More robust tests --- diff --git a/programs/fileio.c b/programs/fileio.c index bdf42543b..c4737372a 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -1677,28 +1677,26 @@ int FIO_compressMultipleFilenames(FIO_prefs_t* const prefs, /* init */ assert(outFileName != NULL || suffix != NULL); if (outFileName != NULL) { /* output into a single destination (stdout typically) */ - if (nbFiles > 1) { + if (nbFiles > 1 && !prefs->overwrite) { if (!strcmp (outFileName, stdoutmark)) { DISPLAY("zstd: WARNING: all input files will be processed and concatenated into stdout. "); } else { DISPLAY("zstd: WARNING: all input files will be processed and concatenated into a single output file: %s ", outFileName); } - if (prefs->removeSrcFile && !prefs->overwrite) { - DISPLAY("\nYou must specify -f as well in order to execute this command with --rm. Aborting..."); - return 1; - } - - DISPLAY("Proceed? (y/n): "); - { - int ch = getchar(); - if ((ch != 'y') && (ch != 'Y')) { - DISPLAY("zstd: aborting...\n"); - return 1; + if (prefs->removeSrcFile) { + DISPLAY("Proceed? (y/n): "); + { + int ch = getchar(); + if ((ch != 'y') && (ch != 'Y')) { + DISPLAY("zstd: aborting...\n"); + return 1; + } + /* flush the rest */ + while ((ch!=EOF) && (ch!='\n')) + ch = getchar(); } - /* flush the rest */ - while ((ch!=EOF) && (ch!='\n')) - ch = getchar(); } + DISPLAY("\n"); } ress.dstFile = FIO_openDstFile(prefs, NULL, outFileName); if (ress.dstFile == NULL) { /* could not open outFileName */ diff --git a/tests/playTests.sh b/tests/playTests.sh index b84cffd01..02fd7cdc1 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -349,24 +349,34 @@ rm tmp* println "\n===> compress multiple files" println hello > tmp1 println world > tmp2 -echo 'y' | zstd tmp1 tmp2 -o "$INTOVOID" -f # echo 'y' confirms the warning prompt -echo 'y' | zstd tmp1 tmp2 -c | zstd -t -echo 'y' | zstd tmp1 tmp2 -o tmp.zst +zstd tmp1 tmp2 -o "$INTOVOID" -f +zstd tmp1 tmp2 -c | zstd -t +zstd tmp1 tmp2 -o tmp.zst test ! -f tmp1.zst test ! -f tmp2.zst zstd tmp1 tmp2 zstd -t tmp1.zst tmp2.zst zstd -dc tmp1.zst tmp2.zst -echo 'y' | zstd tmp1.zst tmp2.zst -o "$INTOVOID" -f -echo 'y' | zstd -d tmp1.zst tmp2.zst -o tmp +zstd tmp1.zst tmp2.zst -o "$INTOVOID" -f +zstd -d tmp1.zst tmp2.zst -o tmp touch tmpexists -echo 'y' | zstd tmp1 tmp2 -f -o tmpexists -echo 'y' | zstd tmp1 tmp2 -o tmpexists && die "should have refused to overwrite" -zstd tmp1 tmp2 -o "$INTOVOID" --rm && die "should have refused to execute with --rm" +zstd tmp1 tmp2 -f -o tmpexists +zstd tmp1 tmp2 -o tmpexists && die "should have refused to overwrite" println gooder > tmp_rm1 println boi > tmp_rm2 -echo 'y' | zstd tmp_rm1 tmp_rm2 -o tmp_rm3.zst -f --rm -rm tmp_rm3.zst +println worldly > tmp_rm3 +echo 'y' | zstd tmp_rm1 tmp_rm2 -o tmp_rm3.zst --rm # tests the warning prompt for --rm with multiple inputs into once source +test ! -f tmp_rm1 +test ! -f tmp_rm2 +cp tmp_rm3.zst tmp_rm4.zst +echo 'Y' | zstd -d tmp_rm3.zst tmp_rm4.zst -o tmp_rm_out --rm +test ! -f tmp_rm3.zst +test ! -f tmp_rm4.zst +echo 'yes' | zstd tmp_rm_out tmp_rm3 -c --rm +test ! -f tmp_rm_out +test ! -f tmp_rm3 +println gooder > tmpexists1 +zstd tmpexists1 tmpexists -c --rm -f # Bug: PR #972 if [ "$?" -eq 139 ]; then @@ -388,7 +398,7 @@ test -f tmp1 test -f tmp2 test -f tmp3 println "compress tmp* into stdout > tmpall : " -echo 'y' | zstd -c tmp1 tmp2 tmp3 > tmpall +zstd -c tmp1 tmp2 tmp3 > tmpall test -f tmpall # should check size of tmpall (should be tmp1.zst + tmp2.zst + tmp3.zst) println "decompress tmpall* into stdout > tmpdec : " cp tmpall tmpall2 @@ -926,7 +936,7 @@ datagen | zstd -c | zstd -t println "\n===> golden files tests " zstd -t -r "$TESTDIR/golden-decompression" -echo 'y' | zstd -c -r "$TESTDIR/golden-compression" | zstd -t +zstd -c -r "$TESTDIR/golden-compression" | zstd -t zstd -D "$TESTDIR/golden-dictionaries/http-dict-missing-symbols" "$TESTDIR/golden-compression/http" -c | zstd -D "$TESTDIR/golden-dictionaries/http-dict-missing-symbols" -t