--- patch.1 | 70 ++++++++++++++++++++++++++++++++--------------------------------- patch.c | 9 ++++----- 2 files changed, 38 insertions(+), 41 deletions(-) diff --git a/patch.1 b/patch.1 index df2bf63..ba1cb35 100644 --- a/patch.1 +++ b/patch.1 _AT_@ -22,37 +22,34 @@ .Sh DESCRIPTION .Nm applies patches to files from difference listings -produces by +produced by .Xr diff 1 . .Pp .Nm will skip any garbage unless the .Ar patchfile consists entirely of garbage. -Garbage is any data that does not conform to any -of the supported difference listings formats. +Garbage is any data that does not conform to +the supported difference listing formats. .Nm -supprts the all difference listings formats +supports all difference listing formats specified in .Xr diff 1p -except +except for the .Fl f flag in .Xr diff 1p . .Pp .Nm -shall, unless the -.Ar file -is specify, figure out from mentions of filenames -in the -.Ar patchfile -which files to patch. As an extension to the +patch shall figure out which files to patch from the +mentions of filenames in the patch, unless the files +are specified explicitly. As an extension to the standard, this implementation of .Nm can determine the filename by looking at the \fIdiff\fP-lines that are produced by .Xr diff 1 -when comparing directories. If however, the +when comparing directories. However, if the .Ar file is specified, all patches in the .Ar patchfile _AT_@ -61,7 +58,7 @@ shall be applied to that .Sh OPTIONS .Bl -tag -width Ds .It Fl b -Back up files before the first time they a patch +Back up files before the first time that a patch is applied to them. The backups will have the suffix \fI.orig\fP. .It Fl c _AT_@ -105,7 +102,7 @@ can be \fI1\fP or \fI0\fP to use (swap those lines if .Ar define -is \fI0\fP) instead of +is \fI0\fP) instead of .Bd -literal -offset left #ifdef \fIdefine\fP #ifndef \fIdefine\fP _AT_@ -128,12 +125,13 @@ and are swapped. .Nm -does not guarantee that a patch C source code file -will be at least a syntactically correct after patching -as before patching. Despite this being implied by -the standard. The syntactically correctness can be -broken when edits are made on lines splitted using -line continuation, made in comments, or span +does not guarantee that a patched C source +code file will be at least as syntactically +correct after patching as it was before, +despite this being implied by the standard. +The syntactic correctness can be broken +when edits are made on lines split using line +continuation, made in comments, or spanning CPP conditional directives. .It Fl e Treat anything that is not conforming to the _AT_@ -145,13 +143,13 @@ Read the .Ar patchfile instead of standard output. .It Fl l -Any sequnce of whitespace, of at least length 1, -in the input file file shall match any sequnce -of whitespace, of at least length 1 in the +Any sequence of whitespace of at least length 1 +in the input file shall match any sequence +of whitespace of at least length 1 in the difference script when testing if lines match. -Additionally any whitespace at the beginning of +Additionally, any whitespace at the beginning of a line or at the end of a line is ignored when -matching lines, the former case is an extension +matching lines. The former case is an extension of the standard. .It Fl n Treat anything that is not conforming to the _AT_@ -160,7 +158,7 @@ normal format as garbage. Ignore already applied hunks. POSIX specifies that already applied patches shall be ignored if this flag is used. A hunk is a contiguous -portion of a patch. A patch is a signal +portion of a patch. A patch is a single file-comparison output from .Xr diff 1 . .It Fl o Ar outfile _AT_@ -169,13 +167,13 @@ Store resulting files from patches to instead of to the patched file itself. If the patchfile patches multiple files, the results are concatenated. If a patchfile -patches a file multiple times. Intermediary +patches a file multiple times, intermediary results are also stored. As an extension to the standard, you may use non-regular files such as \fI/dev/stdout\fP and \fI/dev/null\fP. \fI/dev/null\fP can be -used to preform a dryrun. +used to perform a dryrun. .It Fl p Ar num Remove the first .Ar num _AT_@ -183,8 +181,8 @@ components from filenames that appear in the patchfile. Any leading / is regarded as the first component. If .Ar num -is 0, the entire filename is used. If this flag -is not used, only the basename is used. +is 0, the entire filename is used. Without +this flag only basename is used. .It Fl r Ar rejectfile Save rejected hunks to .Ar rejectfile _AT_@ -210,10 +208,10 @@ default even for unified context patches. .El .Sh NOTES Files that become empty as a result of a patch -are not remove. +are not removed. .Pp Symbolic links are treated as regular files, -provided that they lead to regular files. +provided that they link to regular files. .Pp Timestamps that appear in diff headers are not applied. _AT_@ -222,18 +220,18 @@ Encapsulated patches, and patches with CRLF line breaks \(em or any other string \(em rather than LF line breaks are not supported. .Pp -In this implementation, when the user is promted, +In this implementation, when the user is prompted, the message is printed to \fI/dev/tty\fP, rather than \fI/dev/stdout\fP despite POSIX's mandate. This is to make it possible to use \fI/dev/stdout\fP as the output file. .Pp Unportable characters in filenames are supported -by parsing as C string literals. +by parsing them as C string literals. .Pp In this implementation, the .Fl D -flag can be used with \fIed\fP-script. +flag can be used with \fIed\fP-scripts. .Sh SEE ALSO .Xr diff 1 , .Xr ed 1 _AT_@ -242,7 +240,7 @@ The .Nm utility is compliant with the .St -p1003.1-2013 -specification except from some above noted exceptions. +specification except for the exceptions noted above. .Pp The .Op Fl fU diff --git a/patch.c b/patch.c index 9c44a7d..c118dc9 100644 --- a/patch.c +++ b/patch.c _AT_@ -21,7 +21,8 @@ * (we interpret that trailing whitespace should be ignored.) * - Files in /dev/ are not considered as existing files. This is * checked before -p and -d are applied. - * + * - SCCS is dead and is therefore not supported. + * * I have choosen not to support git diff-files. * CVE-2010-4651 is recognised as user error, not as a security issue. */ _AT_@ -292,7 +293,7 @@ parse_diff_line(char *str, char **old, char **new) /* * We will just assume that the two last arguments in `str` are sanely * formatted. All other ways to parse it will surely result in utter madness. - * + * * The POSIX standard does not actually require or suggest supporting this, * but it is required to figure out the filename automatically for some diff * outputs since diff(1p) does not output the "Index:" string... _AT_@ -958,8 +959,6 @@ parse_patchfile(struct patchset *ps, struct line *lines) if (Rflag && format == ED) enprintf(FAILURE, "-R cannot be used with ed scripts.\n"); - - /* TODO Step 4 of "Filename Determination" under EXTENDED DESCRIPTION in patch(1p). */ } if (only_garbage) _AT_@ -1549,7 +1548,7 @@ parse_ed_script(struct patch *patch, struct file_data *file) break; case 'a': case 'i': - count = 0; + count = 0; list_addition: for (add = 0; !lineeq(ed->lines[i + add], "."); add++); hunk->lines = enrealloc(FAILURE, hunk->lines, -- 2.11.1Received on Mon Sep 11 2017 - 21:08:09 CEST
This archive was generated by hypermail 2.3.0 : Mon Sep 11 2017 - 21:12:41 CEST