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