75 lines
2 KiB
Diff
75 lines
2 KiB
Diff
From 2f40ef66bea54be23a24f616cde021d8d7fc25be Mon Sep 17 00:00:00 2001
|
|
From: Andreas Gruenbacher <agruen@linbit.com>
|
|
Date: Sun, 10 Mar 2013 18:02:54 +0000
|
|
Subject: 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.
|
|
---
|
|
diff --git a/src/patch.c b/src/patch.c
|
|
index 0255fbb..010c14a 100644
|
|
--- a/src/patch.c
|
|
+++ b/src/patch.c
|
|
@@ -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;
|
|
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
|
index 5cea52d..cfc4f37 100644
|
|
--- a/tests/Makefile.am
|
|
+++ b/tests/Makefile.am
|
|
@@ -50,6 +50,7 @@ TESTS = \
|
|
reject-format \
|
|
remember-backup-files \
|
|
remember-reject-files \
|
|
+ remove-directories \
|
|
symlinks \
|
|
unmodified-files
|
|
|
|
diff --git a/tests/remove-directories b/tests/remove-directories
|
|
new file mode 100644
|
|
index 0000000..6acdc49
|
|
--- a/dev/null
|
|
+++ b/tests/remove-directories
|
|
@@ -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'
|
|
--
|
|
cgit v0.9.0.2
|