# Copyright (C) 2009 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
require_diff
use_local_patch
use_tmpdir

# ==============================================================

timestamp1="2009-03-13 00:00:00 +0000"
timestamp2="2009-03-14 00:00:00 +0000"
cat > f.diff <<EOF
--- a/f	$timestamp1
+++ b/f	$timestamp2
@@ -1 +1 @@
-one
+two
@@ -2 +2 @@
-three
+four
EOF

cat > f <<EOF
one
three
EOF

touch -d "$timestamp1" f
chmod 644 f

touch f.orig
chmod 600 f.orig

check 'patch -p1 --backup --set-utc < f.diff' <<EOF
patching file f
EOF

check 'date -u "+%Y-%m-%d %H:%M:%S %z" -r f' <<EOF
$timestamp2
EOF

# POSIX allows a byte like '+' or '.' in position 11 to indicate the
# presence of extended permissions like ACLs.

check 'ls -l f.orig | sed "s,\(..........\).*,\1,"' <<EOF
-rw-r--r--
EOF

# ==============================================================

cat > f <<EOF
one
five
EOF

umask 022

check 'patch -p1 --backup --set-utc < f.diff || echo "Status: $?"' <<EOF
patching file f
Hunk #2 FAILED at 2.
Not setting time of file f (time mismatch)
1 out of 2 hunks FAILED -- saving rejects to file f.rej
Status: 1
EOF

check 'ls -l f.rej | sed "s,\(..........\).*,\1,"' <<EOF
-rw-r--r--
EOF

# ==============================================================

cat > f <<EOF
one
five
EOF

umask 027

check 'patch -p1 --backup --set-utc < f.diff || echo "Status: $?"' <<EOF
patching file f
Hunk #2 FAILED at 2.
Not setting time of file f (time mismatch)
1 out of 2 hunks FAILED -- saving rejects to file f.rej
Status: 1
EOF

check 'ls -l f.rej | sed "s,\(..........\).*,\1,"' <<EOF
-rw-r-----
EOF
