Home | History | Annotate | Line # | Download | only in patch
common.h revision 1.1
      1  1.1  cgd /* $Header: /tank/opengrok/rsync2/NetBSD/src/usr.bin/patch/common.h,v 1.1 1993/04/09 11:33:58 cgd Exp $
      2  1.1  cgd  *
      3  1.1  cgd  * $Log: common.h,v $
      4  1.1  cgd  * Revision 1.1  1993/04/09 11:33:58  cgd
      5  1.1  cgd  * patch 2.0.12u8, from prep.ai.mit.edu.  this is not under the GPL.
      6  1.1  cgd  *
      7  1.1  cgd  * Revision 2.0.1.2  88/06/22  20:44:53  lwall
      8  1.1  cgd  * patch12: sprintf was declared wrong
      9  1.1  cgd  *
     10  1.1  cgd  * Revision 2.0.1.1  88/06/03  15:01:56  lwall
     11  1.1  cgd  * patch10: support for shorter extensions.
     12  1.1  cgd  *
     13  1.1  cgd  * Revision 2.0  86/09/17  15:36:39  lwall
     14  1.1  cgd  * Baseline for netwide release.
     15  1.1  cgd  *
     16  1.1  cgd  */
     17  1.1  cgd 
     18  1.1  cgd #define DEBUGGING
     19  1.1  cgd 
     20  1.1  cgd #define VOIDUSED 7
     21  1.1  cgd #include "config.h"
     22  1.1  cgd 
     23  1.1  cgd /* shut lint up about the following when return value ignored */
     24  1.1  cgd 
     25  1.1  cgd #define Signal (void)signal
     26  1.1  cgd #define Unlink (void)unlink
     27  1.1  cgd #define Lseek (void)lseek
     28  1.1  cgd #define Fseek (void)fseek
     29  1.1  cgd #define Fstat (void)fstat
     30  1.1  cgd #define Pclose (void)pclose
     31  1.1  cgd #define Close (void)close
     32  1.1  cgd #define Fclose (void)fclose
     33  1.1  cgd #define Fflush (void)fflush
     34  1.1  cgd #define Sprintf (void)sprintf
     35  1.1  cgd #define Mktemp (void)mktemp
     36  1.1  cgd #define Strcpy (void)strcpy
     37  1.1  cgd #define Strcat (void)strcat
     38  1.1  cgd 
     39  1.1  cgd /* NeXT declares malloc and realloc incompatibly from us in some of
     40  1.1  cgd    these files.  Temporarily redefine them to prevent errors.  */
     41  1.1  cgd #define malloc system_malloc
     42  1.1  cgd #define realloc system_realloc
     43  1.1  cgd #include <stdio.h>
     44  1.1  cgd #include <assert.h>
     45  1.1  cgd #include <sys/types.h>
     46  1.1  cgd #include <sys/stat.h>
     47  1.1  cgd #include <ctype.h>
     48  1.1  cgd #include <signal.h>
     49  1.1  cgd #undef malloc
     50  1.1  cgd #undef realloc
     51  1.1  cgd 
     52  1.1  cgd /* constants */
     53  1.1  cgd 
     54  1.1  cgd /* AIX predefines these.  */
     55  1.1  cgd #ifdef TRUE
     56  1.1  cgd #undef TRUE
     57  1.1  cgd #endif
     58  1.1  cgd #ifdef FALSE
     59  1.1  cgd #undef FALSE
     60  1.1  cgd #endif
     61  1.1  cgd #define TRUE (1)
     62  1.1  cgd #define FALSE (0)
     63  1.1  cgd 
     64  1.1  cgd #define MAXHUNKSIZE 100000		/* is this enough lines? */
     65  1.1  cgd #define INITHUNKMAX 125			/* initial dynamic allocation size */
     66  1.1  cgd #define MAXLINELEN 1024
     67  1.1  cgd #define BUFFERSIZE 1024
     68  1.1  cgd 
     69  1.1  cgd #define SCCSPREFIX "s."
     70  1.1  cgd #define GET "get -e %s"
     71  1.1  cgd #define SCCSDIFF "get -p %s | diff - %s >/dev/null"
     72  1.1  cgd 
     73  1.1  cgd #define RCSSUFFIX ",v"
     74  1.1  cgd #define CHECKOUT "co -l %s"
     75  1.1  cgd #define RCSDIFF "rcsdiff %s > /dev/null"
     76  1.1  cgd 
     77  1.1  cgd #ifdef FLEXFILENAMES
     78  1.1  cgd #define ORIGEXT ".orig"
     79  1.1  cgd #define REJEXT ".rej"
     80  1.1  cgd #else
     81  1.1  cgd #define ORIGEXT "~"
     82  1.1  cgd #define REJEXT "#"
     83  1.1  cgd #endif
     84  1.1  cgd 
     85  1.1  cgd /* handy definitions */
     86  1.1  cgd 
     87  1.1  cgd #define Null(t) ((t)0)
     88  1.1  cgd #define Nullch Null(char *)
     89  1.1  cgd #define Nullfp Null(FILE *)
     90  1.1  cgd #define Nulline Null(LINENUM)
     91  1.1  cgd 
     92  1.1  cgd #define Ctl(ch) ((ch) & 037)
     93  1.1  cgd 
     94  1.1  cgd #define strNE(s1,s2) (strcmp(s1, s2))
     95  1.1  cgd #define strEQ(s1,s2) (!strcmp(s1, s2))
     96  1.1  cgd #define strnNE(s1,s2,l) (strncmp(s1, s2, l))
     97  1.1  cgd #define strnEQ(s1,s2,l) (!strncmp(s1, s2, l))
     98  1.1  cgd 
     99  1.1  cgd /* typedefs */
    100  1.1  cgd 
    101  1.1  cgd typedef char bool;
    102  1.1  cgd typedef long LINENUM;			/* must be signed */
    103  1.1  cgd typedef unsigned MEM;			/* what to feed malloc */
    104  1.1  cgd 
    105  1.1  cgd /* globals */
    106  1.1  cgd 
    107  1.1  cgd EXT int Argc;				/* guess */
    108  1.1  cgd EXT char **Argv;
    109  1.1  cgd EXT int Argc_last;			/* for restarting plan_b */
    110  1.1  cgd EXT char **Argv_last;
    111  1.1  cgd 
    112  1.1  cgd EXT struct stat filestat;		/* file statistics area */
    113  1.1  cgd EXT int filemode INIT(0644);
    114  1.1  cgd 
    115  1.1  cgd EXT char buf[MAXLINELEN];		/* general purpose buffer */
    116  1.1  cgd EXT FILE *ofp INIT(Nullfp);		/* output file pointer */
    117  1.1  cgd EXT FILE *rejfp INIT(Nullfp);		/* reject file pointer */
    118  1.1  cgd 
    119  1.1  cgd EXT int myuid;				/* cache getuid return value */
    120  1.1  cgd 
    121  1.1  cgd EXT bool using_plan_a INIT(TRUE);	/* try to keep everything in memory */
    122  1.1  cgd EXT bool out_of_mem INIT(FALSE);	/* ran out of memory in plan a */
    123  1.1  cgd 
    124  1.1  cgd #define MAXFILEC 2
    125  1.1  cgd EXT int filec INIT(0);			/* how many file arguments? */
    126  1.1  cgd EXT char *filearg[MAXFILEC];
    127  1.1  cgd EXT bool ok_to_create_file INIT(FALSE);
    128  1.1  cgd EXT char *bestguess INIT(Nullch);	/* guess at correct filename */
    129  1.1  cgd 
    130  1.1  cgd EXT char *outname INIT(Nullch);
    131  1.1  cgd EXT char rejname[128];
    132  1.1  cgd 
    133  1.1  cgd EXT char *origprae INIT(Nullch);
    134  1.1  cgd 
    135  1.1  cgd EXT char *TMPOUTNAME;
    136  1.1  cgd EXT char *TMPINNAME;
    137  1.1  cgd EXT char *TMPREJNAME;
    138  1.1  cgd EXT char *TMPPATNAME;
    139  1.1  cgd EXT bool toutkeep INIT(FALSE);
    140  1.1  cgd EXT bool trejkeep INIT(FALSE);
    141  1.1  cgd 
    142  1.1  cgd EXT LINENUM last_offset INIT(0);
    143  1.1  cgd #ifdef DEBUGGING
    144  1.1  cgd EXT int debug INIT(0);
    145  1.1  cgd #endif
    146  1.1  cgd EXT LINENUM maxfuzz INIT(2);
    147  1.1  cgd EXT bool force INIT(FALSE);
    148  1.1  cgd EXT bool batch INIT(FALSE);
    149  1.1  cgd EXT bool verbose INIT(TRUE);
    150  1.1  cgd EXT bool reverse INIT(FALSE);
    151  1.1  cgd EXT bool noreverse INIT(FALSE);
    152  1.1  cgd EXT bool skip_rest_of_patch INIT(FALSE);
    153  1.1  cgd EXT int strippath INIT(957);
    154  1.1  cgd EXT bool canonicalize INIT(FALSE);
    155  1.1  cgd 
    156  1.1  cgd #define CONTEXT_DIFF 1
    157  1.1  cgd #define NORMAL_DIFF 2
    158  1.1  cgd #define ED_DIFF 3
    159  1.1  cgd #define NEW_CONTEXT_DIFF 4
    160  1.1  cgd #define UNI_DIFF 5
    161  1.1  cgd EXT int diff_type INIT(0);
    162  1.1  cgd 
    163  1.1  cgd EXT bool do_defines INIT(FALSE);	/* patch using ifdef, ifndef, etc. */
    164  1.1  cgd EXT char if_defined[128];		/* #ifdef xyzzy */
    165  1.1  cgd EXT char not_defined[128];		/* #ifndef xyzzy */
    166  1.1  cgd EXT char else_defined[] INIT("#else\n");/* #else */
    167  1.1  cgd EXT char end_defined[128];		/* #endif xyzzy */
    168  1.1  cgd 
    169  1.1  cgd EXT char *revision INIT(Nullch);	/* prerequisite revision, if any */
    170  1.1  cgd 
    171  1.1  cgd #include <errno.h>
    172  1.1  cgd #ifndef errno
    173  1.1  cgd extern int errno;
    174  1.1  cgd #endif
    175  1.1  cgd 
    176  1.1  cgd FILE *popen();
    177  1.1  cgd char *malloc();
    178  1.1  cgd char *realloc();
    179  1.1  cgd long atol();
    180  1.1  cgd char *getenv();
    181  1.1  cgd char *strcpy();
    182  1.1  cgd char *strcat();
    183  1.1  cgd char *rindex();
    184  1.1  cgd long lseek();
    185  1.1  cgd char *mktemp();
    186  1.1  cgd #if 0				/* This can cause a prototype conflict.  */
    187  1.1  cgd #ifdef CHARSPRINTF
    188  1.1  cgd char *sprintf();
    189  1.1  cgd #else
    190  1.1  cgd int sprintf();
    191  1.1  cgd #endif
    192  1.1  cgd #endif
    193  1.1  cgd 
    194  1.1  cgd #if !defined(S_ISDIR) && defined(S_IFDIR)
    195  1.1  cgd #define	S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
    196  1.1  cgd #endif
    197           #if !defined(S_ISREG) && defined(S_IFREG)
    198           #define	S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
    199           #endif
    200