mirror of
https://https.git.savannah.gnu.org/git/patch.git
synced 2026-01-27 01:44:34 +00:00
Fix removing empty directories
Reported by Thomas Moschny <thomas.moschny@gmx.de>: src/patch.c (main): Temporary output files are created in the same directory as the output file. Make sure to remove them before removing empty files and their empty ancestor directories; else the directories won't be empty. tests/remove-directories: Add directory removal test case. tests/Makefile.am (TESTS): Add new test case.
This commit is contained in:
parent
082baa326a
commit
2f40ef66be
@ -646,8 +646,8 @@ main (int argc, char **argv)
|
||||
if (outstate.ofp && (ferror (outstate.ofp) || fclose (outstate.ofp) != 0))
|
||||
write_fatal ();
|
||||
output_files (NULL);
|
||||
delete_files ();
|
||||
cleanup ();
|
||||
delete_files ();
|
||||
if (somefailed)
|
||||
exit (1);
|
||||
return 0;
|
||||
|
||||
@ -50,6 +50,7 @@ TESTS = \
|
||||
reject-format \
|
||||
remember-backup-files \
|
||||
remember-reject-files \
|
||||
remove-directories \
|
||||
symlinks \
|
||||
unmodified-files
|
||||
|
||||
|
||||
29
tests/remove-directories
Normal file
29
tests/remove-directories
Normal file
@ -0,0 +1,29 @@
|
||||
# Copyright (C) 2013 Free Software Foundation, Inc.
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification,
|
||||
# in any medium, are permitted without royalty provided the copyright
|
||||
# notice and this notice are preserved.
|
||||
|
||||
. $srcdir/test-lib.sh
|
||||
|
||||
require_cat
|
||||
use_local_patch
|
||||
use_tmpdir
|
||||
|
||||
# ==============================================================
|
||||
# Remove empty parent diectories when removing a file
|
||||
|
||||
mkdir dir
|
||||
echo foobar > dir/file
|
||||
cat > apatch <<EOF
|
||||
--- dir/file
|
||||
+++ /dev/null
|
||||
@@ -1 +0,0 @@
|
||||
-foobar
|
||||
EOF
|
||||
|
||||
check 'patch -p0 -E < apatch' <<EOF
|
||||
patching file dir/file
|
||||
EOF
|
||||
|
||||
ncheck '! test -e dir'
|
||||
Loading…
x
Reference in New Issue
Block a user