1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
# Copyright (C) 2009, 2011-2012 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.
# Patching read-only files
. $srcdir/test-lib.sh
require cat
use_local_patch
use_tmpdir
# --------------------------------------------------------------
: > read-only
chmod a-w read-only
if ( : 2> /dev/null > read-only ); then
echo "Files with read-only permissions are writable" \
"(probably running as superuser)" >&2
exit 77
fi
rm -f read-only
# ==============================================================
cat > f.diff <<EOF
--- f.orig
+++ f
@@ -1 +1 @@
-one
+two
--- f.orig
+++ f
@@ -1 +1 @@
-two
+three
EOF
echo one > f
chmod a=r f
check 'patch -p0 --read-only=fail < f.diff || echo "Status: $?"' <<EOF
File f is read-only; refusing to patch
1 out of 1 hunk ignored -- saving rejects to file f.rej
File f is read-only; refusing to patch
1 out of 1 hunk ignored -- saving rejects to file f.rej
Status: 1
EOF
rm -f f.rej
check 'patch -f -p0 --read-only=warn < f.diff || echo "Status: $?"' <<EOF
File f is read-only; trying to patch anyway
patching file f
File f is read-only; trying to patch anyway
patching file f
EOF
rm -f f
echo one > f
chmod a=r f
check 'patch -f -p0 --read-only=ignore < f.diff || echo "Status: $?"' <<EOF
patching file f
patching file f
EOF
|