[comp.bugs.misc] a small enhancement to PATCH

greim@sbsvax.UUCP (Michael Greim) (06/22/88)

Hello,

I have made a change to my copy of PATCH recently. I am posting
it as it might be interesting to other people as well.

This is *not* a bug fix, but rather an enhancement.

Reason:
	I am running PATCH on a SYS3 based machine. The filesystem
	allows filenames up to 14 characters long.
	When I apply patches, the old file will be moved to fileExt, where
	Ext is either '.orig' or a user supplied extension. If file had
	a long name some file might get overwritten. PATCH uses a clever
	routine to produce unique orig-file-names, but it can be confusing to
	figure out later, which is the orig-file of which file.
	I added an option '-B prefix' with which the user can specify
	a prefix to be added to the orig-file. A sideeffect is that
	you can specify '-B bak01/' and the orig-file will be put in
	the (existing) directory bak01.

Context Diff:
	apply the following context diff to patch 2.0.1.4, patchlevel 8
	

*** common.h.old	Tue May 31 13:19:52 1988
--- common.h	Tue May 31 13:18:06 1988
***************
*** 95,100 ****
--- 95,101 ----
  EXT char rejname[128];
  
  EXT char *origext INIT(Nullch);
+ EXT char *origprae INIT(Nullch);
  
  EXT char TMPOUTNAME[] INIT("/tmp/patchoXXXXXX");
  EXT char TMPINNAME[] INIT("/tmp/patchiXXXXXX");	/* might want /usr/tmp here */
*** patch.c.old	Tue May 31 13:20:15 1988
--- patch.c	Tue May 31 13:18:09 1988
***************
*** 366,371 ****
--- 366,375 ----
  		origext = savestr(Argv[1]);
  		Argc--,Argv++;
  		break;
+ 	    case 'B':
+ 		origprae = savestr(Argv[1]);
+ 		Argc--,Argv++;
+ 		break;
  	    case 'c':
  		diff_type = CONTEXT_DIFF;
  		break;
*** patch.man.old	Tue May 31 13:23:24 1988
--- patch.man	Mon May  2 11:57:13 1988
***************
*** 213,218 ****
--- 213,224 ----
  causes the next argument to be interpreted as the backup extension, to be
  used in place of \*(L".orig\*(R".
  .TP 5
+ .B \-B
+ causes the next argument to be interpreted as a prefix to the backup file
+ name. If this argument is specified any argument from -b will be ignored.
+ This argument is an extension to Larry Wall's patch v2.0.1.4, patchlevel 8,
+ made by M. Greim (greim@sbsvax.uucp).
+ .TP 5
  .B \-c
  forces
  .I patch
*** util.c.old	Tue May 31 13:20:31 1988
--- util.c	Tue May 31 13:18:11 1988
***************
*** 31,38 ****
  	return 0;
      }
  
!     Strcpy(bakname, to);
!     Strcat(bakname, origext?origext:ORIGEXT);
      if (stat(to, &filestat) >= 0) {	/* output file exists */
  	dev_t to_device = filestat.st_dev;
  	ino_t to_inode  = filestat.st_ino;
--- 31,43 ----
  	return 0;
      }
  
! 	if (origprae) {
! 		Strcpy (bakname, origprae);
!     	Strcat(bakname, to);
! 	} else {
!    		Strcpy(bakname, to);
!     	Strcat(bakname, origext?origext:ORIGEXT);
! 	}
      if (stat(to, &filestat) >= 0) {	/* output file exists */
  	dev_t to_device = filestat.st_dev;
  	ino_t to_inode  = filestat.st_ino;


Absorb, apply and enjoy,
		Michael


-- 
+------------------------------------------------------------------------------+
| UUCP:  ...!uunet!unido!sbsvax!greim   | Michael T. Greim                     |
|        or greim@sbsvax.UUCP           | Universitaet des Saarlandes          |
| CSNET: greim%sbsvax.uucp@Germany.CSnet| FB 10 - Informatik (Dept. of CS)     |
| ARPA:  greim%sbsvax.uucp@uunet.UU.NET | Bau 36, Im Stadtwald 15              |
| Phone: +49 681 302 2434               | D-6600 Saarbruecken 11, West Germany |
+------------------------------------------------------------------------------+
| # include <disclaimers/std.h>                                                |
+------------------------------------------------------------------------------+