Bed version 1 patch #1

Stephen J. Muir stephen at dcl-cs.UUCP
Sun Jun 16 18:21:14 AEST 1985


#!/bin/sh
echo 'Start of pack.out, part 01 of 01:'
echo 'x - patchlevel'
sed 's/^X//' > patchlevel << '/'
XPatch #: 0
/
echo 'x - patch1'
sed 's/^X//' > patch1 << '/'
XSystem: Bed version 1
XPatch #: 1
XPriority: LOW
XSubject: fails to compile on non BSD systems
XFrom:	john at dutesta.UUCP (John Nellen)
X	rhott at nswc-oas.ARPA (Bob Hott)
X
XDescription:
X	If this program is compiled on SYS V it fails with an undefined
X	include file, undefined constants and system calls.
X
XFix:
X	Run the command "patch < thisfile".
X	If patch indicates that "bed.c" is the wrong version, you may need
X	to apply one or more previous patches, or the patch may already
X	have been applied.  See the file "bed.c" to find out what has or
X	has not been applied.  In any event, don't continue with the patch.
X
XIndex: patchlevel
XPrereq: 0
X1c1
X< Patch #: 0
X---
X> Patch #: 1
X
X*** bed.c.old	Sat Jun 15 19:00:39 1985
X--- bed.c	Sat Jun 15 18:57:25 1985
X***************
X*** 1,5
X  /* Written by Stephen J. Muir, Computing Dept., Lancaster University */
X  
X  # include <sys/types.h>
X  # include <sys/stat.h>
X  # include <sys/file.h>
X
X--- 1,13 -----
X  /* Written by Stephen J. Muir, Computing Dept., Lancaster University */
X  
X+ /* version 1.0
X+  * release date 4th June 1985
X+  *
X+  * patch date 15th June 1985
X+  * changed to run on non-BSD systems
X+  * added 'v' command
X+  */
X+ 
X  # include <sys/types.h>
X  # include <sys/stat.h>
X  # ifdef BSD
X***************
X*** 2,7
X  
X  # include <sys/types.h>
X  # include <sys/stat.h>
X  # include <sys/file.h>
X  # include <stdio.h>
X  # include <signal.h>
X
X--- 10,16 -----
X  
X  # include <sys/types.h>
X  # include <sys/stat.h>
X+ # ifdef BSD
X  # include <sys/file.h>
X  # endif BSD
X  # include <stdio.h>
X***************
X*** 3,8
X  # include <sys/types.h>
X  # include <sys/stat.h>
X  # include <sys/file.h>
X  # include <stdio.h>
X  # include <signal.h>
X  
X
X--- 12,18 -----
X  # include <sys/stat.h>
X  # ifdef BSD
X  # include <sys/file.h>
X+ # endif BSD
X  # include <stdio.h>
X  # include <signal.h>
X  
X***************
X*** 8,14
X  
X  extern char	*rindex (), *mktemp (), *getenv (), *getcom (), *getpar ();
X  
X! char	*version = "Bed version 1.0\n";
X  
X  char	*filename, *editor, *ap, abuf [32],
X  	*tempdata = "DbedXXXXXX", *temptext = "TbedXXXXXX";
X
X--- 18,24 -----
X  
X  extern char	*rindex (), *mktemp (), *getenv (), *getcom (), *getpar ();
X  
X! char	*version = "Bed version 1.1\n";
X  
X  char	*filename, *editor, *ap, abuf [32],
X  	*tempdata = "DbedXXXXXX", *temptext = "TbedXXXXXX";
X***************
X*** 373,380
X  	}
X  
X  copyorig ()
X! 	{ lseek (ofd, 0, 0);
X! 	  lseek (dfd, 0, 0);
X  	  ftruncate (dfd, 0);
X  	  while ((count = read (ofd, (char *)buf, sizeof (buf))) > 0)
X  		if (write (dfd, (char *)buf, count) != count)
X
X--- 383,392 -----
X  	}
X  
X  copyorig ()
X! 	{
X! # ifdef BSD
X! 	  lseek (ofd, 0, L_SET);
X! 	  lseek (dfd, 0, L_SET);
X  	  ftruncate (dfd, 0);
X  # else BSD
X  	  lseek (ofd, 0, 0);
X***************
X*** 376,381
X  	{ lseek (ofd, 0, 0);
X  	  lseek (dfd, 0, 0);
X  	  ftruncate (dfd, 0);
X  	  while ((count = read (ofd, (char *)buf, sizeof (buf))) > 0)
X  		if (write (dfd, (char *)buf, count) != count)
X  			syserr (tempdata);
X
X--- 388,398 -----
X  	  lseek (ofd, 0, L_SET);
X  	  lseek (dfd, 0, L_SET);
X  	  ftruncate (dfd, 0);
X+ # else BSD
X+ 	  lseek (ofd, 0, 0);
X+ 	  lseek (dfd, 0, 0);
X+ 	  close (creat (tempdata, 0));
X+ # endif BSD
X  	  while ((count = read (ofd, (char *)buf, sizeof (buf))) > 0)
X  		if (write (dfd, (char *)buf, count) != count)
X  			syserr (tempdata);
X***************
X*** 421,426
X  	  }
X  	  if ((tfd = fopen (temptext, "w+")) == NULL)
X  		syserr (temptext);
X  	  lseek (dfd, 0, 0);
X  	  width = 0;
X  	  fstat (dfd, &status);
X
X--- 438,446 -----
X  	  }
X  	  if ((tfd = fopen (temptext, "w+")) == NULL)
X  		syserr (temptext);
X+ # ifdef BSD
X+ 	  lseek (dfd, 0, L_SET);
X+ # else BSD
X  	  lseek (dfd, 0, 0);
X  # endif BSD
X  	  width = 0;
X***************
X*** 422,427
X  	  if ((tfd = fopen (temptext, "w+")) == NULL)
X  		syserr (temptext);
X  	  lseek (dfd, 0, 0);
X  	  width = 0;
X  	  fstat (dfd, &status);
X  	  printf ("Preparing for edit.\n");
X
X--- 442,448 -----
X  	  lseek (dfd, 0, L_SET);
X  # else BSD
X  	  lseek (dfd, 0, 0);
X+ # endif BSD
X  	  width = 0;
X  	  fstat (dfd, &status);
X  	  printf ("Preparing for edit.\n");
X***************
X*** 441,447
X  	  fstat (fileno (tfd), &status);
X  	  if (status.st_mtime != t_mtime)
X  	  { fseek (tfd, 0, 0);
X! 	    lseek (dfd, 0, 0);
X  	    ftruncate (dfd, 0);
X  	    printf ("Copying back changes.\n");
X  	    if ((i = (*infunc) ()) < 0)
X
X--- 462,469 -----
X  	  fstat (fileno (tfd), &status);
X  	  if (status.st_mtime != t_mtime)
X  	  { fseek (tfd, 0, 0);
X! # ifdef BSD
X! 	    lseek (dfd, 0, L_SET);
X  	    ftruncate (dfd, 0);
X  # else BSD
X  	    lseek (dfd, 0, 0);
X***************
X*** 443,448
X  	  { fseek (tfd, 0, 0);
X  	    lseek (dfd, 0, 0);
X  	    ftruncate (dfd, 0);
X  	    printf ("Copying back changes.\n");
X  	    if ((i = (*infunc) ()) < 0)
X  	    { perror (tempdata);
X
X--- 465,474 -----
X  # ifdef BSD
X  	    lseek (dfd, 0, L_SET);
X  	    ftruncate (dfd, 0);
X+ # else BSD
X+ 	    lseek (dfd, 0, 0);
X+ 	    close (creat (tempdata, 0));
X+ # endif BSD
X  	    printf ("Copying back changes.\n");
X  	    if ((i = (*infunc) ()) < 0)
X  	    { perror (tempdata);
X***************
X*** 520,525
X  	  }
X  	  else
X  		filename = *argv;
X  	  if ((ofd = open (filename, O_RDWR, 0)) == -1)
X  		syserr (*argv);
X  	  if (flock (ofd, LOCK_EX | LOCK_NB) == -1)
X
X--- 546,552 -----
X  	  }
X  	  else
X  		filename = *argv;
X+ # ifdef BSD
X  	  if ((ofd = open (filename, O_RDWR, 0)) == -1)
X  # else BSD
X  	  if ((ofd = open (filename, 2)) == -1)
X***************
X*** 521,526
X  	  else
X  		filename = *argv;
X  	  if ((ofd = open (filename, O_RDWR, 0)) == -1)
X  		syserr (*argv);
X  	  if (flock (ofd, LOCK_EX | LOCK_NB) == -1)
X  	  { fprintf (stderr, "%s: waiting for lock to be released\n", *argv);
X
X--- 548,556 -----
X  		filename = *argv;
X  # ifdef BSD
X  	  if ((ofd = open (filename, O_RDWR, 0)) == -1)
X+ # else BSD
X+ 	  if ((ofd = open (filename, 2)) == -1)
X+ # endif BSD
X  		syserr (*argv);
X  # ifdef BSD
X  	  if (flock (ofd, LOCK_EX | LOCK_NB) == -1)
X***************
X*** 522,527
X  		filename = *argv;
X  	  if ((ofd = open (filename, O_RDWR, 0)) == -1)
X  		syserr (*argv);
X  	  if (flock (ofd, LOCK_EX | LOCK_NB) == -1)
X  	  { fprintf (stderr, "%s: waiting for lock to be released\n", *argv);
X  	    flock (ofd, LOCK_EX);
X
X--- 552,558 -----
X  	  if ((ofd = open (filename, 2)) == -1)
X  # endif BSD
X  		syserr (*argv);
X+ # ifdef BSD
X  	  if (flock (ofd, LOCK_EX | LOCK_NB) == -1)
X  	  { fprintf (stderr, "%s: waiting for lock to be released\n", *argv);
X  	    flock (ofd, LOCK_EX);
X***************
X*** 526,531
X  	  { fprintf (stderr, "%s: waiting for lock to be released\n", *argv);
X  	    flock (ofd, LOCK_EX);
X  	  }
X  	  fstat (ofd, &status);
X  	  if ((status.st_mode & S_IFMT) != S_IFREG)
X  	  { printf ("%s: not regular file\n", *argv);
X
X--- 557,565 -----
X  	  { fprintf (stderr, "%s: waiting for lock to be released\n", *argv);
X  	    flock (ofd, LOCK_EX);
X  	  }
X+ # else BSD
X+ 	  /* too bad locking isn't present on most systems - oh well */
X+ # endif BSD
X  	  fstat (ofd, &status);
X  	  if ((status.st_mode & S_IFMT) != S_IFREG)
X  	  { printf ("%s: not regular file\n", *argv);
X***************
X*** 535,540
X  	  umask (0);
X  	  mktemp (tempdata);
X  	  mktemp (temptext);
X  	  if ((dfd = open (tempdata, O_RDWR | O_CREAT, status.st_mode)) == -1)
X  		syserr (tempdata);
X  	  if ((editor = getenv ("VISUAL")) == 0 &&
X
X--- 569,575 -----
X  	  umask (0);
X  	  mktemp (tempdata);
X  	  mktemp (temptext);
X+ # ifdef BSD
X  	  if ((dfd = open (tempdata, O_RDWR | O_CREAT, status.st_mode)) == -1)
X  # else BSD
X  	  if ((dfd = creat (tempdata, status.st_mode)) == -1 ||
X***************
X*** 536,541
X  	  mktemp (tempdata);
X  	  mktemp (temptext);
X  	  if ((dfd = open (tempdata, O_RDWR | O_CREAT, status.st_mode)) == -1)
X  		syserr (tempdata);
X  	  if ((editor = getenv ("VISUAL")) == 0 &&
X  	      (editor = getenv ("EDITOR")) == 0
X
X--- 571,582 -----
X  	  mktemp (temptext);
X  # ifdef BSD
X  	  if ((dfd = open (tempdata, O_RDWR | O_CREAT, status.st_mode)) == -1)
X+ # else BSD
X+ 	  if ((dfd = creat (tempdata, status.st_mode)) == -1 ||
X+ 	      close (dfd) == -1 ||
X+ 	      (dfd = open (tempdata, 2)) == -1
X+ 	     )
X+ # endif BSD
X  		syserr (tempdata);
X  	  if ((editor = getenv ("VISUAL")) == 0 &&
X  	      (editor = getenv ("EDITOR")) == 0
X***************
X*** 550,555
X  		    !quest ("File has not been modified; are you sure? ")
X  		   )
X  			break;
X  		if (rename (tempdata, filename) == -1)
X  		{ perror ("rename()");
X  		  fprintf (stderr, "new file is in \"%s\"\n", tempdata);
X
X--- 591,597 -----
X  		    !quest ("File has not been modified; are you sure? ")
X  		   )
X  			break;
X+ # ifdef BSD
X  		if (rename (tempdata, filename) == -1)
X  # else BSD
X  		if (unlink (filename) == -1 ||
X***************
X*** 551,556
X  		   )
X  			break;
X  		if (rename (tempdata, filename) == -1)
X  		{ perror ("rename()");
X  		  fprintf (stderr, "new file is in \"%s\"\n", tempdata);
X  		  exit (1);
X
X--- 593,604 -----
X  			break;
X  # ifdef BSD
X  		if (rename (tempdata, filename) == -1)
X+ # else BSD
X+ 		if (unlink (filename) == -1 ||
X+ 		    link (tempdata, filename) == -1 ||
X+ 		    unlink (tempdata) == -1
X+ 		   )
X+ # endif BSD
X  		{ perror ("rename()");
X  		  fprintf (stderr, "new file is in \"%s\"\n", tempdata);
X  		  exit (1);
X***************
X*** 583,588
X  			reclen = atoi (getpar ("record length? "))
X  		       );
X  		break;
X  	      case 'h':
X  	      case '?':
X  		printf ("The following commands are available:\n");
X
X--- 631,639 -----
X  			reclen = atoi (getpar ("record length? "))
X  		       );
X  		break;
X+ 	      case 'v':
X+ 		printf (version);
X+ 		break;
X  	      case 'h':
X  	      case '?':
X  		printf ("The following commands are available:\n");
X***************
X*** 596,601
X  		printf ("e - edit\n");
X  		printf ("w - write out file and quit\n");
X  		printf ("q - quit\n");
X  		printf ("radix = %d, bits = %d,", base, bits);
X  		printf (" length of record = %d bytes%s.\n",
X  			reclen,
X
X--- 647,653 -----
X  		printf ("e - edit\n");
X  		printf ("w - write out file and quit\n");
X  		printf ("q - quit\n");
X+ 		printf ("v - print version\n");
X  		printf ("radix = %d, bits = %d,", base, bits);
X  		printf (" length of record = %d bytes%s.\n",
X  			reclen,
X*** Makefile.old	Sat Jun 15 19:00:49 1985
X--- Makefile	Sat Jun 15 05:06:26 1985
X***************
X*** 2,7
X  DESTMAN=/usr/man/mann/bed.n
X  CFLAGS=-O
X  OBJECTS=bed.o getcom.o quest.o
X  # The type whose width is 1 byte.
X  W8=char
X  # The type whose width is 2 bytes.
X
X--- 2,9 -----
X  DESTMAN=/usr/man/mann/bed.n
X  CFLAGS=-O
X  OBJECTS=bed.o getcom.o quest.o
X+ # Comment out the next line for non BSD systems.
X+ SYSTEM=-DBSD
X  # The type whose width is 1 byte.
X  W8=char
X  # The type whose width is 2 bytes.
X***************
X*** 16,22
X  
X  bed.o:	bed.c
X  	cc -c ${CFLAGS} -DW8=${W8} -DW16=${W16} -DW32=${W32} \
X! 	-DEDITOR=\"${EDITOR}\" bed.c
X  
X  install:bed
X  	install -s bed ${DESTBIN}
X
X--- 18,24 -----
X  
X  bed.o:	bed.c
X  	cc -c ${CFLAGS} -DW8=${W8} -DW16=${W16} -DW32=${W32} \
X! 	${SYSTEM} -DEDITOR=\"${EDITOR}\" bed.c
X  
X  install:bed
X  	install -s bed ${DESTBIN}
X*** bed.n.old	Sat Jun 15 19:01:00 1985
X--- bed.n	Sat Jun 15 04:57:19 1985
X***************
X*** 1,4
X! .TH BED 1 "4 June 1985"
X  .SH NAME
X  bed \- an editor for binary files
X  .SH SYNOPSIS
X
X--- 1,4 -----
X! .TH BED 1 "15 June 1985"
X  .SH NAME
X  bed \- an editor for binary files
X  .SH SYNOPSIS
X***************
X*** 68,73
X  .TP 8
X  q
X  Exits without updating the original.
X  .SH NOTES
X  The user must have read/write access to the original file
X  .I and
X
X--- 68,76 -----
X  .TP 8
X  q
X  Exits without updating the original.
X+ .TP 8
X+ v
X+ Prints version number.
X  .SH NOTES
X  The user must have read/write access to the original file
X  .I and
/
echo 'Part 01 of pack.out complete.'
exit
-- 
UUCP:	...!seismo!mcvax!ukc!icdoc!dcl-cs!stephen
DARPA:	stephen%lancs.comp at ucl-cs	| Post: University of Lancaster,
JANET:	stephen at uk.ac.lancs.comp	|	Department of Computing,
Phone:	+44 524 65201 Ext. 4599		|	Bailrigg, Lancaster, UK.
Project:Alvey ECLIPSE Distribution	|	LA1 4YR



More information about the Comp.sources.bugs mailing list