$! ................... Cut between dotted lines and save. ................... $!........................................................................... $! VAX/VMS archive file created by VMS_SHARE V06.10 7-FEB-1989. $! $! VMS_SHARE was written by James Gray (Gray:OSBUSouth@Xerox.COM) from $! VMS_SHAR by Michael Bednarek (U3369429@ucsvc.dn.mu.oz.au). $! $! To unpack, simply save, concatinate all parts into one file and $! execute (@) that file. $! $! This archive was created by user BEN $! on 4-NOV-1989 19:05:49.09. $! $! ATTENTION: To keep each article below 31 blocks (15872 bytes), this $! program has been transmitted in 15 parts. You should $! concatenate ALL parts to ONE file and execute (@) that file. $! $! It contains the following 31 files: $! 000README.VMS $! COMMON.H $! COMMON.H_UNIX $! COMMON.VMS_PATCH $! CONFIG.H $! CONFIG.H_UNIX $! CONFIG.VMS_H $! EXTERN.H $! INP.C $! INP.H $! INTERN.H $! MAKEFILE. $! MAKEFILE.UNIX $! MALLOC.C $! MANIFEST. $! PATCH.C $! PATCH.DOC $! PATCHLEVEL.H $! PCH.C $! PCH.C_UNIX $! PCH.H $! PCH.PATCH $! PCH.VMS_PATCH $! README. $! UTIL.C $! UTIL.C_UNIX $! UTIL.H $! UTIL.VMS_PATCH $! VERSION.C $! VERSION.H $! WALL.NOTES $! $!============================================================================ $ SET SYMBOL/SCOPE=( NOLOCAL, NOGLOBAL ) $ VERSION = F$GETSYI( "VERSION" ) $ IF VERSION .GES "V4.4" THEN GOTO VERSION_OK $ WRITE SYS$OUTPUT "You are running VMS ''VERSION'; ", - "VMS_SHARE V06.10 7-FEB-1989 requires VMS V4.4 or higher." $ EXIT 44 ! SS$_ABORT $VERSION_OK: $ GOTO START $! $UNPACK_FILE: $ WRITE SYS$OUTPUT "Creating ''FILE_IS'" $ DEFINE/USER_MODE SYS$OUTPUT NL: $ EDIT/TPU/COMMAND=SYS$INPUT/NODISPLAY/OUTPUT='FILE_IS'/NOSECTION - VMS_SHARE_DUMMY.DUMMY b_part := CREATE_BUFFER( "{Part}", GET_INFO( COMMAND_LINE, "file_name" ) ) ; s_file_spec := GET_INFO( COMMAND_LINE, "output_file" ); SET( OUTPUT_FILE , b_part, s_file_spec ); b_errors := CREATE_BUFFER( "{Errors}" ); i_errors := 0; pat_beg_1 := ANCHOR & "-+-+-+ Beginning"; pat_beg_2 := LINE_BEGIN & "+-+-+-+ Beginning"; pat_end := ANCHOR & "+-+-+-+-+ End"; POSITION ( BEGINNING_OF( b_part ) ); LOOP EXITIF SEARCH( SPAN( ' ' )@r_trail & LINE_END, FORWARD) = 0; POSITION( r_trail ); ERASE( r_trail ); ENDLOOP ; POSITION( BEGINNING_OF( b_part ) ); i_append_line := 0; LOOP EXITIF MARK ( NONE ) = END_OF( b_part ); s_x := ERASE_CHARACTER( 1 ) ; IF s_x = '+' THEN r_skip := SEARCH( pat_beg_1, FORWARD, EXACT ); IF r_skip <> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ERASE_LINE; ENDIF ; ENDIF; IF s_x = '-' THEN r_skip := SEARCH( pat_end, FORWARD, EXACT ) ; IF r_skip <> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); m_skip := MARK( NONE ); r_skip := SEARCH( pat_beg_2, FORWARD, EXACT ); IF r_skip <> 0 THEN POSITION( END_OF( r_skip ) ); MOVE_HORIZONTAL( -CURRENT_OFFSET ) ; MOVE_VERTICAL( 1 ); MOVE_HORIZONTAL( -1 ); ELSE POSITION( END_OF( b_part ) ); ENDIF; ERASE( CREATE_RANGE( m_skip, MARK( NONE ), NONE ) ); ENDIF; ENDIF ; IF s_x = 'V' THEN s_x := ''; IF i_append_line <> 0 THEN APPEND_LINE ; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF; i_append_line := 1 ; MOVE_VERTICAL( 1 ); ENDIF; IF s_x = 'X' THEN s_x := ''; IF i_append_line <> 0 THEN APPEND_LINE; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF ; i_append_line := 0; MOVE_VERTICAL( 1 ); ENDIF; IF s_x <> '' THEN i_errors := i_errors + 1; s_text := CURRENT_LINE; POSITION( b_errors ); COPY_TEXT ( "The following line could not be unpacked properly:" ); SPLIT_LINE ; COPY_TEXT( s_x ); COPY_TEXT( s_text ); POSITION( b_part ); MOVE_VERTICAL ( 1 ); ENDIF; ENDLOOP; POSITION( BEGINNING_OF( b_part ) ); LOOP r_x := SEARCH ( "`", FORWARD, EXACT ); EXITIF r_x = 0; POSITION( r_x ); ERASE_CHARACTER( 1 ); COPY_TEXT( ASCII( INT( ERASE_CHARACTER( 3 ) ) ) ); ENDLOOP ; IF i_errors = 0 THEN SET( NO_WRITE, b_errors, ON ); ELSE POSITION ( BEGINNING_OF( b_errors ) ); COPY_TEXT( FAO ( "The following !UL errors were detected while unpacking !AS", i_errors , s_file_spec ) ); SPLIT_LINE; SET( OUTPUT_FILE, b_errors, "SYS$COMMAND" ) ; ENDIF; EXIT; $ DELETE VMS_SHARE_DUMMY.DUMMY;* $ CHECKSUM 'FILE_IS $ WRITE SYS$OUTPUT " CHECKSUM ", - F$ELEMENT( CHECKSUM_IS .EQ. CHECKSUM$CHECKSUM, ",", "failed!!,passed." ) $ RETURN $! $START: $ FILE_IS = "000README.VMS" $ CHECKSUM_IS = 1277001206 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY XTo reconstruct the changes I've done to patch, apply the three .PATCH files Xand use the CONFIG.H_VMS file. $ GOSUB UNPACK_FILE $ FILE_IS = "COMMON.H" $ CHECKSUM_IS = 2087361746 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/* $Header: common.h,v 2.0.1.2 88/06/22 20:44:53 lwall Locked $ X * X * $Log: common.h,v $ X * Revision 2.0.1.2 88/06/22 20:44:53 lwall X * patch12: sprintf was declared wrong X * X * Revision 2.0.1.1 88/06/03 15:01:56 lwall X * patch10: support for shorter extensions. X * X * Revision 2.0 86/09/17 15:36:39 lwall X * Baseline for netwide release. X * X */ X X#define DEBUGGING X X#define VOIDUSED 7 X#include "config.h" X X/* shut lint up about the following when return value ignored */ X X#define Signal (void)signal X#define Unlink (void)unlink X#define Lseek (void)lseek X#define Fseek (void)fseek X#define Fstat (void)fstat X#define Pclose (void)pclose X#define Close (void)close X#define Fclose (void)fclose X#define Fflush (void)fflush X#define Sprintf (void)sprintf X#define Mktemp (void)mktemp X#define Strcpy (void)strcpy X#define Strcat (void)strcat X X#include X#include X#include X#include X#include X#include X X/* constants */ X X#define TRUE (1) X#define FALSE (0) X X#define MAXHUNKSIZE 100000 /* is this enough lines? */ X#define INITHUNKMAX 125 /* initial dynamic allocation size */ X#define MAXLINELEN 1024 X#define BUFFERSIZE 1024 X#define SCCSPREFIX "s." X#define GET "get -e %s" X#define RCSSUFFIX ",v" X#define CHECKOUT "co -l %s" X X#ifdef FLEXFILENAMES X#ifdef VMS X#define ORIGEXT "_orig" X#define REJEXT "_rej" X#else X#define ORIGEXT ".orig" X#define REJEXT ".rej" X#endif /* VMS */ X#else X#define ORIGEXT "`126" X#define REJEXT "#" X#endif X X/* handy definitions */ X X#define Null(t) ((t)0) X#define Nullch Null(char *) X#define Nullfp Null(FILE *) X#define Nulline Null(LINENUM) X X#define Ctl(ch) ((ch) & 037) X X#define strNE(s1,s2) (strcmp(s1, s2)) X#define strEQ(s1,s2) (!strcmp(s1, s2)) X#define strnNE(s1,s2,l) (strncmp(s1, s2, l)) X#define strnEQ(s1,s2,l) (!strncmp(s1, s2, l)) X X/* typedefs */ X Xtypedef char bool; Xtypedef long LINENUM; /* must be signed */ Xtypedef unsigned MEM; /* what to feed malloc */ X X/* globals */ X XEXT int Argc; /* guess */ XEXT char **Argv; XEXT int Argc_last; /* for restarting plan_b */ XEXT char **Argv_last; X XEXT struct stat filestat; /* file statistics area */ XEXT int filemode INIT(0644); X XEXT char buf[MAXLINELEN]; /* general purpose buffer */ XEXT FILE *ofp INIT(Nullfp); /* output file pointer */ XEXT FILE *rejfp INIT(Nullfp); /* reject file pointer */ X VEXT bool using_plan_a INIT(TRUE); /* try to keep everything in memory * X/ XEXT bool out_of_mem INIT(FALSE); /* ran out of memory in plan a */ X X#define MAXFILEC 2 XEXT int filec INIT(0); /* how many file arguments? */ XEXT char *filearg[MAXFILEC]; XEXT bool ok_to_create_file INIT(FALSE); XEXT char *bestguess INIT(Nullch); /* guess at correct filename */ X XEXT char *outname INIT(Nullch); XEXT char rejname[128]; X XEXT char *origext INIT(Nullch); XEXT char *origprae INIT(Nullch); X X#ifdef VMS XEXT char TMPOUTNAME[] INIT("sys$scratch:patchoXXXXXX"); VEXT char TMPINNAME[] INIT("sys$scratch:patchiXXXXXX"); /* might want /usr/tmp X here */ XEXT char TMPREJNAME[] INIT("sys$scratch:patchrXXXXXX"); XEXT char TMPPATNAME[] INIT("sys$scratch:patchpXXXXXX"); X#else XEXT char TMPOUTNAME[] INIT("/tmp/patchoXXXXXX"); VEXT char TMPINNAME[] INIT("/tmp/patchiXXXXXX"); /* might want /usr/tmp here * X/ XEXT char TMPREJNAME[] INIT("/tmp/patchrXXXXXX"); XEXT char TMPPATNAME[] INIT("/tmp/patchpXXXXXX"); X#endif XEXT bool toutkeep INIT(FALSE); XEXT bool trejkeep INIT(FALSE); X XEXT LINENUM last_offset INIT(0); X#ifdef DEBUGGING XEXT int debug INIT(0); X#endif XEXT LINENUM maxfuzz INIT(2); XEXT bool force INIT(FALSE); XEXT bool verbose INIT(TRUE); XEXT bool reverse INIT(FALSE); XEXT bool noreverse INIT(FALSE); XEXT bool skip_rest_of_patch INIT(FALSE); XEXT int strippath INIT(957); XEXT bool canonicalize INIT(FALSE); X X#define CONTEXT_DIFF 1 X#define NORMAL_DIFF 2 X#define ED_DIFF 3 X#define NEW_CONTEXT_DIFF 4 XEXT int diff_type INIT(0); X XEXT bool do_defines INIT(FALSE); /* patch using ifdef, ifndef, etc. */ XEXT char if_defined[128]; /* #ifdef xyzzy */ XEXT char not_defined[128]; /* #ifndef xyzzy */ XEXT char else_defined[] INIT("#else\n");/* #else */ XEXT char end_defined[128]; /* #endif xyzzy */ X XEXT char *revision INIT(Nullch); /* prerequisite revision, if any */ X Xchar *malloc(); Xchar *realloc(); Xchar *strcpy(); Xchar *strcat(); Xlong atol(); Xlong lseek(); Xchar *mktemp(); X#ifdef CHARSPRINTF Xchar *sprintf(); X#else Xint sprintf(); X#endif $ GOSUB UNPACK_FILE $ FILE_IS = "COMMON.H_UNIX" $ CHECKSUM_IS = 73733290 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X/* $Header: common.h,v 2.0.1.2 88/06/22 20:44:53 lwall Locked $ X * X * $Log:`009common.h,v $ X * Revision 2.0.1.2 88/06/22 20:44:53 lwall X * patch12: sprintf was declared wrong X * X * Revision 2.0.1.1 88/06/03 15:01:56 lwall X * patch10: support for shorter extensions. X * X * Revision 2.0 86/09/17 15:36:39 lwall X * Baseline for netwide release. X * X */ X X#define DEBUGGING X X#define VOIDUSED 7 X#include "config.h" X X/* shut lint up about the following when return value ignored */ X X#define Signal (void)signal X#define Unlink (void)unlink X#define Lseek (void)lseek X#define Fseek (void)fseek X#define Fstat (void)fstat X#define Pclose (void)pclose X#define Close (void)close X#define Fclose (void)fclose X#define Fflush (void)fflush X#define Sprintf (void)sprintf X#define Mktemp (void)mktemp X#define Strcpy (void)strcpy X#define Strcat (void)strcat X X#include X#include X#include X#include X#include X#include X X/* constants */ X X#define TRUE (1) X#define FALSE (0) X X#define MAXHUNKSIZE 100000`009`009/* is this enough lines? */ X#define INITHUNKMAX 125`009`009`009/* initial dynamic allocation size */ X#define MAXLINELEN 1024 X#define BUFFERSIZE 1024 X#define SCCSPREFIX "s." X#define GET "get -e %s" X#define RCSSUFFIX ",v" X#define CHECKOUT "co -l %s" X X#ifdef FLEXFILENAMES X#define ORIGEXT ".orig" X#define REJEXT ".rej" X#else X#define ORIGEXT "`126" X#define REJEXT "#" X#endif X X/* handy definitions */ X X#define Null(t) ((t)0) X#define Nullch Null(char *) X#define Nullfp Null(FILE *) X#define Nulline Null(LINENUM) X X#define Ctl(ch) ((ch) & 037) X X#define strNE(s1,s2) (strcmp(s1, s2)) X#define strEQ(s1,s2) (!strcmp(s1, s2)) X#define strnNE(s1,s2,l) (strncmp(s1, s2, l)) X#define strnEQ(s1,s2,l) (!strncmp(s1, s2, l)) X X/* typedefs */ X Xtypedef char bool; Xtypedef long LINENUM;`009`009`009/* must be signed */ Xtypedef unsigned MEM;`009`009`009/* what to feed malloc */ X X/* globals */ X XEXT int Argc;`009`009`009`009/* guess */ XEXT char **Argv; XEXT int Argc_last;`009`009`009/* for restarting plan_b */ XEXT char **Argv_last; X XEXT struct stat filestat;`009`009/* file statistics area */ XEXT int filemode INIT(0644); X XEXT char buf[MAXLINELEN];`009`009/* general purpose buffer */ XEXT FILE *ofp INIT(Nullfp);`009`009/* output file pointer */ XEXT FILE *rejfp INIT(Nullfp);`009`009/* reject file pointer */ X XEXT bool using_plan_a INIT(TRUE);`009/* try to keep everything in memory */ XEXT bool out_of_mem INIT(FALSE);`009/* ran out of memory in plan a */ X X#define MAXFILEC 2 XEXT int filec INIT(0);`009`009`009/* how many file arguments? */ XEXT char *filearg[MAXFILEC]; XEXT bool ok_to_create_file INIT(FALSE); XEXT char *bestguess INIT(Nullch);`009/* guess at correct filename */ X XEXT char *outname INIT(Nullch); XEXT char rejname[128]; X XEXT char *origext INIT(Nullch); XEXT char *origprae INIT(Nullch); X XEXT char TMPOUTNAME[] INIT("/tmp/patchoXXXXXX"); VEXT char TMPINNAME[] INIT("/tmp/patchiXXXXXX");`009/* might want /usr/tmp her Xe*/ XEXT char TMPREJNAME[] INIT("/tmp/patchrXXXXXX"); XEXT char TMPPATNAME[] INIT("/tmp/patchpXXXXXX"); XEXT bool toutkeep INIT(FALSE); XEXT bool trejkeep INIT(FALSE); X XEXT LINENUM last_offset INIT(0); X#ifdef DEBUGGING XEXT int debug INIT(0); X#endif XEXT LINENUM maxfuzz INIT(2); XEXT bool force INIT(FALSE); XEXT bool verbose INIT(TRUE); XEXT bool reverse INIT(FALSE); XEXT bool noreverse INIT(FALSE); XEXT bool skip_rest_of_patch INIT(FALSE); XEXT int strippath INIT(957); XEXT bool canonicalize INIT(FALSE); X X#define CONTEXT_DIFF 1 X#define NORMAL_DIFF 2 X#define ED_DIFF 3 X#define NEW_CONTEXT_DIFF 4 XEXT int diff_type INIT(0); X XEXT bool do_defines INIT(FALSE);`009/* patch using ifdef, ifndef, etc. */ XEXT char if_defined[128];`009`009/* #ifdef xyzzy */ XEXT char not_defined[128];`009`009/* #ifndef xyzzy */ XEXT char else_defined[] INIT("#else\n");/* #else */ XEXT char end_defined[128];`009`009/* #endif xyzzy */ X XEXT char *revision INIT(Nullch);`009/* prerequisite revision, if any */ X Xchar *malloc(); Xchar *realloc(); Xchar *strcpy(); Xchar *strcat(); Xlong atol(); Xlong lseek(); Xchar *mktemp(); X#ifdef CHARSPRINTF Xchar *sprintf(); X#else Xint sprintf(); X#endif $ GOSUB UNPACK_FILE $ FILE_IS = "COMMON.VMS_PATCH" $ CHECKSUM_IS = 1008762027 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X*** common.h_unix X--- common.h X************** X*** 55,60 X #define CHECKOUT "co -l %s" X X #ifdef FLEXFILENAMES X #define ORIGEXT ".orig" X #define REJEXT ".rej" X #else X--- 55,64 ----- X #define CHECKOUT "co -l %s" X X #ifdef FLEXFILENAMES X+ #ifdef VMS X+ #define ORIGEXT "_orig" X+ #define REJEXT "_rej" X+ #else X #define ORIGEXT ".orig" X #define REJEXT ".rej" X #endif /* VMS */ X************** X*** 57,62 X #ifdef FLEXFILENAMES X #define ORIGEXT ".orig" X #define REJEXT ".rej" X #else X #define ORIGEXT "`126" X #define REJEXT "#" X--- 61,67 ----- X #else X #define ORIGEXT ".orig" X #define REJEXT ".rej" X+ #endif /* VMS */ X #else X #define ORIGEXT "`126" X #define REJEXT "#" X************** X*** 111,116 X EXT char *origext INIT(Nullch); X EXT char *origprae INIT(Nullch); X X EXT char TMPOUTNAME[] INIT("/tmp/patchoXXXXXX"); V EXT char TMPINNAME[] INIT("/tmp/patchiXXXXXX");`009/* might want /usr/tmp h -+-+-+-+-+ End of part 1 +-+-+-+-+-