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