Home | History | Annotate | Line # | Download | only in patch
common.h revision 1.19
      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     joerg  * $NetBSD: common.h,v 1.19 2008/09/19 18:33:34 joerg 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.1       cgd 
     47   1.1       cgd #define SCCSPREFIX "s."
     48   1.1       cgd #define GET "get -e %s"
     49   1.1       cgd #define SCCSDIFF "get -p %s | diff - %s >/dev/null"
     50   1.1       cgd 
     51   1.1       cgd #define RCSSUFFIX ",v"
     52   1.1       cgd #define CHECKOUT "co -l %s"
     53   1.1       cgd #define RCSDIFF "rcsdiff %s > /dev/null"
     54   1.1       cgd 
     55   1.1       cgd #define ORIGEXT ".orig"
     56   1.1       cgd #define REJEXT ".rej"
     57   1.1       cgd 
     58   1.1       cgd /* handy definitions */
     59   1.1       cgd 
     60   1.1       cgd #define strNE(s1,s2) (strcmp(s1, s2))
     61   1.1       cgd #define strEQ(s1,s2) (!strcmp(s1, s2))
     62   1.1       cgd #define strnNE(s1,s2,l) (strncmp(s1, s2, l))
     63   1.1       cgd #define strnEQ(s1,s2,l) (!strncmp(s1, s2, l))
     64   1.1       cgd 
     65   1.1       cgd /* typedefs */
     66   1.1       cgd 
     67  1.19     joerg typedef long    LINENUM;	/* must be signed */
     68   1.1       cgd 
     69   1.1       cgd /* globals */
     70   1.1       cgd 
     71  1.19     joerg extern mode_t	filemode;
     72   1.1       cgd 
     73  1.19     joerg extern char	buf[MAXLINELEN];/* general purpose buffer */
     74  1.19     joerg extern size_t	buf_len;
     75  1.17       skd 
     76  1.19     joerg extern bool	using_plan_a;	/* try to keep everything in memory */
     77  1.19     joerg extern bool	out_of_mem;	/* ran out of memory in plan a */
     78   1.1       cgd 
     79  1.19     joerg #define MAXFILEC 2
     80   1.1       cgd 
     81  1.19     joerg extern char	*filearg[MAXFILEC];
     82  1.19     joerg extern bool	ok_to_create_file;
     83  1.19     joerg extern char	*outname;
     84  1.19     joerg extern char	*origprae;
     85  1.19     joerg 
     86  1.19     joerg extern char	*TMPOUTNAME;
     87  1.19     joerg extern char	*TMPINNAME;
     88  1.19     joerg extern char	*TMPREJNAME;
     89  1.19     joerg extern char	*TMPPATNAME;
     90  1.19     joerg extern bool	toutkeep;
     91  1.19     joerg extern bool	trejkeep;
     92   1.1       cgd 
     93   1.1       cgd #ifdef DEBUGGING
     94  1.19     joerg extern int	debug;
     95   1.1       cgd #endif
     96  1.19     joerg 
     97  1.19     joerg extern bool	force;
     98  1.19     joerg extern bool	batch;
     99  1.19     joerg extern bool	verbose;
    100  1.19     joerg extern bool	reverse;
    101  1.19     joerg extern bool	noreverse;
    102  1.19     joerg extern bool	skip_rest_of_patch;
    103  1.19     joerg extern int	strippath;
    104  1.19     joerg extern bool	canonicalize;
    105  1.19     joerg /* TRUE if -C was specified on command line.  */
    106  1.19     joerg extern bool	check_only;
    107  1.19     joerg extern bool	warn_on_invalid_line;
    108  1.19     joerg extern bool	last_line_missing_eol;
    109  1.19     joerg 
    110   1.1       cgd 
    111   1.1       cgd #define CONTEXT_DIFF 1
    112   1.1       cgd #define NORMAL_DIFF 2
    113   1.1       cgd #define ED_DIFF 3
    114   1.1       cgd #define NEW_CONTEXT_DIFF 4
    115   1.1       cgd #define UNI_DIFF 5
    116   1.1       cgd 
    117  1.19     joerg extern int	diff_type;
    118  1.19     joerg extern char	*revision;	/* prerequisite revision, if any */
    119  1.19     joerg extern LINENUM	input_lines;	/* how long is input file in lines */
    120   1.1       cgd 
    121  1.19     joerg extern int	posix;
    122   1.8  christos 
    123