Known problems: * The diffutils 2.7 documentation for `patch' is obsolete; this should be fixed in diffutils 2.8. Until then, see `patch --help' or `man patch'. Changes in version 2.3: * Unless the POSIXLY_CORRECT environment variable is set: - `patch' now distinguishes more accurately between empty and nonexistent files if the input is a context diff. A file is assumed to not exist if its context diff header suggests that it is empty, and if the header timestamp is within 24 hours of 1970-01-01 00:00:00 UTC. - Files that ``become nonexistent'' after patching are now removed. When a file is removed, any empty ancestor directories are also removed. * Files are now automatically gotten from RCS and SCCS if the -g or --get option is specified, or if the PATCH_GET environment variable is set and the -G or --no-get option is not specified. * If the PATCH_VERSION_CONTROL environment variable is set, it overrides the VERSION_CONTROL environment variable. * The method used to intuit names of files to be patched is now as follows: - Take the old and new names from the context header if present, and take the index name from the `Index:' line if present. Consider the file names to be in the order (old, new, index). - If some named files exist, use the first one if POSIXLY_CORRECT is set, the best one otherwise. - If no named files exist, some names are given, POSIXLY_CORRECT is not set, and the patch appears to create a file, then use the best name requiring the creation of the fewest directories. - Otherwise, ask the user for a file name. The ``best'' of a nonempty list of file names is defined as follows: - Take the names with the fewest path name components; of those, take the names with the shortest basename; of those, take the shortest names; of those, take the first name. * The new --binary option makes `patch' read and write files in binary mode. This option has no effect on POSIX-compliant hosts; it is useful only in on operating systems like DOS that distinguish between text and binary I/O. * The environment variables TMP and TEMP are consulted for the name of the temporary directory if TMPDIR is not set. * A port to MS-DOS and MS-Windows is available; see the `pc' directory. * Backup file names are no longer ever computed by uppercasing characters, since this isn't portable to systems with case-insensitive file names. Changes in version 2.2: * Arbitrary limits removed (e.g. line length, file name length). * On POSIX.1-compliant hosts, you can now patch binary files using the output of GNU `diff -a'. * New options: --dry-run --help --verbose -i FILE or --input=FILE -y PREF or --basename-prefix=PREF * patch is now quieter by default; use --verbose for the old chatty behavior. * Patch now complies better with POSIX.2 if your host complies with POSIX.1. Therefore: - By default, no backups are made. Set the VERSION_CONTROL environment variable to "existing" if you prefer patch's traditional behavior. - The simple backup file name for F defaults to F.orig regardless of whether the file system supports long file names, and F~ is used only if F.orig is too long for that particular file. - Similarly for the reject file names F.rej and F#. Also: - The pseudo-option `+' has been withdrawn. - -b is equivalent to --version-control=simple; `-z SUFF' has the meaning that `-b SUFF' used to. - Names of files to be patched are taken first from *** line and then from --- line of context diffs; then from Index: line; /dev/tty is consulted if none of the above files exist. However, if the patch appears to create a file, the file does not have to exist: instead, the first name with the longest existing directory prefix is taken. - Exit status 0 means success, 1 means hunks were rejected, 2 means trouble. - `-l' ignores changes only in spaces and tabs, not in other white space. - If no `-p' option is given, `-pINFINITY' is assumed, instead of trying to guess the proper value. - `-p' now requires an operand; use `-p 0' to get the effect of the old plain `-p' option. - `-p' treats two or more adjacent slashes as if it were one slash. - The TERM signal is caught. - New option `-i F' reads patch from F instead of stdin. * The `patch' options and build procedure conform to current GNU standards. For example, the `--version' option now outputs copyright information. * When the patch is creating a file, but a nonempty file of that name already exists, `patch' now asks for confirmation before patching. * RCS is used only if the version control method is `existing' and there is already an RCS file. Similarly for SCCS. * Copyright notices have been clarified. Every file in this version of `patch' can be distributed under the GNU General Public License. See README for details. Changes in version 2.1: * A few more portability bugs have been fixed. The version number has been changed from 2.0.12g11 to 2.1, because the name `patch-2.0.12g10' was too long for traditional Unix file systems. Versions 2.0.12g9 through 2.0.12g11 fix various portability bugs. Changes in version 2.0.12g8: * Start of the 12g series, with a GNU-style configure script and long-named options. * Added the -t --batch option, similar to -f. * Improved detection of files that are locked under RCS or SCCS. * Reinstate the -E option to remove output files that are empty after being patched. * Print the system error message when system calls fail. * Fixed various bugs and portability problems.