f70e892
diff -up patch-2.6.1/src/patch.c.backup-if-mismatch patch-2.6.1/src/patch.c
f70e892
--- patch-2.6.1/src/patch.c.backup-if-mismatch	2011-02-16 16:43:54.575850844 +0000
f70e892
+++ patch-2.6.1/src/patch.c	2011-02-16 16:44:56.907995789 +0000
f70e892
@@ -106,6 +106,7 @@ main (int argc, char **argv)
f70e892
     char numbuf[LINENUM_LENGTH_BOUND + 1];
f70e892
     bool written_to_rejname = false;
f70e892
     bool apply_empty_patch = false;
f70e892
+    bool posixly_correct_set;
f70e892
 
f70e892
     exit_failure = 2;
f70e892
     program_name = argv[0];
f70e892
@@ -125,7 +126,7 @@ main (int argc, char **argv)
f70e892
 			 i < 0 ? shell_quoting_style : (enum quoting_style) i);
f70e892
     }
f70e892
 
f70e892
-    posixly_correct = getenv ("POSIXLY_CORRECT") != 0;
f70e892
+    posixly_correct_set = posixly_correct = getenv ("POSIXLY_CORRECT") != 0;
f70e892
     backup_if_mismatch = ! posixly_correct;
f70e892
     patch_get = ((val = getenv ("PATCH_GET"))
f70e892
 		 ? numeric_string (val, true, "PATCH_GET value")
f70e892
@@ -151,6 +152,10 @@ main (int argc, char **argv)
f70e892
     Argv = argv;
f70e892
     get_some_switches();
f70e892
 
f70e892
+    /* Let --posix cause --no-backup-if-mismatch. */
f70e892
+    if (! posixly_correct_set && posixly_correct && backup_if_mismatch)
f70e892
+      backup_if_mismatch = false;
f70e892
+
f70e892
     if (make_backups | backup_if_mismatch)
f70e892
       backup_type = get_version (version_control_context, version_control);
f70e892