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