stephen@dcl-cs.UUCP (Stephen J. Muir) (06/16/85)
#!/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@dutesta.UUCP (John Nellen) X rhott@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@ucl-cs | Post: University of Lancaster, JANET: stephen@uk.ac.lancs.comp | Department of Computing, Phone: +44 524 65201 Ext. 4599 | Bailrigg, Lancaster, UK. Project:Alvey ECLIPSE Distribution | LA1 4YR