Annotation of src/usr.bin/diff/diff.h, Revision 1.7
1.7 ! millert 1: /* $OpenBSD: diff.h,v 1.6 2003/06/25 17:49:22 millert Exp $ */
1.2 deraadt 2:
3: /*
4: * Copyright (C) Caldera International Inc. 2001-2002.
5: * All rights reserved.
6: *
7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
10: * 1. Redistributions of source code and documentation must retain the above
11: * copyright notice, this list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: * 3. All advertising materials mentioning features or use of this software
16: * must display the following acknowledgement:
17: * This product includes software developed or owned by Caldera
18: * International, Inc.
19: * 4. Neither the name of Caldera International, Inc. nor the names of other
20: * contributors may be used to endorse or promote products derived from
21: * this software without specific prior written permission.
22: *
23: * USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
24: * INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
25: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27: * IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE FOR ANY DIRECT,
28: * INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
32: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
33: * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34: * POSSIBILITY OF SUCH DAMAGE.
35: */
36:
1.1 deraadt 37: /* diff.h 4.7 85/08/16 */
38:
39: /*
40: * diff - common declarations
41: */
42:
43: #include <sys/param.h>
44: #include <sys/stat.h>
1.6 millert 45:
46: #include <ctype.h>
47: #include <err.h>
1.1 deraadt 48: #include <signal.h>
1.6 millert 49: #include <stdio.h>
1.1 deraadt 50:
51: /*
52: * Output format options
53: */
54: int opt;
55:
56: #define D_NORMAL 0 /* Normal output */
57: #define D_EDIT -1 /* Editor script out */
58: #define D_REVERSE 1 /* Reverse editor script */
59: #define D_CONTEXT 2 /* Diff with context */
1.6 millert 60: #define D_UNIFIED 3 /* Unified context diff */
61: #define D_IFDEF 4 /* Diff with merged #ifdef's */
62: #define D_NREVERSE 5 /* Reverse ed script with numbered
1.1 deraadt 63: lines and no trailing . */
64:
65: int tflag; /* expand tabs on output */
66:
67: /*
68: * Algorithm related options
69: */
70: int hflag; /* -h, use halfhearted DIFFH */
71: int bflag; /* ignore blanks in comparisons */
72: int wflag; /* totally ignore blanks in comparisons */
73: int iflag; /* ignore case in comparisons */
74:
75: /*
76: * Options on hierarchical diffs.
77: */
78: int lflag; /* long output format with header */
79: int rflag; /* recursively trace directories */
80: int sflag; /* announce files which are same */
81: char *start; /* do file only if name >= this */
82:
83: /*
84: * Variables for -I D_IFDEF option.
85: */
86: int wantelses; /* -E */
87: char *ifdef1; /* String for -1 */
88: char *ifdef2; /* String for -2 */
89: char *endifname; /* What we will print on next #endif */
90: int inifdef;
91:
92: /*
93: * Variables for -c context option.
94: */
95: int context; /* lines of context to be printed */
96:
97: /*
98: * State for exit status.
99: */
100: int status;
101: int anychange;
102: char *tempfile; /* used when comparing against std input */
103:
104: /*
105: * Variables for diffdir.
106: */
107: char **diffargv; /* option list to pass to recursive diffs */
108:
109: /*
110: * Input file names.
111: * With diffdir, file1 and file2 are allocated BUFSIZ space,
112: * and padded with a '/', and then efile0 and efile1 point after
113: * the '/'.
114: */
115: char *file1, *file2, *efile1, *efile2;
116: struct stat stb1, stb2;
117:
1.7 ! millert 118: void *emalloc(size_t);
! 119: void *erealloc(void *, size_t);
1.3 tedu 120: char *splice(char *, char *);
121: char *copytemp(void);
122: void diffdir(char **);
123: void diffreg(void);
124: int max(int, int);
125: int min(int, int);
1.6 millert 126: __dead void done(int);
1.1 deraadt 127:
128: extern char diffh[], diff[], pr[];