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