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