summaryrefslogtreecommitdiff
path: root/devel/nbpatch
diff options
context:
space:
mode:
authorjoerg <joerg@pkgsrc.org>2009-04-29 18:03:47 +0000
committerjoerg <joerg@pkgsrc.org>2009-04-29 18:03:47 +0000
commit712f2b37660d41d2e029bf6188675be931138f18 (patch)
tree0d57844808ba2dd04848376d947a9b5bf8938141 /devel/nbpatch
parent39eb9ddefb496438b7845946a421b68a1e087acb (diff)
downloadpkgsrc-712f2b37660d41d2e029bf6188675be931138f18.tar.gz
Add cat page for the sake of platforms without usable nroff installed.
Diffstat (limited to 'devel/nbpatch')
-rw-r--r--devel/nbpatch/files/nbpatch.cat1432
1 files changed, 432 insertions, 0 deletions
diff --git a/devel/nbpatch/files/nbpatch.cat1 b/devel/nbpatch/files/nbpatch.cat1
new file mode 100644
index 00000000000..418e2ddb483
--- /dev/null
+++ b/devel/nbpatch/files/nbpatch.cat1
@@ -0,0 +1,432 @@
+PATCH(1) NetBSD General Commands Manual PATCH(1)
+
+NNAAMMEE
+ ppaattcchh -- apply a diff file to an original
+
+SSYYNNOOPPSSIISS
+ ppaattcchh [--bbCCccEEeeffllNNnnRRssttuuvv] [--BB _b_a_c_k_u_p_-_p_r_e_f_i_x] [--DD _s_y_m_b_o_l] [--dd _d_i_r_e_c_t_o_r_y]
+ [--FF _m_a_x_-_f_u_z_z] [--ii _p_a_t_c_h_f_i_l_e] [--oo _o_u_t_-_f_i_l_e] [--pp _s_t_r_i_p_-_c_o_u_n_t]
+ [--rr _r_e_j_-_n_a_m_e] [--VV tt | nniill | nneevveerr] [--xx _n_u_m_b_e_r] [--zz _b_a_c_k_u_p_-_e_x_t]
+ [----ppoossiixx] [_o_r_i_g_f_i_l_e [_p_a_t_c_h_f_i_l_e]]
+ ppaattcchh <_p_a_t_c_h_f_i_l_e
+
+DDEESSCCRRIIPPTTIIOONN
+ ppaattcchh will take a patch file containing any of the four forms of differ-
+ ence listing produced by the diff(1) program and apply those differences
+ to an original file, producing a patched version. If _p_a_t_c_h_f_i_l_e is omit-
+ ted, or is a hyphen, the patch will be read from the standard input.
+
+ ppaattcchh will attempt to determine the type of the diff listing, unless
+ over-ruled by a --cc, --ee, --nn, or --uu option. Context diffs (old-style, new-
+ style, and unified) and normal diffs are applied directly by the ppaattcchh
+ program itself, whereas ed diffs are simply fed to the ed(1) editor via a
+ pipe.
+
+ If the _p_a_t_c_h_f_i_l_e contains more than one patch, ppaattcchh will try to apply
+ each of them as if they came from separate patch files. This means,
+ among other things, that it is assumed that the name of the file to patch
+ must be determined for each diff listing, and that the garbage before
+ each diff listing will be examined for interesting things such as file
+ names and revision level (see the section on _F_i_l_e_n_a_m_e _D_e_t_e_r_m_i_n_a_t_i_o_n
+ below).
+
+ The options are as follows:
+
+ --BB _b_a_c_k_u_p_-_p_r_e_f_i_x, ----pprreeffiixx _b_a_c_k_u_p_-_p_r_e_f_i_x
+ Causes the next argument to be interpreted as a prefix to the
+ backup file name. If this argument is specified, any argument to
+ --zz will be ignored.
+
+ --bb, ----bbaacckkuupp
+ Save a backup copy of the file before it is modified. By default
+ the original file is saved with a backup extension of ".orig"
+ unless the file already has a numbered backup, in which case a
+ numbered backup is made. This is equivalent to specifying "--VV
+ eexxiissttiinngg". This option is currently the default, unless ----ppoossiixx
+ is specified.
+
+ --CC, ----cchheecckk
+ Checks that the patch would apply cleanly, but does not modify
+ anything.
+
+ --cc, ----ccoonntteexxtt
+ Forces ppaattcchh to interpret the patch file as a context diff.
+
+ --DD _s_y_m_b_o_l, ----iiffddeeff _s_y_m_b_o_l
+ Causes ppaattcchh to use the "#ifdef...#endif" construct to mark
+ changes. The argument following will be used as the differenti-
+ ating symbol. Note that, unlike the C compiler, there must be a
+ space between the --DD and the argument.
+
+ --dd _d_i_r_e_c_t_o_r_y, ----ddiirreeccttoorryy _d_i_r_e_c_t_o_r_y
+ Causes ppaattcchh to interpret the next argument as a directory, and
+ change the working directory to it before doing anything else.
+
+ --EE, ----rreemmoovvee--eemmppttyy--ffiilleess
+ Causes ppaattcchh to remove output files that are empty after the
+ patches have been applied. This option is useful when applying
+ patches that create or remove files.
+
+ --ee, ----eedd
+ Forces ppaattcchh to interpret the patch file as an ed(1) script.
+
+ --FF _m_a_x_-_f_u_z_z, ----ffuuzzzz _m_a_x_-_f_u_z_z
+ Sets the maximum fuzz factor. This option only applies to con-
+ text diffs, and causes ppaattcchh to ignore up to that many lines in
+ looking for places to install a hunk. Note that a larger fuzz
+ factor increases the odds of a faulty patch. The default fuzz
+ factor is 2, and it may not be set to more than the number of
+ lines of context in the context diff, ordinarily 3.
+
+ --ff, ----ffoorrccee
+ Forces ppaattcchh to assume that the user knows exactly what he or she
+ is doing, and to not ask any questions. It assumes the follow-
+ ing: skip patches for which a file to patch can't be found; patch
+ files even though they have the wrong version for the "Prereq:"
+ line in the patch; and assume that patches are not reversed even
+ if they look like they are. This option does not suppress com-
+ mentary; use --ss for that.
+
+ --ii _p_a_t_c_h_f_i_l_e, ----iinnppuutt _p_a_t_c_h_f_i_l_e
+ Causes the next argument to be interpreted as the input file name
+ (i.e. a patchfile). This option may be specified multiple times.
+
+ --ll, ----iiggnnoorree--wwhhiitteessppaaccee
+ Causes the pattern matching to be done loosely, in case the tabs
+ and spaces have been munged in your input file. Any sequence of
+ whitespace in the pattern line will match any sequence in the
+ input file. Normal characters must still match exactly. Each
+ line of the context must still match a line in the input file.
+
+ --NN, ----ffoorrwwaarrdd
+ Causes ppaattcchh to ignore patches that it thinks are reversed or
+ already applied. See also --RR.
+
+ --nn, ----nnoorrmmaall
+ Forces ppaattcchh to interpret the patch file as a normal diff.
+
+ --oo _o_u_t_-_f_i_l_e, ----oouuttppuutt _o_u_t_-_f_i_l_e
+ Causes the next argument to be interpreted as the output file
+ name.
+
+ --pp _s_t_r_i_p_-_c_o_u_n_t, ----ssttrriipp _s_t_r_i_p_-_c_o_u_n_t
+ Sets the pathname strip count, which controls how pathnames found
+ in the patch file are treated, in case you keep your files in a
+ different directory than the person who sent out the patch. The
+ strip count specifies how many slashes are to be stripped from
+ the front of the pathname. (Any intervening directory names also
+ go away.) For example, supposing the file name in the patch file
+ was _/_u_/_h_o_w_a_r_d_/_s_r_c_/_b_l_u_r_f_l_/_b_l_u_r_f_l_._c:
+
+ Setting --pp_0 gives the entire pathname unmodified.
+
+ --pp_1 gives
+
+ _u_/_h_o_w_a_r_d_/_s_r_c_/_b_l_u_r_f_l_/_b_l_u_r_f_l_._c
+
+ without the leading slash.
+
+ --pp_4 gives
+
+ _b_l_u_r_f_l_/_b_l_u_r_f_l_._c
+
+ Not specifying --pp at all just gives you _b_l_u_r_f_l_._c, unless all of
+ the directories in the leading path (_u_/_h_o_w_a_r_d_/_s_r_c_/_b_l_u_r_f_l) exist
+ and that path is relative, in which case you get the entire path-
+ name unmodified. Whatever you end up with is looked for either
+ in the current directory, or the directory specified by the --dd
+ option.
+
+ --RR, ----rreevveerrssee
+ Tells ppaattcchh that this patch was created with the old and new
+ files swapped. (Yes, I'm afraid that does happen occasionally,
+ human nature being what it is.) ppaattcchh will attempt to swap each
+ hunk around before applying it. Rejects will come out in the
+ swapped format. The --RR option will not work with ed diff scripts
+ because there is too little information to reconstruct the
+ reverse operation.
+
+ If the first hunk of a patch fails, ppaattcchh will reverse the hunk
+ to see if it can be applied that way. If it can, you will be
+ asked if you want to have the --RR option set. If it can't, the
+ patch will continue to be applied normally. (Note: this method
+ cannot detect a reversed patch if it is a normal diff and if the
+ first command is an append (i.e. it should have been a delete)
+ since appends always succeed, due to the fact that a null context
+ will match anywhere. Luckily, most patches add or change lines
+ rather than delete them, so most reversed normal diffs will begin
+ with a delete, which will fail, triggering the heuristic.)
+
+ --rr _r_e_j_-_n_a_m_e, ----rreejjeecctt--ffiillee _r_e_j_-_n_a_m_e
+ Causes the next argument to be interpreted as the reject file
+ name.
+
+ --ss, ----qquuiieett, ----ssiilleenntt
+ Makes ppaattcchh do its work silently, unless an error occurs.
+
+ --tt, ----bbaattcchh
+ Similar to --ff, in that it suppresses questions, but makes some
+ different assumptions: skip patches for which a file to patch
+ can't be found (the same as --ff); skip patches for which the file
+ has the wrong version for the "Prereq:" line in the patch; and
+ assume that patches are reversed if they look like they are.
+
+ --uu, ----uunniiffiieedd
+ Forces ppaattcchh to interpret the patch file as a unified context
+ diff (a unidiff).
+
+ --VV tt | nniill | nneevveerr, ----vveerrssiioonn--ccoonnttrrooll tt | nniill | nneevveerr
+ Causes the next argument to be interpreted as a method for creat-
+ ing backup file names. The type of backups made can also be
+ given in the PATCH_VERSION_CONTROL or VERSION_CONTROL environment
+ variables, which are overridden by this option. The --BB option
+ overrides this option, causing the prefix to always be used for
+ making backup file names. The values of the
+ PATCH_VERSION_CONTROL and VERSION_CONTROL environment variables
+ and the argument to the --VV option are like the GNU Emacs
+ ``version-control'' variable; they also recognize synonyms that
+ are more descriptive. The valid values are (unique abbreviations
+ are accepted):
+
+ tt, nnuummbbeerreedd
+ Always make numbered backups.
+
+ nniill, eexxiissttiinngg
+ Make numbered backups of files that already have
+ them, simple backups of the others.
+
+ nneevveerr, ssiimmppllee
+ Always make simple backups.
+
+ --vv, ----vveerrssiioonn
+ Causes ppaattcchh to print out its revision header and patch level.
+
+ --xx _n_u_m_b_e_r, ----ddeebbuugg _n_u_m_b_e_r
+ Sets internal debugging flags, and is of interest only to ppaattcchh
+ patchers.
+
+ --zz _b_a_c_k_u_p_-_e_x_t, ----ssuuffffiixx _b_a_c_k_u_p_-_e_x_t
+ Causes the next argument to be interpreted as the backup exten-
+ sion, to be used in place of ".orig".
+
+ ----ppoossiixx
+ Enables strict IEEE Std 1003.1-2004 (``POSIX.1'') conformance,
+ specifically:
+
+ 1. Backup files are not created unless the --bb option is speci-
+ fied.
+
+ 2. If unspecified, the file name used is the first of the old,
+ new and index files that exists.
+
+ PPaattcchh AApppplliiccaattiioonn
+ ppaattcchh will try to skip any leading garbage, apply the diff, and then skip
+ any trailing garbage. Thus you could feed an article or message contain-
+ ing a diff listing to ppaattcchh, and it should work. If the entire diff is
+ indented by a consistent amount, this will be taken into account.
+
+ With context diffs, and to a lesser extent with normal diffs, ppaattcchh can
+ detect when the line numbers mentioned in the patch are incorrect, and
+ will attempt to find the correct place to apply each hunk of the patch.
+ As a first guess, it takes the line number mentioned for the hunk, plus
+ or minus any offset used in applying the previous hunk. If that is not
+ the correct place, ppaattcchh will scan both forwards and backwards for a set
+ of lines matching the context given in the hunk. First ppaattcchh looks for a
+ place where all lines of the context match. If no such place is found,
+ and it's a context diff, and the maximum fuzz factor is set to 1 or more,
+ then another scan takes place ignoring the first and last line of con-
+ text. If that fails, and the maximum fuzz factor is set to 2 or more,
+ the first two and last two lines of context are ignored, and another scan
+ is made. (The default maximum fuzz factor is 2.)
+
+ If ppaattcchh cannot find a place to install that hunk of the patch, it will
+ put the hunk out to a reject file, which normally is the name of the out-
+ put file plus ".rej". (Note that the rejected hunk will come out in con-
+ text diff form whether the input patch was a context diff or a normal
+ diff. If the input was a normal diff, many of the contexts will simply
+ be null.) The line numbers on the hunks in the reject file may be dif-
+ ferent than in the patch file: they reflect the approximate location
+ patch thinks the failed hunks belong in the new file rather than the old
+ one.
+
+ As each hunk is completed, you will be told whether the hunk succeeded or
+ failed, and which line (in the new file) ppaattcchh thought the hunk should go
+ on. If this is different from the line number specified in the diff, you
+ will be told the offset. A single large offset MAY be an indication that
+ a hunk was installed in the wrong place. You will also be told if a fuzz
+ factor was used to make the match, in which case you should also be
+ slightly suspicious.
+
+ FFiilleennaammee DDeetteerrmmiinnaattiioonn
+ If no original file is specified on the command line, ppaattcchh will try to
+ figure out from the leading garbage what the name of the file to edit is.
+ When checking a prospective file name, pathname components are stripped
+ as specified by the --pp option and the file's existence and writability
+ are checked relative to the current working directory (or the directory
+ specified by the --dd option).
+
+ If the diff is a context or unified diff, ppaattcchh is able to determine the
+ old and new file names from the diff header. For context diffs, the
+ ``old'' file is specified in the line beginning with "***" and the
+ ``new'' file is specified in the line beginning with "---". For a uni-
+ fied diff, the ``old'' file is specified in the line beginning with "---"
+ and the ``new'' file is specified in the line beginning with "+++". If
+ there is an "Index:" line in the leading garbage (regardless of the diff
+ type), ppaattcchh will use the file name from that line as the ``index'' file.
+
+ ppaattcchh will choose the file name by performing the following steps, with
+ the first match used:
+
+ 1. If ppaattcchh is operating in strict IEEE Std 1003.1-2004 (``POSIX.1'')
+ mode, the first of the ``old'', ``new'' and ``index'' file names
+ that exist is used. Otherwise, ppaattcchh will examine either the
+ ``old'' and ``new'' file names or, for a non-context diff, the
+ ``index'' file name, and choose the file name with the fewest path
+ components, the shortest basename, and the shortest total file name
+ length (in that order).
+
+ 2. If no file exists, ppaattcchh checks for the existence of the files in an
+ SCCS or RCS directory (using the appropriate prefix or suffix) using
+ the criteria specified above. If found, ppaattcchh will attempt to get
+ or check out the file.
+
+ 3. If no suitable file was found to patch, the patch file is a context
+ or unified diff, and the old file was zero length, the new file name
+ is created and used.
+
+ 4. If the file name still cannot be determined, ppaattcchh will prompt the
+ user for the file name to use.
+
+ Additionally, if the leading garbage contains a "Prereq: " line, ppaattcchh
+ will take the first word from the prerequisites line (normally a version
+ number) and check the input file to see if that word can be found. If
+ not, ppaattcchh will ask for confirmation before proceeding.
+
+ The upshot of all this is that you should be able to say, while in a news
+ interface, the following:
+
+ | patch -d /usr/src/local/blurfl
+
+ and patch a file in the blurfl directory directly from the article con-
+ taining the patch.
+
+ BBaacckkuupp FFiilleess
+ By default, the patched version is put in place of the original, with the
+ original file backed up to the same name with the extension ".orig", or
+ as specified by the --BB, --VV, or --zz options. The extension used for making
+ backup files may also be specified in the SIMPLE_BACKUP_SUFFIX environ-
+ ment variable, which is overridden by the options above.
+
+ If the backup file is a symbolic or hard link to the original file, ppaattcchh
+ creates a new backup file name by changing the first lowercase letter in
+ the last component of the file's name into uppercase. If there are no
+ more lowercase letters in the name, it removes the first character from
+ the name. It repeats this process until it comes up with a backup file
+ that does not already exist or is not linked to the original file.
+
+ You may also specify where you want the output to go with the --oo option;
+ if that file already exists, it is backed up first.
+
+ NNootteess FFoorr PPaattcchh SSeennddeerrss
+ There are several things you should bear in mind if you are going to be
+ sending out patches:
+
+ First, you can save people a lot of grief by keeping a _p_a_t_c_h_l_e_v_e_l_._h file
+ which is patched to increment the patch level as the first diff in the
+ patch file you send out. If you put a "Prereq:" line in with the patch,
+ it won't let them apply patches out of order without some warning.
+
+ Second, make sure you've specified the file names right, either in a con-
+ text diff header, or with an "Index:" line. If you are patching some-
+ thing in a subdirectory, be sure to tell the patch user to specify a --pp
+ option as needed.
+
+ Third, you can create a file by sending out a diff that compares a null
+ file to the file you want to create. This will only work if the file you
+ want to create doesn't exist already in the target directory.
+
+ Fourth, take care not to send out reversed patches, since it makes people
+ wonder whether they already applied the patch.
+
+ Fifth, while you may be able to get away with putting 582 diff listings
+ into one file, it is probably wiser to group related patches into sepa-
+ rate files in case something goes haywire.
+
+EENNVVIIRROONNMMEENNTT
+ POSIXLY_CORRECT When set, ppaattcchh behaves as if the ----ppoossiixx option
+ has been specified.
+ SIMPLE_BACKUP_SUFFIX Extension to use for backup file names instead of
+ ".orig".
+ TMPDIR Directory to put temporary files in; default is
+ _/_t_m_p.
+ PATCH_VERSION_CONTROL Selects when numbered backup files are made.
+ VERSION_CONTROL Same as PATCH_VERSION_CONTROL.
+
+FFIILLEESS
+ $TMPDIR/patch* ppaattcchh temporary files
+ /dev/tty used to read input when ppaattcchh prompts the user
+
+DDIIAAGGNNOOSSTTIICCSS
+ Too many to list here, but generally indicative that ppaattcchh couldn't parse
+ your patch file.
+
+ The message "Hmm..." indicates that there is unprocessed text in the
+ patch file and that ppaattcchh is attempting to intuit whether there is a
+ patch in that text and, if so, what kind of patch it is.
+
+ The ppaattcchh utility exits with one of the following values:
+
+ 0 Successful completion.
+ 1 One or more lines were written to a reject file.
+ >1 An error occurred.
+
+ When applying a set of patches in a loop it behooves you to check this
+ exit status so you don't apply a later patch to a partially patched file.
+
+SSEEEE AALLSSOO
+ diff(1)
+
+SSTTAANNDDAARRDDSS
+ The ppaattcchh utility is compliant with the IEEE Std 1003.1-2004
+ (``POSIX.1'') specification (except as detailed above for the ----ppoossiixx
+ option), though the presence of ppaattcchh itself is optional.
+
+ The flags [--CCEEffssttuuvvBBFFVVxxzz] and [----ppoossiixx] are extensions to that specifica-
+ tion.
+
+AAUUTTHHOORRSS
+ Larry Wall with many other contributors.
+
+CCAAVVEEAATTSS
+ ppaattcchh cannot tell if the line numbers are off in an ed script, and can
+ only detect bad line numbers in a normal diff when it finds a "change" or
+ a "delete" command. A context diff using fuzz factor 3 may have the same
+ problem. Until a suitable interactive interface is added, you should
+ probably do a context diff in these cases to see if the changes made
+ sense. Of course, compiling without errors is a pretty good indication
+ that the patch worked, but not always.
+
+ ppaattcchh usually produces the correct results, even when it has to do a lot
+ of guessing. However, the results are guaranteed to be correct only when
+ the patch is applied to exactly the same version of the file that the
+ patch was generated from.
+
+BBUUGGSS
+ Could be smarter about partial matches, excessively deviant offsets and
+ swapped code, but that would take an extra pass.
+
+ Check patch mode (--CC) will fail if you try to check several patches in
+ succession that build on each other. The entire ppaattcchh code would have to
+ be restructured to keep temporary files around so that it can handle this
+ situation.
+
+ If code has been duplicated (for instance with #ifdef OLDCODE ... #else
+ ... #endif), ppaattcchh is incapable of patching both versions, and, if it
+ works at all, will likely patch the wrong one, and tell you that it suc-
+ ceeded to boot.
+
+ If you apply a patch you've already applied, ppaattcchh will think it is a
+ reversed patch, and offer to un-apply the patch. This could be construed
+ as a feature.
+
+NetBSD 5.0 August 18, 2008 NetBSD 5.0