summaryrefslogtreecommitdiffstats
path: root/source/a/patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/patch')
-rw-r--r--source/a/patch/patch.281537bcd92515ae3b9f154acd579ce97260f99b.diff78
-rw-r--r--source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff88
-rwxr-xr-xsource/a/patch/patch.SlackBuild12
3 files changed, 174 insertions, 4 deletions
diff --git a/source/a/patch/patch.281537bcd92515ae3b9f154acd579ce97260f99b.diff b/source/a/patch/patch.281537bcd92515ae3b9f154acd579ce97260f99b.diff
new file mode 100644
index 000000000..b882b725c
--- /dev/null
+++ b/source/a/patch/patch.281537bcd92515ae3b9f154acd579ce97260f99b.diff
@@ -0,0 +1,78 @@
+From 281537bcd92515ae3b9f154acd579ce97260f99b Mon Sep 17 00:00:00 2001
+From: Andreas Gruenbacher <agruen@linbit.com>
+Date: Thu, 13 Sep 2012 14:13:08 +0000
+Subject: In a git-style diff, make sure not to unlink the original by accident
+
+* src/patch.c (main): Fail if a file is not empty as expected.
+(output_files): In a git-style diff, make sure not to unlink the original when
+making a backup of an unmodified file.
+* tests/create-delete: Fix failed-file-deletion test and add
+successful-file-deletion test.
+---
+diff --git a/src/patch.c b/src/patch.c
+index 1c6fb4b..ce81bbe 100644
+--- a/src/patch.c
++++ b/src/patch.c
+@@ -508,6 +508,7 @@ main (int argc, char **argv)
+ && ! (merge && somefailed))
+ {
+ mismatch = true;
++ somefailed = true;
+ if (verbosity != SILENT)
+ say ("File %s is not empty after patch, as expected\n",
+ quotearg (outname));
+@@ -1865,7 +1866,7 @@ output_files (struct stat const *st)
+ output_file_now (file_to_output->from, &from_needs_removal,
+ from_st, file_to_output->to,
+ file_to_output->mode, file_to_output->backup);
+- if (from_needs_removal)
++ if (file_to_output->to && from_needs_removal)
+ unlink (file_to_output->from);
+
+ if (st && st->st_dev == from_st->st_dev && st->st_ino == from_st->st_ino)
+diff --git a/tests/create-delete b/tests/create-delete
+index 9a6e1bb..7eed11f 100644
+--- a/tests/create-delete
++++ b/tests/create-delete
+@@ -176,12 +176,37 @@ EOF
+ echo data > target
+ cat > p.diff <<EOF
+ diff --git a/target b/target
+-index 1..0
++deleted file mode 100644
++index 1269488..0000000
+ EOF
+
+ check 'patch -p1 -b < p.diff || echo status: $?' <<EOF
+ patching file target
+ File target is not empty after patch, as expected
++status: 1
++EOF
++
++check 'cat target' <<EOF
++data
++EOF
++
++# Patch creates a backup file even when the original file remains unchanged:
++check 'cat target.orig' <<EOF
++data
++EOF
++
++cat > p.diff <<EOF
++diff --git a/target b/target
++deleted file mode 100644
++index 1269488..0000000
++--- a/target
+++++ /dev/null
++@@ -1 +0,0 @@
++-data
++EOF
++
++check 'patch -p1 -b -f < p.diff || echo status: $?' <<EOF
++patching file target
+ EOF
+
+ ncheck 'test ! -e target'
+--
+cgit v0.9.0.2
+
diff --git a/source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff b/source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff
new file mode 100644
index 000000000..14c342a51
--- /dev/null
+++ b/source/a/patch/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff
@@ -0,0 +1,88 @@
+From 99f2638763845d8173a0c9f9209ac2b4be947165 Mon Sep 17 00:00:00 2001
+From: Andreas Gruenbacher <agruen@linbit.com>
+Date: Tue, 18 Sep 2012 10:51:17 +0000
+Subject: Fix file truncation when switching from git diff to non-git diff
+
+* src/patch.c (main): Output queued output files only when switching from a git
+diff to a non-git diff. This can modify the input file, so make sure to
+stat() it again.
+* tests/concat-git-diff: Add test case growing a file with a git diff and then
+with a non-git diff; without this fix; the result would be truncated.
+---
+diff --git a/src/patch.c b/src/patch.c
+index 0bce8fb..0b0fdd4 100644
+--- a/src/patch.c
++++ b/src/patch.c
+@@ -196,8 +196,12 @@ main (int argc, char **argv)
+
+ if (have_git_diff != pch_git_diff ())
+ {
++ if (have_git_diff)
++ {
++ output_files (NULL);
++ inerrno = -1;
++ }
+ have_git_diff = ! have_git_diff;
+- output_files (NULL);
+ }
+
+ if (TMPREJNAME_needs_removal)
+diff --git a/tests/concat-git-diff b/tests/concat-git-diff
+index 927eb5a..c78da53 100644
+--- a/tests/concat-git-diff
++++ b/tests/concat-git-diff
+@@ -56,11 +56,7 @@ check 'cat f' <<EOF
+ three
+ EOF
+
+-cat > f <<EOF
+-1
+-2
+-3
+-EOF
++seq 3 > f
+
+ cat > concat2.diff <<EOF
+ diff --git a/f b/f
+@@ -95,3 +91,38 @@ a
+ 3
+ b
+ EOF
++
++seq 3 > f
++
++cat > concat3.diff <<EOF
++diff --git a/f b/f
++index 01e79c3..0d0b976 100644
++--- a/f
+++++ b/f
++@@ -1,3 +1,4 @@
++ 1
++ 2
++ 3
+++b
++diff a/f b/f
++--- a/f
+++++ b/f
++@@ -1,3 +1,4 @@
+++a
++ 1
++ 2
++ 3
++EOF
++
++check 'patch -p1 < concat3.diff || echo "Status: $?"' <<EOF
++patching file f
++patching file f
++EOF
++
++check 'cat f' <<EOF
++a
++1
++2
++3
++b
++EOF
+--
+cgit v0.9.0.2
+
diff --git a/source/a/patch/patch.SlackBuild b/source/a/patch/patch.SlackBuild
index 1175620b6..1607b4059 100755
--- a/source/a/patch/patch.SlackBuild
+++ b/source/a/patch/patch.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2005-2009, 2010 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2005-2009, 2010, 2012 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,8 +20,8 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-VERSION=2.6.1
-BUILD=${BUILD:-1}
+VERSION=2.7
+BUILD=${BUILD:-2}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -53,7 +53,11 @@ fi
cd $TMP
rm -rf patch-${VERSION}
tar xvf $CWD/patch-${VERSION}.tar.xz || exit 1
-cd patch-${VERSION}
+cd patch-${VERSION} || exit 1
+
+zcat $CWD/patch.281537bcd92515ae3b9f154acd579ce97260f99b.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/patch.99f2638763845d8173a0c9f9209ac2b4be947165.diff.gz | patch -p1 --verbose || exit 1
+
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \