xref: /dragonfly/usr.bin/patch/common.h (revision 48d201a5)
1*48d201a5SJoerg Sonnenberger /*
2*48d201a5SJoerg Sonnenberger  * $OpenBSD: common.h,v 1.25 2003/10/31 20:20:45 millert Exp $
3*48d201a5SJoerg Sonnenberger  * $DragonFly: src/usr.bin/patch/common.h,v 1.1 2004/09/24 18:44:28 joerg Exp $
4*48d201a5SJoerg Sonnenberger  */
5*48d201a5SJoerg Sonnenberger 
6*48d201a5SJoerg Sonnenberger /*
7*48d201a5SJoerg Sonnenberger  * patch - a program to apply diffs to original files
8*48d201a5SJoerg Sonnenberger  *
9*48d201a5SJoerg Sonnenberger  * Copyright 1986, Larry Wall
10*48d201a5SJoerg Sonnenberger  *
11*48d201a5SJoerg Sonnenberger  * Redistribution and use in source and binary forms, with or without
12*48d201a5SJoerg Sonnenberger  * modification, are permitted provided that the following condition is met:
13*48d201a5SJoerg Sonnenberger  * 1. Redistributions of source code must retain the above copyright notice,
14*48d201a5SJoerg Sonnenberger  * this condition and the following disclaimer.
15*48d201a5SJoerg Sonnenberger  *
16*48d201a5SJoerg Sonnenberger  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
17*48d201a5SJoerg Sonnenberger  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18*48d201a5SJoerg Sonnenberger  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19*48d201a5SJoerg Sonnenberger  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
20*48d201a5SJoerg Sonnenberger  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21*48d201a5SJoerg Sonnenberger  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22*48d201a5SJoerg Sonnenberger  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23*48d201a5SJoerg Sonnenberger  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24*48d201a5SJoerg Sonnenberger  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25*48d201a5SJoerg Sonnenberger  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26*48d201a5SJoerg Sonnenberger  * SUCH DAMAGE.
27*48d201a5SJoerg Sonnenberger  *
28*48d201a5SJoerg Sonnenberger  * -C option added in 1998, original code by Marc Espie, based on FreeBSD
29*48d201a5SJoerg Sonnenberger  * behaviour
30*48d201a5SJoerg Sonnenberger  */
31*48d201a5SJoerg Sonnenberger 
32*48d201a5SJoerg Sonnenberger #include <stdbool.h>
33*48d201a5SJoerg Sonnenberger 
34*48d201a5SJoerg Sonnenberger #define DEBUGGING
35*48d201a5SJoerg Sonnenberger 
36*48d201a5SJoerg Sonnenberger /* constants */
37*48d201a5SJoerg Sonnenberger 
38*48d201a5SJoerg Sonnenberger #define MAXHUNKSIZE 100000	/* is this enough lines? */
39*48d201a5SJoerg Sonnenberger #define INITHUNKMAX 125		/* initial dynamic allocation size */
40*48d201a5SJoerg Sonnenberger #define MAXLINELEN 8192
41*48d201a5SJoerg Sonnenberger #define BUFFERSIZE 1024
42*48d201a5SJoerg Sonnenberger 
43*48d201a5SJoerg Sonnenberger #define SCCSPREFIX "s."
44*48d201a5SJoerg Sonnenberger #define GET "get -e %s"
45*48d201a5SJoerg Sonnenberger #define SCCSDIFF "get -p %s | diff - %s >/dev/null"
46*48d201a5SJoerg Sonnenberger 
47*48d201a5SJoerg Sonnenberger #define RCSSUFFIX ",v"
48*48d201a5SJoerg Sonnenberger #define CHECKOUT "co -l %s"
49*48d201a5SJoerg Sonnenberger #define RCSDIFF "rcsdiff %s > /dev/null"
50*48d201a5SJoerg Sonnenberger 
51*48d201a5SJoerg Sonnenberger #define ORIGEXT ".orig"
52*48d201a5SJoerg Sonnenberger #define REJEXT ".rej"
53*48d201a5SJoerg Sonnenberger 
54*48d201a5SJoerg Sonnenberger /* handy definitions */
55*48d201a5SJoerg Sonnenberger 
56*48d201a5SJoerg Sonnenberger #define strNE(s1,s2) (strcmp(s1, s2))
57*48d201a5SJoerg Sonnenberger #define strEQ(s1,s2) (!strcmp(s1, s2))
58*48d201a5SJoerg Sonnenberger #define strnNE(s1,s2,l) (strncmp(s1, s2, l))
59*48d201a5SJoerg Sonnenberger #define strnEQ(s1,s2,l) (!strncmp(s1, s2, l))
60*48d201a5SJoerg Sonnenberger 
61*48d201a5SJoerg Sonnenberger /* typedefs */
62*48d201a5SJoerg Sonnenberger 
63*48d201a5SJoerg Sonnenberger typedef long    LINENUM;	/* must be signed */
64*48d201a5SJoerg Sonnenberger 
65*48d201a5SJoerg Sonnenberger /* globals */
66*48d201a5SJoerg Sonnenberger 
67*48d201a5SJoerg Sonnenberger extern int	filemode;
68*48d201a5SJoerg Sonnenberger 
69*48d201a5SJoerg Sonnenberger extern char	buf[MAXLINELEN];/* general purpose buffer */
70*48d201a5SJoerg Sonnenberger 
71*48d201a5SJoerg Sonnenberger extern bool	using_plan_a;	/* try to keep everything in memory */
72*48d201a5SJoerg Sonnenberger extern bool	out_of_mem;	/* ran out of memory in plan a */
73*48d201a5SJoerg Sonnenberger 
74*48d201a5SJoerg Sonnenberger #define MAXFILEC 2
75*48d201a5SJoerg Sonnenberger 
76*48d201a5SJoerg Sonnenberger extern char	*filearg[MAXFILEC];
77*48d201a5SJoerg Sonnenberger extern bool	ok_to_create_file;
78*48d201a5SJoerg Sonnenberger extern char	*outname;
79*48d201a5SJoerg Sonnenberger extern char	*origprae;
80*48d201a5SJoerg Sonnenberger 
81*48d201a5SJoerg Sonnenberger extern char	*TMPOUTNAME;
82*48d201a5SJoerg Sonnenberger extern char	*TMPINNAME;
83*48d201a5SJoerg Sonnenberger extern char	*TMPREJNAME;
84*48d201a5SJoerg Sonnenberger extern char	*TMPPATNAME;
85*48d201a5SJoerg Sonnenberger extern bool	toutkeep;
86*48d201a5SJoerg Sonnenberger extern bool	trejkeep;
87*48d201a5SJoerg Sonnenberger 
88*48d201a5SJoerg Sonnenberger #ifdef DEBUGGING
89*48d201a5SJoerg Sonnenberger extern int	debug;
90*48d201a5SJoerg Sonnenberger #endif
91*48d201a5SJoerg Sonnenberger 
92*48d201a5SJoerg Sonnenberger extern bool	force;
93*48d201a5SJoerg Sonnenberger extern bool	batch;
94*48d201a5SJoerg Sonnenberger extern bool	verbose;
95*48d201a5SJoerg Sonnenberger extern bool	reverse;
96*48d201a5SJoerg Sonnenberger extern bool	noreverse;
97*48d201a5SJoerg Sonnenberger extern bool	skip_rest_of_patch;
98*48d201a5SJoerg Sonnenberger extern int	strippath;
99*48d201a5SJoerg Sonnenberger extern bool	canonicalize;
100*48d201a5SJoerg Sonnenberger /* TRUE if -C was specified on command line.  */
101*48d201a5SJoerg Sonnenberger extern bool	check_only;
102*48d201a5SJoerg Sonnenberger extern bool	warn_on_invalid_line;
103*48d201a5SJoerg Sonnenberger extern bool	last_line_missing_eol;
104*48d201a5SJoerg Sonnenberger 
105*48d201a5SJoerg Sonnenberger 
106*48d201a5SJoerg Sonnenberger #define CONTEXT_DIFF 1
107*48d201a5SJoerg Sonnenberger #define NORMAL_DIFF 2
108*48d201a5SJoerg Sonnenberger #define ED_DIFF 3
109*48d201a5SJoerg Sonnenberger #define NEW_CONTEXT_DIFF 4
110*48d201a5SJoerg Sonnenberger #define UNI_DIFF 5
111*48d201a5SJoerg Sonnenberger 
112*48d201a5SJoerg Sonnenberger extern int	diff_type;
113*48d201a5SJoerg Sonnenberger extern char	*revision;	/* prerequisite revision, if any */
114*48d201a5SJoerg Sonnenberger extern LINENUM	input_lines;	/* how long is input file in lines */
115*48d201a5SJoerg Sonnenberger 
116*48d201a5SJoerg Sonnenberger extern int	posix;
117*48d201a5SJoerg Sonnenberger 
118