Home | History | Annotate | Line # | Download | only in patch
common.h revision 1.8
      1  1.8  christos /*	$NetBSD: common.h,v 1.8 1998/02/22 13:33:48 christos 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.7  augustss #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.8  christos #ifndef __STDC__
    162  1.1       cgd FILE *popen();
    163  1.1       cgd char *malloc();
    164  1.1       cgd char *realloc();
    165  1.1       cgd long atol();
    166  1.1       cgd char *getenv();
    167  1.1       cgd char *strcpy();
    168  1.1       cgd char *strcat();
    169  1.1       cgd char *rindex();
    170  1.1       cgd #if 0				/* This can cause a prototype conflict.  */
    171  1.1       cgd #ifdef CHARSPRINTF
    172  1.1       cgd char *sprintf();
    173  1.1       cgd #else
    174  1.1       cgd int sprintf();
    175  1.1       cgd #endif
    176  1.1       cgd #endif
    177  1.8  christos #endif
    178  1.1       cgd 
    179  1.1       cgd #if !defined(S_ISDIR) && defined(S_IFDIR)
    180  1.1       cgd #define	S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
    181  1.1       cgd #endif
    182  1.1       cgd #if !defined(S_ISREG) && defined(S_IFREG)
    183  1.1       cgd #define	S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
    184  1.1       cgd #endif
    185  1.8  christos 
    186  1.8  christos void my_exit __P((int)) __attribute__((__noreturn__));
    187  1.8  christos char *basename __P((char *));
    188