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