Home | History | Annotate | Line # | Download | only in patch
common.h revision 1.1.1.1
      1  1.1.1.1  tls /* $Header: /tank/opengrok/rsync2/NetBSD/src/usr.bin/patch/common.h,v 1.1.1.1 1997/01/09 14:47:38 tls Exp $
      2      1.1  cgd  *
      3      1.1  cgd  * $Log: common.h,v $
      4      1.1  cgd  * Revision 1.1.1.1  1997/01/09 14:47:38  tls
      5      1.1  cgd  * Import from 4.4BSD-Lite2
      6      1.1  cgd  *
      7      1.1  cgd  * Revision 2.0  86/09/17  15:36:39  lwall
      8      1.1  cgd  * Baseline for netwide release.
      9      1.1  cgd  *
     10      1.1  cgd  */
     11      1.1  cgd 
     12      1.1  cgd #define DEBUGGING
     13      1.1  cgd 
     14      1.1  cgd #include "config.h"
     15      1.1  cgd 
     16      1.1  cgd /* shut lint up about the following when return value ignored */
     17      1.1  cgd 
     18      1.1  cgd #define Signal (void)signal
     19      1.1  cgd #define Unlink (void)unlink
     20      1.1  cgd #define Lseek (void)lseek
     21      1.1  cgd #define Fseek (void)fseek
     22      1.1  cgd #define Fstat (void)fstat
     23      1.1  cgd #define Pclose (void)pclose
     24      1.1  cgd #define Close (void)close
     25      1.1  cgd #define Fclose (void)fclose
     26      1.1  cgd #define Fflush (void)fflush
     27      1.1  cgd #define Sprintf (void)sprintf
     28      1.1  cgd #define Mktemp (void)mktemp
     29      1.1  cgd #define Strcpy (void)strcpy
     30      1.1  cgd #define Strcat (void)strcat
     31      1.1  cgd 
     32      1.1  cgd #include <stdio.h>
     33      1.1  cgd #include <assert.h>
     34      1.1  cgd #include <sys/types.h>
     35      1.1  cgd #include <sys/stat.h>
     36      1.1  cgd #include <ctype.h>
     37      1.1  cgd #include <signal.h>
     38      1.1  cgd 
     39      1.1  cgd /* constants */
     40      1.1  cgd 
     41      1.1  cgd #define TRUE (1)
     42      1.1  cgd #define FALSE (0)
     43      1.1  cgd 
     44      1.1  cgd #define MAXHUNKSIZE 100000		/* is this enough lines? */
     45  1.1.1.1  tls #define INITHUNKMAX 125			/* initial dynamic allocation size */
     46      1.1  cgd #define MAXLINELEN 1024
     47      1.1  cgd #define BUFFERSIZE 1024
     48      1.1  cgd #define ORIGEXT ".orig"
     49      1.1  cgd #define SCCSPREFIX "s."
     50      1.1  cgd #define GET "get -e %s"
     51      1.1  cgd #define RCSSUFFIX ",v"
     52      1.1  cgd #define CHECKOUT "co -l %s"
     53      1.1  cgd 
     54      1.1  cgd /* handy definitions */
     55      1.1  cgd 
     56      1.1  cgd #define Null(t) ((t)0)
     57      1.1  cgd #define Nullch Null(char *)
     58      1.1  cgd #define Nullfp Null(FILE *)
     59      1.1  cgd #define Nulline Null(LINENUM)
     60      1.1  cgd 
     61      1.1  cgd #define Ctl(ch) ((ch) & 037)
     62      1.1  cgd 
     63      1.1  cgd #define strNE(s1,s2) (strcmp(s1, s2))
     64      1.1  cgd #define strEQ(s1,s2) (!strcmp(s1, s2))
     65      1.1  cgd #define strnNE(s1,s2,l) (strncmp(s1, s2, l))
     66      1.1  cgd #define strnEQ(s1,s2,l) (!strncmp(s1, s2, l))
     67      1.1  cgd 
     68      1.1  cgd /* typedefs */
     69      1.1  cgd 
     70      1.1  cgd typedef char bool;
     71      1.1  cgd typedef long LINENUM;			/* must be signed */
     72      1.1  cgd typedef unsigned MEM;			/* what to feed malloc */
     73      1.1  cgd 
     74      1.1  cgd /* globals */
     75      1.1  cgd 
     76      1.1  cgd EXT int Argc;				/* guess */
     77      1.1  cgd EXT char **Argv;
     78      1.1  cgd EXT int Argc_last;			/* for restarting plan_b */
     79      1.1  cgd EXT char **Argv_last;
     80      1.1  cgd 
     81      1.1  cgd EXT struct stat filestat;		/* file statistics area */
     82      1.1  cgd EXT int filemode INIT(0644);
     83      1.1  cgd 
     84      1.1  cgd EXT char buf[MAXLINELEN];		/* general purpose buffer */
     85      1.1  cgd EXT FILE *ofp INIT(Nullfp);		/* output file pointer */
     86      1.1  cgd EXT FILE *rejfp INIT(Nullfp);		/* reject file pointer */
     87      1.1  cgd 
     88      1.1  cgd EXT bool using_plan_a INIT(TRUE);	/* try to keep everything in memory */
     89      1.1  cgd EXT bool out_of_mem INIT(FALSE);	/* ran out of memory in plan a */
     90      1.1  cgd 
     91      1.1  cgd #define MAXFILEC 2
     92      1.1  cgd EXT int filec INIT(0);			/* how many file arguments? */
     93      1.1  cgd EXT char *filearg[MAXFILEC];
     94      1.1  cgd EXT bool ok_to_create_file INIT(FALSE);
     95      1.1  cgd EXT char *bestguess INIT(Nullch);	/* guess at correct filename */
     96      1.1  cgd 
     97  1.1.1.1  tls EXT char *outname INIT(Nullch);
     98      1.1  cgd EXT char rejname[128];
     99  1.1.1.1  tls 
    100  1.1.1.1  tls EXT char *origext INIT(Nullch);
    101  1.1.1.1  tls 
    102  1.1.1.1  tls EXT char TMPOUTNAME[] INIT("/tmp/patchoXXXXXX");
    103      1.1  cgd EXT char TMPINNAME[] INIT("/tmp/patchiXXXXXX");	/* might want /usr/tmp here */
    104      1.1  cgd EXT char TMPREJNAME[] INIT("/tmp/patchrXXXXXX");
    105      1.1  cgd EXT char TMPPATNAME[] INIT("/tmp/patchpXXXXXX");
    106      1.1  cgd EXT bool toutkeep INIT(FALSE);
    107      1.1  cgd EXT bool trejkeep INIT(FALSE);
    108      1.1  cgd 
    109      1.1  cgd EXT LINENUM last_offset INIT(0);
    110      1.1  cgd #ifdef DEBUGGING
    111      1.1  cgd EXT int debug INIT(0);
    112      1.1  cgd #endif
    113      1.1  cgd EXT LINENUM maxfuzz INIT(2);
    114      1.1  cgd EXT bool force INIT(FALSE);
    115      1.1  cgd EXT bool verbose INIT(TRUE);
    116      1.1  cgd EXT bool reverse INIT(FALSE);
    117      1.1  cgd EXT bool noreverse INIT(FALSE);
    118      1.1  cgd EXT bool skip_rest_of_patch INIT(FALSE);
    119      1.1  cgd EXT int strippath INIT(957);
    120      1.1  cgd EXT bool canonicalize INIT(FALSE);
    121      1.1  cgd 
    122      1.1  cgd #define CONTEXT_DIFF 1
    123      1.1  cgd #define NORMAL_DIFF 2
    124      1.1  cgd #define ED_DIFF 3
    125      1.1  cgd #define NEW_CONTEXT_DIFF 4
    126      1.1  cgd EXT int diff_type INIT(0);
    127      1.1  cgd 
    128      1.1  cgd EXT bool do_defines INIT(FALSE);	/* patch using ifdef, ifndef, etc. */
    129      1.1  cgd EXT char if_defined[128];		/* #ifdef xyzzy */
    130      1.1  cgd EXT char not_defined[128];		/* #ifndef xyzzy */
    131      1.1  cgd EXT char else_defined[] INIT("#else\n");/* #else */
    132      1.1  cgd EXT char end_defined[128];		/* #endif xyzzy */
    133      1.1  cgd 
    134      1.1  cgd EXT char *revision INIT(Nullch);	/* prerequisite revision, if any */
    135      1.1  cgd 
    136      1.1  cgd char *malloc();
    137  1.1.1.1  tls char *realloc();
    138      1.1  cgd char *strcpy();
    139               char *strcat();
    140               long atol();
    141               char *mktemp();
    142