Interarch dump/restore diffs

David P. Zimmerman dpz at pilot.njin.net
Tue Aug 30 11:53:26 AEST 1988


[ Mailers give me headaches.  Big ones.  About {--yo--} big. ]

I've gotten a number of requests for my patches to dump and restore to
allow reading and writing of 4.3BSD format dump tapes on Suns,
Pyramids, and Celerities.  Problem is that I can't get back to some of
the people.  So, here's my diffs to the stock 4.3BSD dump and restore.

Note that I don't have Dave Curry's live dump mods in this - I decided
against using them when people started screaming about not being able
to restore some log files....  I suppose that with a bit of work one
could implement an exceptions list or something to dump particular
'changing' files.

						David

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  dump dump/Makefile.PYRAMID.diff dump/Makefile.SUNOS4.diff
#   dump/Makefile.diff dump/README dump/dump.5.diff dump/dump.h.diff
#   dump/dumprestore.h.diff dump/dumprmt.c.diff
#   dump/dumptraverse.c.diff restore restore/Makefile.SUNOS4.diff
#   restore/Makefile.diff restore/README restore/dirs.c.diff
#   restore/dumprestore.h.diff restore/interactive.c.diff
#   restore/main.c.diff restore/opendir.c restore/restore.h.diff
#   restore/tape.c.diff restore/telldir.c
# Wrapped by dpz at pilot.njin.net on Wed Aug 17 22:03:32 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test ! -d dump ; then
    echo shar: Creating directory \"dump\"
    mkdir dump
fi
if test -f dump/Makefile.PYRAMID.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"dump/Makefile.PYRAMID.diff\"
else
echo shar: Extracting \"dump/Makefile.PYRAMID.diff\" \(957 characters\)
sed "s/^X//" >dump/Makefile.PYRAMID.diff <<'END_OF_dump/Makefile.PYRAMID.diff'
X*** Makefile.ORIG	Sat Jan  9 16:27:00 1988
X--- Makefile.PYRAMID	Tue Mar  1 17:11:01 1988
X***************
X*** 31,37 ****
X  ROBJS = dumpitime.o dumprmain.o dumpoptr.o \
X  	dumprmt.o dumprtape.o dumptraverse.o unctime.o
X  
X! DFLAGS =
X  CFLAGS = -O $(DFLAGS)
X  
X  all: dump rdump
X--- 31,37 ----
X  ROBJS = dumpitime.o dumprmain.o dumpoptr.o \
X  	dumprmt.o dumprtape.o dumptraverse.o unctime.o
X  
X! DFLAGS = -DPYRAMID
X  CFLAGS = -O $(DFLAGS)
X  
X  all: dump rdump
X***************
X*** 66,70 ****
X  	pr $(PSRCS) | lpr
X  
X  $(OBJS): dump.h /usr/include/sys/param.h
X! $(OBJS): /usr/include/sys/fs.h /usr/include/sys/inode.h
X  $(OBJS): /usr/include/protocols/dumprestore.h /usr/include/sys/stat.h
X--- 66,71 ----
X  	pr $(PSRCS) | lpr
X  
X  $(OBJS): dump.h /usr/include/sys/param.h
X! $(OBJS): /usr/include/ufs/fs.h /usr/include/ufs/inode.h
X! $(OBJS): /usr/include/sys/time.h /usr/include/sys/vnode.h
X  $(OBJS): /usr/include/protocols/dumprestore.h /usr/include/sys/stat.h
END_OF_dump/Makefile.PYRAMID.diff
if test 957 -ne `wc -c <dump/Makefile.PYRAMID.diff`; then
    echo shar: \"dump/Makefile.PYRAMID.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f dump/Makefile.SUNOS4.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"dump/Makefile.SUNOS4.diff\"
else
echo shar: Extracting \"dump/Makefile.SUNOS4.diff\" \(1347 characters\)
sed "s/^X//" >dump/Makefile.SUNOS4.diff <<'END_OF_dump/Makefile.SUNOS4.diff'
X*** Makefile.ORIG	Sat Jan  9 16:27:00 1988
X--- Makefile.SUNOS4	Mon Jul  4 01:56:40 1988
X***************
X*** 31,46 ****
X  ROBJS = dumpitime.o dumprmain.o dumpoptr.o \
X  	dumprmt.o dumprtape.o dumptraverse.o unctime.o
X  
X! DFLAGS =
X  CFLAGS = -O $(DFLAGS)
X  
X  all: dump rdump
X  
X  rdump:	$(ROBJS)
X! 	$(CC) $(CFLAGS) $(ROBJS) -o rdump
X  
X  dump:	$(OBJS)
X! 	$(CC) $(CFLAGS) $(OBJS) -o dump
X  
X  install: rdump dump
X  	install -s -m 6755 -g tty rdump $(DESTDIR)/etc
X--- 31,46 ----
X  ROBJS = dumpitime.o dumprmain.o dumpoptr.o \
X  	dumprmt.o dumprtape.o dumptraverse.o unctime.o
X  
X! DFLAGS = -DSUNOS4
X  CFLAGS = -O $(DFLAGS)
X  
X  all: dump rdump
X  
X  rdump:	$(ROBJS)
X! 	$(CC) $(CFLAGS) $(ROBJS) -Bstatic -o rdump
X  
X  dump:	$(OBJS)
X! 	$(CC) $(CFLAGS) $(OBJS) -Bstatic -o dump
X  
X  install: rdump dump
X  	install -s -m 6755 -g tty rdump $(DESTDIR)/etc
X***************
X*** 66,70 ****
X  	pr $(PSRCS) | lpr
X  
X  $(OBJS): dump.h /usr/include/sys/param.h
X! $(OBJS): /usr/include/sys/fs.h /usr/include/sys/inode.h
X  $(OBJS): /usr/include/protocols/dumprestore.h /usr/include/sys/stat.h
X--- 66,71 ----
X  	pr $(PSRCS) | lpr
X  
X  $(OBJS): dump.h /usr/include/sys/param.h
X! $(OBJS): /usr/include/ufs/fs.h /usr/include/ufs/inode.h
X! $(OBJS): /usr/include/sys/time.h /usr/include/sys/vnode.h
X  $(OBJS): /usr/include/protocols/dumprestore.h /usr/include/sys/stat.h
END_OF_dump/Makefile.SUNOS4.diff
if test 1347 -ne `wc -c <dump/Makefile.SUNOS4.diff`; then
    echo shar: \"dump/Makefile.SUNOS4.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f dump/Makefile.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"dump/Makefile.diff\"
else
echo shar: Extracting \"dump/Makefile.diff\" \(581 characters\)
sed "s/^X//" >dump/Makefile.diff <<'END_OF_dump/Makefile.diff'
X*** Makefile.ORIG	Sat Jan  9 16:27:00 1988
X--- Makefile	Sat Jan  9 16:29:32 1988
X***************
X*** 66,70 ****
X  	pr $(PSRCS) | lpr
X  
X  $(OBJS): dump.h /usr/include/sys/param.h
X! $(OBJS): /usr/include/sys/fs.h /usr/include/sys/inode.h
X  $(OBJS): /usr/include/protocols/dumprestore.h /usr/include/sys/stat.h
X--- 66,71 ----
X  	pr $(PSRCS) | lpr
X  
X  $(OBJS): dump.h /usr/include/sys/param.h
X! $(OBJS): /usr/include/ufs/fs.h /usr/include/ufs/inode.h
X! $(OBJS): /usr/include/sys/time.h /usr/include/sys/vnode.h
X  $(OBJS): /usr/include/protocols/dumprestore.h /usr/include/sys/stat.h
END_OF_dump/Makefile.diff
if test 581 -ne `wc -c <dump/Makefile.diff`; then
    echo shar: \"dump/Makefile.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f dump/README -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"dump/README\"
else
echo shar: Extracting \"dump/README\" \(1054 characters\)
sed "s/^X//" >dump/README <<'END_OF_dump/README'
Xdpz's changes to the standard 4.3BSD dump for compatible Sun SunOS
X3.x, Sun SunOS 4.0, Pyramid OSx4.1, and Celerity 3.4 dumps:
X
X	- nuking setsockopt in dumprmt.c
X	- replacing various #include files with equivalents
X
X	- compile on Pyramid with -DPYRAMID in Makefile
X	- adding code to dump a Pyramid symbolic link out in standard
X	  4.3 style (on a Pyramid, the text of the link resides within
X	  the inode's direct block pointer area; in 4.3, the text of
X	  the link is held in disk blocks)
X
X	- compile on Sun SunOS 4.0 with -DSUNOS4 in Makefile, and link
X	  statically
X	- generalizing "struct direct" to a typedef, since SunOS 4.0
X	  has a field in it that doesn't exist on disk
X
X	- adding/modifying /usr/include/protocols/dumprestore.h:
X		- to have TP_BSIZE equal the largest disk block size
X		  across all three architectures (2048 in this case)
X		- adjusting NTREC and HIGHDENSITYTREC down to balance
X		  my higher TP_BSIZE
X		- adjusting DUMPOUTFMT and DUMPINFMT to have the same
X		  (highest) number for %XXs
X		- adding CARTRIDGETREC for some reason
END_OF_dump/README
if test 1054 -ne `wc -c <dump/README`; then
    echo shar: \"dump/README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f dump/dump.5.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"dump/dump.5.diff\"
else
echo shar: Extracting \"dump/dump.5.diff\" \(856 characters\)
sed "s/^X//" >dump/dump.5.diff <<'END_OF_dump/dump.5.diff'
X*** dump.5.ORIG	Sat Jan  9 19:07:11 1988
X--- dump.5	Sun Jul  3 23:09:10 1988
X***************
X*** 35,41 ****
X  is:
X  .PP
X  .nf
X! #define NTREC   	10
X  #define MLEN    	16
X  #define MSIZ    	4096
X  
X--- 35,41 ----
X  is:
X  .PP
X  .nf
X! #define NTREC   	5
X  #define MLEN    	16
X  #define MSIZ    	4096
X  
X***************
X*** 68,76 ****
X  	time_t		id_ddate;
X  };
X  
X! #define	DUMPOUTFMT	"%-16s %c %s"		/* for printf */
X  						/* name, incno, ctime(date) */
X! #define	DUMPINFMT	"%16s %c %[^\en]\en"	/* inverse for scanf */
X  .fi
X  .PP
X  NTREC is the number of 1024 byte records in a physical
X--- 68,76 ----
X  	time_t		id_ddate;
X  };
X  
X! #define	DUMPOUTFMT	"%-22s %c %s"		/* for printf */
X  						/* name, incno, ctime(date) */
X! #define	DUMPINFMT	"%22s %c %[^\en]\en"	/* inverse for scanf */
X  .fi
X  .PP
X  NTREC is the number of 1024 byte records in a physical
END_OF_dump/dump.5.diff
if test 856 -ne `wc -c <dump/dump.5.diff`; then
    echo shar: \"dump/dump.5.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f dump/dump.h.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"dump/dump.h.diff\"
else
echo shar: Extracting \"dump/dump.h.diff\" \(1009 characters\)
sed "s/^X//" >dump/dump.h.diff <<'END_OF_dump/dump.h.diff'
X*** dump.h.ORIG	Sat Jan  9 16:27:01 1988
X--- dump.h	Tue Jul 12 16:52:56 1988
X***************
X*** 14,25 ****
X  #include <ctype.h>
X  #include <sys/param.h>
X  #include <sys/stat.h>
X! #include <sys/fs.h>
X! #include <sys/inode.h>
X  #include <protocols/dumprestore.h>
X  #include <sys/dir.h>
X  #include <utmp.h>
X- #include <sys/time.h>
X  #include <signal.h>
X  #include <fstab.h>
X  
X--- 14,38 ----
X  #include <ctype.h>
X  #include <sys/param.h>
X  #include <sys/stat.h>
X! #include <ufs/fs.h>
X! #include <sys/time.h>
X! #include <sys/vnode.h>
X! #include <ufs/inode.h>
X  #include <protocols/dumprestore.h>
X  #include <sys/dir.h>
X+ 
X+ #ifdef SUNOS4
X+ typedef struct {
X+ 	u_long	d_fileno;		/* file number of entry */
X+ 	u_short	d_reclen;		/* length of this record */
X+ 	u_short	d_namlen;		/* length of string in d_name */
X+ 	char	d_name[MAXNAMLEN + 1];	/* name (up to MAXNAMLEN + 1) */
X+ } UNIXDIRECT;
X+ #else
X+ typedef struct direct UNIXDIRECT;
X+ #endif
X+ 
X  #include <utmp.h>
X  #include <signal.h>
X  #include <fstab.h>
X  
END_OF_dump/dump.h.diff
if test 1009 -ne `wc -c <dump/dump.h.diff`; then
    echo shar: \"dump/dump.h.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f dump/dumprestore.h.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"dump/dumprestore.h.diff\"
else
echo shar: Extracting \"dump/dumprestore.h.diff\" \(1680 characters\)
sed "s/^X//" >dump/dumprestore.h.diff <<'END_OF_dump/dumprestore.h.diff'
X*** dumprestore.h.ORIG	Mon Apr 18 21:32:40 1988
X--- dumprestore.h	Fri Jun 10 21:53:09 1988
X***************
X*** 13,26 ****
X   * NTREC is the number of TP_BSIZE blocks that are written
X   * in each tape record. HIGHDENSITYTREC is the number of
X   * TP_BSIZE blocks that are written in each tape record on
X!  * 6250 BPI or higher density tapes.
X   *
X   * TP_NINDIR is the number of indirect pointers in a TS_INODE
X   * or TS_ADDR record. Note that it must be a power of two.
X   */
X! #define TP_BSIZE	1024
X! #define NTREC   	10
X! #define HIGHDENSITYTREC	32
X  #define TP_NINDIR	(TP_BSIZE/2)
X  
X  #define TS_TAPE 	1
X--- 13,29 ----
X   * NTREC is the number of TP_BSIZE blocks that are written
X   * in each tape record. HIGHDENSITYTREC is the number of
X   * TP_BSIZE blocks that are written in each tape record on
X!  * 6250 BPI or higher density tapes.  CARTRIDGETREC is the
X!  * number of TP_BSIZE blocks that are written in each tape
X!  * record on cartridge tapes.
X   *
X   * TP_NINDIR is the number of indirect pointers in a TS_INODE
X   * or TS_ADDR record. Note that it must be a power of two.
X   */
X! #define TP_BSIZE	2048
X! #define NTREC   	5
X! #define HIGHDENSITYTREC	16
X! #define CARTRIDGETREC	31
X  #define TP_NINDIR	(TP_BSIZE/2)
X  
X  #define TS_TAPE 	1
X***************
X*** 52,57 ****
X  
X  #define spcl u_spcl.s_spcl
X  
X! #define	DUMPOUTFMT	"%-16s %c %s"		/* for printf */
X  						/* name, incno, ctime(date) */
X! #define	DUMPINFMT	"%16s %c %[^\n]\n"	/* inverse for scanf */
X--- 55,60 ----
X  
X  #define spcl u_spcl.s_spcl
X  
X! #define	DUMPOUTFMT	"%-22s %c %s"		/* for printf */
X  						/* name, incno, ctime(date) */
X! #define	DUMPINFMT	"%22s %c %[^\n]\n"	/* inverse for scanf */
END_OF_dump/dumprestore.h.diff
if test 1680 -ne `wc -c <dump/dumprestore.h.diff`; then
    echo shar: \"dump/dumprestore.h.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f dump/dumprmt.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"dump/dumprmt.c.diff\"
else
echo shar: Extracting \"dump/dumprmt.c.diff\" \(1034 characters\)
sed "s/^X//" >dump/dumprmt.c.diff <<'END_OF_dump/dumprmt.c.diff'
X*** dumprmt.c.ORIG	Sat Jan  9 16:27:01 1988
X--- dumprmt.c	Sun Jan 10 21:22:29 1988
X***************
X*** 12,18 ****
X  #include <sys/mtio.h>
X  #include <sys/ioctl.h>
X  #include <sys/socket.h>
X! #include <sys/inode.h>
X  
X  #include <netinet/in.h>
X  
X--- 12,20 ----
X  #include <sys/mtio.h>
X  #include <sys/ioctl.h>
X  #include <sys/socket.h>
X! #include <sys/time.h>
X! #include <sys/vnode.h>
X! #include <ufs/inode.h>
X  
X  #include <netinet/in.h>
X  
X***************
X*** 69,76 ****
X  		name = pw->pw_name;
X  	rmtape = rcmd(&rmtpeer, sp->s_port, name, name, "/etc/rmt", 0);
X  	size = ntrec * TP_BSIZE;
X! 	while (size > TP_BSIZE &&
X! 	    setsockopt(rmtape, SOL_SOCKET, SO_SNDBUF, &size, sizeof (size)) < 0)
X  		size -= TP_BSIZE;
X  }
X  
X--- 71,81 ----
X  		name = pw->pw_name;
X  	rmtape = rcmd(&rmtpeer, sp->s_port, name, name, "/etc/rmt", 0);
X  	size = ntrec * TP_BSIZE;
X! /*
X! **	while (size > TP_BSIZE &&
X! **	   setsockopt(rmtape, SOL_SOCKET, SO_SNDBUF, &size, sizeof (size)) < 0)
X! */
X! 	while (size > TP_BSIZE)
X  		size -= TP_BSIZE;
X  }
X  
END_OF_dump/dumprmt.c.diff
if test 1034 -ne `wc -c <dump/dumprmt.c.diff`; then
    echo shar: \"dump/dumprmt.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f dump/dumptraverse.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"dump/dumptraverse.c.diff\"
else
echo shar: Extracting \"dump/dumptraverse.c.diff\" \(2227 characters\)
sed "s/^X//" >dump/dumptraverse.c.diff <<'END_OF_dump/dumptraverse.c.diff'
X*** dumptraverse.c.ORIG	Sat Jan  9 16:27:01 1988
X--- dumptraverse.c	Tue Jul 12 16:46:07 1988
X***************
X*** 65,71 ****
X  		return;
X  	nsubdir = 0;
X  	dadded = 0;
X! 	filesize = ip->di_size;
X  	for (i = 0; i < NDADDR; i++) {
X  		if (ip->di_db[i] != 0)
X  			dsrch(ip->di_db[i], dblksize(sblock, ip, i), filesize);
X--- 65,71 ----
X  		return;
X  	nsubdir = 0;
X  	dadded = 0;
X! 	filesize = roundup(ip->di_size, DEV_BSIZE);
X  	for (i = 0; i < NDADDR; i++) {
X  		if (ip->di_db[i] != 0)
X  			dsrch(ip->di_db[i], dblksize(sblock, ip, i), filesize);
X***************
X*** 138,143 ****
X--- 138,158 ----
X  	i = ip->di_mode & IFMT;
X  	if (i == 0) /* free inode */
X  		return;
X+ #ifdef PYRAMID
X+ 	if (i == IFLNK && ip->di_size == 0) {
X+ 	  for (i = NCLNK - 1; i >= 0; i--)
X+ 	    if (size = ip->di_ic.ic_sylinks[i].sy_len) {
X+ 	      spcl.c_dinode.di_size = ip->di_ic.ic_sylinks[i].sy_offset + size;
X+ 	      break;
X+ 	    }
X+ 	  spcl.c_addr[0] = spcl.c_count = 1;
X+ 	  spclrec();
X+ 	  spcl.c_dinode.di_size = -1;
X+ 	  spclrec();
X+ 	  return;
X+ 	}
X+ #endif PYRAMID
X+ 
X  	if ((i != IFDIR && i != IFREG && i != IFLNK) || ip->di_size == 0) {
X  		spclrec();
X  		return;
X***************
X*** 246,251 ****
X--- 261,273 ----
X  		s += *ip++; s += *ip++;
X  	}
X  	spcl.c_checksum = CHECKSUM - s;
X+ 
X+ #ifdef PYRAMID
X+ 	if (spcl.c_dinode.di_size == -1) 
X+ 	  taprec((char *)&spcl.c_dinode.di_db[0]);
X+ 	else
X+ #endif PYRAMID
X+ 
X  	taprec((char *)&spcl);
X  }
X  
X***************
X*** 253,259 ****
X  	daddr_t d;
X  	int size, filesize;
X  {
X! 	register struct direct *dp;
X  	long loc;
X  	char dblk[MAXBSIZE];
X  
X--- 275,281 ----
X  	daddr_t d;
X  	int size, filesize;
X  {
X! 	register UNIXDIRECT *dp;
X  	long loc;
X  	char dblk[MAXBSIZE];
X  
X***************
X*** 263,269 ****
X  		filesize = size;
X  	bread(fsbtodb(sblock, d), dblk, filesize);
X  	for (loc = 0; loc < filesize; ) {
X! 		dp = (struct direct *)(dblk + loc);
X  		if (dp->d_reclen == 0) {
X  			msg("corrupted directory, inumber %d\n", ino);
X  			break;
X--- 285,291 ----
X  		filesize = size;
X  	bread(fsbtodb(sblock, d), dblk, filesize);
X  	for (loc = 0; loc < filesize; ) {
X! 		dp = (UNIXDIRECT *)(dblk + loc);
X  		if (dp->d_reclen == 0) {
X  			msg("corrupted directory, inumber %d\n", ino);
X  			break;
END_OF_dump/dumptraverse.c.diff
if test 2227 -ne `wc -c <dump/dumptraverse.c.diff`; then
    echo shar: \"dump/dumptraverse.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test ! -d restore ; then
    echo shar: Creating directory \"restore\"
    mkdir restore
fi
if test -f restore/Makefile.SUNOS4.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/Makefile.SUNOS4.diff\"
else
echo shar: Extracting \"restore/Makefile.SUNOS4.diff\" \(198 characters\)
sed "s/^X//" >restore/Makefile.SUNOS4.diff <<'END_OF_restore/Makefile.SUNOS4.diff'
X9c9
X< CFLAGS= -O
X---
X> CFLAGS= -O -DSUNOS4
X11a12
X> LDFLAGS=-Bstatic
X19c20
X< 	cc ${LDFLAGS} -o rrestore ${OBJS} rtape.o dumprmt.o
X---
X> 	cc ${LDFLAGS} ${CFLAGS} -o rrestore ${OBJS} rtape.o dumprmt.o
END_OF_restore/Makefile.SUNOS4.diff
if test 198 -ne `wc -c <restore/Makefile.SUNOS4.diff`; then
    echo shar: \"restore/Makefile.SUNOS4.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/Makefile.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/Makefile.diff\"
else
echo shar: Extracting \"restore/Makefile.diff\" \(130 characters\)
sed "s/^X//" >restore/Makefile.diff <<'END_OF_restore/Makefile.diff'
X19c19
X< 	cc ${LDFLAGS} -o rrestore ${OBJS} rtape.o dumprmt.o
X---
X> 	cc ${LDFLAGS} ${CFLAGS} -o rrestore ${OBJS} rtape.o dumprmt.o
END_OF_restore/Makefile.diff
if test 130 -ne `wc -c <restore/Makefile.diff`; then
    echo shar: \"restore/Makefile.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/README -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/README\"
else
echo shar: Extracting \"restore/README\" \(1860 characters\)
sed "s/^X//" >restore/README <<'END_OF_restore/README'
Xdpz's changes to the standard 4.3BSD restore for compatible Sun SunOS
X3.x, Sun SunOS 4.0, Pyramid OSx4.1, and Celerity 3.4 restores:
X
X	- replacing various #include files with equivalents
X	- adding DIRBLKSIZ #define, making it largest DEV_BSIZE of all
X	  architectures
X	- copying DIR struct definition to RST_DIR, changing char
X	  *dd_buf in it to char dd_buf[DIRBLKSIZ], changing all
X	  routines that use DIR to use RST_DIR
X	- copying 4.3 opendir() to rst_4_3_opendir() and changing
X	  appropriate routines to call that instead of opendir()
X	- copying 4.3 telldir() to rst_4_3_telldir(), changing
X	  appropriate routines to call that instead of telldir()
X
X	- compile on Sun SunOS 4.0 with -DSUNOS4 in Makefile and link
X	  statically
X	- generalizing "struct direct" to a typedef, since SunOS 4.0
X	  has a field in it that doesn't exist on disk
X
X	- adding/modifying /usr/include/protocols/dumprestore.h:
X		- have TP_BSIZE equal the largest disk block size
X		  across all three architectures (2048 in this case)
X		- adjusting NTREC and HIGHDENSITYTREC down to balance
X		  my higher TP_BSIZE
X		- adjusting DUMPOUTFMT and DUMPINFMT to have the 
X		  highest number across all three architectures for %XXs
X		- adding CARTRIDGETREC for some reason
X
XFrills:
X	- modifying Makefile so ${CFLAGS} is included in final .o combining
X	- adding Gary Winiger's epoch dump date mod (his comments below)
X	- adding Gary Winiger's interactive.c seg violation mods (cmts below)
X
XFrom: gww at elxsi.UUCP (Gary Winiger)
X
XWhen restore lists the dates the the dump encompases such as with the
X-t option, it will list the epoch date for the from date of a level 0
Xdump.
X
XFrom: gww at elxsi.UUCP (Gary Winiger)
X
XWhen running /etc/restore in interactive mode, any attempt to
Xreference a subdirectory will cause a segmentation violation on
Xsystems that do not permit dereferencing a NULL pointer.
END_OF_restore/README
if test 1860 -ne `wc -c <restore/README`; then
    echo shar: \"restore/README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/dirs.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/dirs.c.diff\"
else
echo shar: Extracting \"restore/dirs.c.diff\" \(7404 characters\)
sed "s/^X//" >restore/dirs.c.diff <<'END_OF_restore/dirs.c.diff'
X*** dirs.c.ORIG	Sat Jan  9 16:27:02 1988
X--- dirs.c	Wed Aug 17 17:39:13 1988
X***************
X*** 43,53 ****
X   */
X  static daddr_t	seekpt;
X  static FILE	*df, *mf;
X! static DIR	*dirp;
X  static char	dirfile[32] = "#";	/* No file */
X  static char	modefile[32] = "#";	/* No file */
X  extern ino_t	search();
X! struct direct 	*rst_readdir();
X  extern void 	rst_seekdir();
X  
X  /*
X--- 43,54 ----
X   */
X  static daddr_t	seekpt;
X  static FILE	*df, *mf;
X! static RST_DIR	*dirp;
X  static char	dirfile[32] = "#";	/* No file */
X  static char	modefile[32] = "#";	/* No file */
X  extern ino_t	search();
X! RST_DIR		*rst_4_3_opendir();
X! UNIXDIRECT 	*rst_readdir();
X  extern void 	rst_seekdir();
X  
X  /*
X***************
X*** 71,77 ****
X  	register int i;
X  	register struct dinode *ip;
X  	struct inotab *itp;
X! 	struct direct nulldir;
X  	int putdir(), null();
X  
X  	vprintf(stdout, "Extract directories from tape\n");
X--- 72,78 ----
X  	register int i;
X  	register struct dinode *ip;
X  	struct inotab *itp;
X! 	UNIXDIRECT nulldir;
X  	int putdir(), null();
X  
X  	vprintf(stdout, "Extract directories from tape\n");
X***************
X*** 105,111 ****
X  		ip = curfile.dip;
X  		if (ip == NULL || (ip->di_mode & IFMT) != IFDIR) {
X  			(void) fclose(df);
X! 			dirp = opendir(dirfile);
X  			if (dirp == NULL)
X  				perror("opendir");
X  			if (mf != NULL)
X--- 106,112 ----
X  		ip = curfile.dip;
X  		if (ip == NULL || (ip->di_mode & IFMT) != IFDIR) {
X  			(void) fclose(df);
X! 			dirp = rst_4_3_opendir(dirfile);
X  			if (dirp == NULL)
X  				perror("opendir");
X  			if (mf != NULL)
X***************
X*** 144,150 ****
X  	long (*todo)();
X  {
X  	register struct inotab *itp;
X! 	register struct direct *dp;
X  	register struct entry *np;
X  	int namelen;
X  	daddr_t bpt;
X--- 145,151 ----
X  	long (*todo)();
X  {
X  	register struct inotab *itp;
X! 	register UNIXDIRECT *dp;
X  	register struct entry *np;
X  	int namelen;
X  	daddr_t bpt;
X***************
X*** 182,188 ****
X  	else
X  		fprintf(stderr, "Warning: `..' missing from directory %s\n",
X  			pname);
X! 	bpt = telldir(dirp);
X  	/*
X  	 * a zero inode signals end of directory
X  	 */
X--- 183,189 ----
X  	else
X  		fprintf(stderr, "Warning: `..' missing from directory %s\n",
X  			pname);
X! 	bpt = rst_4_3_telldir(dirp);
X  	/*
X  	 * a zero inode signals end of directory
X  	 */
X***************
X*** 197,203 ****
X  			rst_seekdir(dirp, bpt, itp->t_seekpt);
X  		}
X  		dp = rst_readdir(dirp);
X! 		bpt = telldir(dirp);
X  	}
X  	if (dp == NULL)
X  		fprintf(stderr, "corrupted directory: %s.\n", locname);
X--- 198,204 ----
X  			rst_seekdir(dirp, bpt, itp->t_seekpt);
X  		}
X  		dp = rst_readdir(dirp);
X! 		bpt = rst_4_3_telldir(dirp);
X  	}
X  	if (dp == NULL)
X  		fprintf(stderr, "corrupted directory: %s.\n", locname);
X***************
X*** 246,252 ****
X  	ino_t	inum;
X  	char	*cp;
X  {
X! 	register struct direct *dp;
X  	register struct inotab *itp;
X  	int len;
X  
X--- 247,253 ----
X  	ino_t	inum;
X  	char	*cp;
X  {
X! 	register UNIXDIRECT *dp;
X  	register struct inotab *itp;
X  	int len;
X  
X***************
X*** 270,279 ****
X  	char *buf;
X  	int size;
X  {
X! 	struct direct cvtbuf;
X  	register struct odirect *odp;
X  	struct odirect *eodp;
X! 	register struct direct *dp;
X  	long loc, i;
X  	extern int Bcvt;
X  
X--- 271,280 ----
X  	char *buf;
X  	int size;
X  {
X! 	UNIXDIRECT cvtbuf;
X  	register struct odirect *odp;
X  	struct odirect *eodp;
X! 	register UNIXDIRECT *dp;
X  	long loc, i;
X  	extern int Bcvt;
X  
X***************
X*** 286,292 ****
X  			}
X  	} else {
X  		for (loc = 0; loc < size; ) {
X! 			dp = (struct direct *)(buf + loc);
X  			if (Bcvt) {
X  				swabst("l2s", (char *) dp);
X  			}
X--- 287,293 ----
X  			}
X  	} else {
X  		for (loc = 0; loc < size; ) {
X! 			dp = (UNIXDIRECT *)(buf + loc);
X  			if (Bcvt) {
X  				swabst("l2s", (char *) dp);
X  			}
X***************
X*** 314,324 ****
X   * add a new directory entry to a file.
X   */
X  putent(dp)
X! 	struct direct *dp;
X  {
X  	dp->d_reclen = DIRSIZ(dp);
X  	if (dirloc + dp->d_reclen > DIRBLKSIZ) {
X! 		((struct direct *)(dirbuf + prev))->d_reclen =
X  		    DIRBLKSIZ - prev;
X  		(void) fwrite(dirbuf, 1, DIRBLKSIZ, df);
X  		dirloc = 0;
X--- 315,325 ----
X   * add a new directory entry to a file.
X   */
X  putent(dp)
X! 	UNIXDIRECT *dp;
X  {
X  	dp->d_reclen = DIRSIZ(dp);
X  	if (dirloc + dp->d_reclen > DIRBLKSIZ) {
X! 		((UNIXDIRECT *)(dirbuf + prev))->d_reclen =
X  		    DIRBLKSIZ - prev;
X  		(void) fwrite(dirbuf, 1, DIRBLKSIZ, df);
X  		dirloc = 0;
X***************
X*** 334,340 ****
X  flushent()
X  {
X  
X! 	((struct direct *)(dirbuf + prev))->d_reclen = DIRBLKSIZ - prev;
X  	(void) fwrite(dirbuf, (int)dirloc, 1, df);
X  	seekpt = ftell(df);
X  	dirloc = 0;
X--- 335,341 ----
X  flushent()
X  {
X  
X! 	((UNIXDIRECT *)(dirbuf + prev))->d_reclen = DIRBLKSIZ - prev;
X  	(void) fwrite(dirbuf, (int)dirloc, 1, df);
X  	seekpt = ftell(df);
X  	dirloc = 0;
X***************
X*** 342,348 ****
X  
X  dcvt(odp, ndp)
X  	register struct odirect *odp;
X! 	register struct direct *ndp;
X  {
X  
X  	bzero((char *)ndp, (long)(sizeof *ndp));
X--- 343,349 ----
X  
X  dcvt(odp, ndp)
X  	register struct odirect *odp;
X! 	register UNIXDIRECT *ndp;
X  {
X  
X  	bzero((char *)ndp, (long)(sizeof *ndp));
X***************
X*** 354,360 ****
X  
X  /*
X   * Seek to an entry in a directory.
X!  * Only values returned by ``telldir'' should be passed to rst_seekdir.
X   * This routine handles many directories in a single file.
X   * It takes the base of the directory in the file, plus
X   * the desired seek offset into it.
X--- 355,361 ----
X  
X  /*
X   * Seek to an entry in a directory.
X!  * Only values returned by ``rst_4_3_telldir'' should be passed to rst_seekdir.
X   * This routine handles many directories in a single file.
X   * It takes the base of the directory in the file, plus
X   * the desired seek offset into it.
X***************
X*** 361,371 ****
X   */
X  void
X  rst_seekdir(dirp, loc, base)
X! 	register DIR *dirp;
X  	daddr_t loc, base;
X  {
X  
X! 	if (loc == telldir(dirp))
X  		return;
X  	loc -= base;
X  	if (loc < 0)
X--- 362,372 ----
X   */
X  void
X  rst_seekdir(dirp, loc, base)
X! 	register RST_DIR *dirp;
X  	daddr_t loc, base;
X  {
X  
X! 	if (loc == rst_4_3_telldir(dirp))
X  		return;
X  	loc -= base;
X  	if (loc < 0)
X***************
X*** 379,389 ****
X  /*
X   * get next entry in a directory.
X   */
X! struct direct *
X  rst_readdir(dirp)
X! 	register DIR *dirp;
X  {
X! 	register struct direct *dp;
X  
X  	for (;;) {
X  		if (dirp->dd_loc == 0) {
X--- 380,390 ----
X  /*
X   * get next entry in a directory.
X   */
X! UNIXDIRECT *
X  rst_readdir(dirp)
X! 	register RST_DIR *dirp;
X  {
X! 	register UNIXDIRECT *dp;
X  
X  	for (;;) {
X  		if (dirp->dd_loc == 0) {
X***************
X*** 398,404 ****
X  			dirp->dd_loc = 0;
X  			continue;
X  		}
X! 		dp = (struct direct *)(dirp->dd_buf + dirp->dd_loc);
X  		if (dp->d_reclen == 0 ||
X  		    dp->d_reclen > DIRBLKSIZ + 1 - dirp->dd_loc) {
X  			dprintf(stderr, "corrupted directory: bad reclen %d\n",
X--- 399,405 ----
X  			dirp->dd_loc = 0;
X  			continue;
X  		}
X! 		dp = (UNIXDIRECT *)(dirp->dd_buf + dirp->dd_loc);
X  		if (dp->d_reclen == 0 ||
X  		    dp->d_reclen > DIRBLKSIZ + 1 - dirp->dd_loc) {
X  			dprintf(stderr, "corrupted directory: bad reclen %d\n",
X***************
X*** 417,426 ****
X  	}
X  }
X  
X  /*
X   * Simulate the opening of a directory
X   */
X! DIR *
X  rst_opendir(name)
X  	char *name;
X  {
X--- 418,431 ----
X  	}
X  }
X  
X+ #include "opendir.c"
X+ 
X+ #include "telldir.c"
X+ 
X  /*
X   * Simulate the opening of a directory
X   */
X! RST_DIR *
X  rst_opendir(name)
X  	char *name;
X  {
END_OF_restore/dirs.c.diff
if test 7404 -ne `wc -c <restore/dirs.c.diff`; then
    echo shar: \"restore/dirs.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/dumprestore.h.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/dumprestore.h.diff\"
else
echo shar: Extracting \"restore/dumprestore.h.diff\" \(1680 characters\)
sed "s/^X//" >restore/dumprestore.h.diff <<'END_OF_restore/dumprestore.h.diff'
X*** dumprestore.h.ORIG	Mon Apr 18 21:33:00 1988
X--- dumprestore.h	Tue Aug 16 17:08:45 1988
X***************
X*** 13,26 ****
X   * NTREC is the number of TP_BSIZE blocks that are written
X   * in each tape record. HIGHDENSITYTREC is the number of
X   * TP_BSIZE blocks that are written in each tape record on
X!  * 6250 BPI or higher density tapes.
X   *
X   * TP_NINDIR is the number of indirect pointers in a TS_INODE
X   * or TS_ADDR record. Note that it must be a power of two.
X   */
X! #define TP_BSIZE	1024
X! #define NTREC   	10
X! #define HIGHDENSITYTREC	32
X  #define TP_NINDIR	(TP_BSIZE/2)
X  
X  #define TS_TAPE 	1
X--- 13,29 ----
X   * NTREC is the number of TP_BSIZE blocks that are written
X   * in each tape record. HIGHDENSITYTREC is the number of
X   * TP_BSIZE blocks that are written in each tape record on
X!  * 6250 BPI or higher density tapes.  CARTRIDGETREC is the
X!  * number of TP_BSIZE blocks that are written in each tape
X!  * record on cartridge tapes.
X   *
X   * TP_NINDIR is the number of indirect pointers in a TS_INODE
X   * or TS_ADDR record. Note that it must be a power of two.
X   */
X! #define TP_BSIZE	2048
X! #define NTREC   	5
X! #define HIGHDENSITYTREC	16
X! #define CARTRIDGETREC	31
X  #define TP_NINDIR	(TP_BSIZE/2)
X  
X  #define TS_TAPE 	1
X***************
X*** 52,57 ****
X  
X  #define spcl u_spcl.s_spcl
X  
X! #define	DUMPOUTFMT	"%-16s %c %s"		/* for printf */
X  						/* name, incno, ctime(date) */
X! #define	DUMPINFMT	"%16s %c %[^\n]\n"	/* inverse for scanf */
X--- 55,60 ----
X  
X  #define spcl u_spcl.s_spcl
X  
X! #define	DUMPOUTFMT	"%-22s %c %s"		/* for printf */
X  						/* name, incno, ctime(date) */
X! #define	DUMPINFMT	"%22s %c %[^\n]\n"	/* inverse for scanf */
END_OF_restore/dumprestore.h.diff
if test 1680 -ne `wc -c <restore/dumprestore.h.diff`; then
    echo shar: \"restore/dumprestore.h.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/interactive.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/interactive.c.diff\"
else
echo shar: Extracting \"restore/interactive.c.diff\" \(2167 characters\)
sed "s/^X//" >restore/interactive.c.diff <<'END_OF_restore/interactive.c.diff'
X*** interactive.c.ORIG	Sat Jan  9 16:27:01 1988
X--- interactive.c	Tue Jul 12 17:00:11 1988
X***************
X*** 398,409 ****
X  	register struct arglist *ap;
X  {
X  	static struct afile single;
X  	int size;
X  
X  	ap->head = ap->last = (struct afile *)0;
X  	size = expand(arg, 0, ap);
X  	if (size == 0) {
X! 		single.fnum = lookupname(arg)->e_ino;
X  		single.fname = savename(arg);
X  		ap->head = &single;
X  		ap->last = ap->head + 1;
X--- 398,411 ----
X  	register struct arglist *ap;
X  {
X  	static struct afile single;
X+ 	struct entry *ep;
X  	int size;
X  
X  	ap->head = ap->last = (struct afile *)0;
X  	size = expand(arg, 0, ap);
X  	if (size == 0) {
X! 	        ep = lookupname(arg);
X! 		single.fnum = ep != NIL ? ep->e_ino : 0;
X  		single.fname = savename(arg);
X  		ap->head = &single;
X  		ap->last = ap->head + 1;
X***************
X*** 423,432 ****
X  	int		count, size;
X  	char		dir = 0;
X  	char		*rescan = 0;
X! 	DIR		*dirp;
X  	register char	*s, *cs;
X  	int		sindex, rindex, lindex;
X! 	struct direct	*dp;
X  	register char	slash; 
X  	register char	*rs; 
X  	register char	c;
X--- 425,434 ----
X  	int		count, size;
X  	char		dir = 0;
X  	char		*rescan = 0;
X! 	RST_DIR		*dirp;
X  	register char	*s, *cs;
X  	int		sindex, rindex, lindex;
X! 	UNIXDIRECT	*dp;
X  	register char	slash; 
X  	register char	*rs; 
X  	register char	c;
X***************
X*** 571,577 ****
X   * Construct a matched name.
X   */
X  addg(dp, as1, as3, ap)
X! 	struct direct	*dp;
X  	char		*as1, *as3;
X  	struct arglist	*ap;
X  {
X--- 573,579 ----
X   * Construct a matched name.
X   */
X  addg(dp, as1, as3, ap)
X! 	UNIXDIRECT	*dp;
X  	char		*as1, *as3;
X  	struct arglist	*ap;
X  {
X***************
X*** 609,618 ****
X  	char *basename;
X  {
X  	register struct afile *fp;
X! 	register struct direct *dp;
X  	static struct arglist alist = { 0, 0, 0, 0, "ls" };
X  	struct afile single;
X! 	DIR *dirp;
X  
X  	if ((dirp = rst_opendir(name)) == NULL) {
X  		single.fnum = ino;
X--- 611,620 ----
X  	char *basename;
X  {
X  	register struct afile *fp;
X! 	register UNIXDIRECT *dp;
X  	static struct arglist alist = { 0, 0, 0, 0, "ls" };
X  	struct afile single;
X! 	RST_DIR *dirp;
X  
X  	if ((dirp = rst_opendir(name)) == NULL) {
X  		single.fnum = ino;
END_OF_restore/interactive.c.diff
if test 2167 -ne `wc -c <restore/interactive.c.diff`; then
    echo shar: \"restore/interactive.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/main.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/main.c.diff\"
else
echo shar: Extracting \"restore/main.c.diff\" \(338 characters\)
sed "s/^X//" >restore/main.c.diff <<'END_OF_restore/main.c.diff'
X*** main.c.ORIG	Sat Jan  9 16:27:00 1988
X--- main.c	Tue Jul 12 16:39:19 1988
X***************
X*** 58,64 ****
X--- 58,66 ----
X  	char *inputdev = "/dev/rmt8";
X  	char *symtbl = "./restoresymtable";
X  	char name[MAXPATHLEN];
X+ #ifndef SUNOS4
X  	int (*signal())();
X+ #endif
X  	extern int onintr();
X  
X  	if (signal(SIGINT, onintr) == SIG_IGN)
END_OF_restore/main.c.diff
if test 338 -ne `wc -c <restore/main.c.diff`; then
    echo shar: \"restore/main.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/opendir.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/opendir.c\"
else
echo shar: Extracting \"restore/opendir.c\" \(1135 characters\)
sed "s/^X//" >restore/opendir.c <<'END_OF_restore/opendir.c'
X/*
X * Copyright (c) 1983 Regents of the University of California.
X * All rights reserved.
X *
X * Redistribution and use in source and binary forms are permitted
X * provided that the above copyright notice and this paragraph are
X * duplicated in all such forms and that any documentation,
X * advertising materials, and other materials related to such
X * distribution and use acknowledge that the software was developed
X * by the University of California, Berkeley.  The name of the
X * University may not be used to endorse or promote products derived
X * from this software without specific prior written permission.
X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X */
X
X/*
X * open a directory.
X */
XRST_DIR *
Xrst_4_3_opendir(name)
X	char *name;
X{
X	register RST_DIR *dirp;
X	register int fd;
X
X	if ((fd = open(name, 0)) == -1)
X		return NULL;
X	if ((dirp = (RST_DIR *)malloc(sizeof(RST_DIR))) == NULL) {
X		close (fd);
X		return NULL;
X	}
X	dirp->dd_fd = fd;
X	dirp->dd_loc = 0;
X	return dirp;
X}
END_OF_restore/opendir.c
if test 1135 -ne `wc -c <restore/opendir.c`; then
    echo shar: \"restore/opendir.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/restore.h.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/restore.h.diff\"
else
echo shar: Extracting \"restore/restore.h.diff\" \(1561 characters\)
sed "s/^X//" >restore/restore.h.diff <<'END_OF_restore/restore.h.diff'
X*** restore.h.ORIG	Sat Jan  9 16:27:01 1988
X--- restore.h	Tue Jul 12 17:02:25 1988
X***************
X*** 8,17 ****
X  
X  #include <stdio.h>
X  #include <sys/param.h>
X! #include <sys/inode.h>
X! #include <sys/fs.h>
X  #include <sys/dir.h>
X  
X  /*
X   * Flags
X   */
X--- 8,42 ----
X  
X  #include <stdio.h>
X  #include <sys/param.h>
X! #include <sys/time.h>
X! #include <sys/vnode.h>
X! #include <ufs/inode.h>
X! #include <ufs/fs.h>
X  #include <sys/dir.h>
X  
X+ #ifdef SUNOS4
X+ typedef struct {
X+ 	u_long	d_fileno;		/* file number of entry */
X+ 	u_short	d_reclen;		/* length of this record */
X+ 	u_short	d_namlen;		/* length of string in d_name */
X+ 	char	d_name[MAXNAMLEN + 1];	/* name (up to MAXNAMLEN + 1) */
X+ } UNIXDIRECT;
X+ #else
X+ typedef struct direct UNIXDIRECT;
X+ #endif
X+ 
X+ #define DIRBLKSIZ       2048
X+ 
X+ typedef struct _rstdirdesc {
X+         int     dd_fd;
X+         long    dd_loc;
X+         long    dd_size;
X+ 	long	dd_bbase;
X+ 	long	dd_entno;
X+ 	long	dd_bsize;
X+         char    dd_buf[DIRBLKSIZ];
X+ } RST_DIR;
X+ 
X  /*
X   * Flags
X   */
X***************
X*** 76,83 ****
X  extern char *flagvalues();
X  extern ino_t lowerbnd();
X  extern ino_t upperbnd();
X! extern DIR *rst_opendir();
X! extern struct direct *rst_readdir();
X  #define NIL ((struct entry *)(0))
X  /*
X   * Constants associated with entry structs
X--- 101,108 ----
X  extern char *flagvalues();
X  extern ino_t lowerbnd();
X  extern ino_t upperbnd();
X! extern RST_DIR *rst_opendir();
X! extern UNIXDIRECT *rst_readdir();
X  #define NIL ((struct entry *)(0))
X  /*
X   * Constants associated with entry structs
END_OF_restore/restore.h.diff
if test 1561 -ne `wc -c <restore/restore.h.diff`; then
    echo shar: \"restore/restore.h.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/tape.c.diff -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/tape.c.diff\"
else
echo shar: Extracting \"restore/tape.c.diff\" \(627 characters\)
sed "s/^X//" >restore/tape.c.diff <<'END_OF_restore/tape.c.diff'
X*** tape.c.ORIG	Sat Jan  9 16:27:03 1988
X--- tape.c	Sun May 29 19:09:30 1988
X***************
X*** 153,159 ****
X  	}
X  	if (vflag || command == 't') {
X  		fprintf(stdout, "Dump   date: %s", ctime(&spcl.c_date));
X! 		fprintf(stdout, "Dumped from: %s", ctime(&spcl.c_ddate));
X  	}
X  	dumptime = spcl.c_ddate;
X  	dumpdate = spcl.c_date;
X--- 153,161 ----
X  	}
X  	if (vflag || command == 't') {
X  		fprintf(stdout, "Dump   date: %s", ctime(&spcl.c_date));
X! 		fprintf(stdout, "Dumped from: %s",
X! 			(spcl.c_ddate == (time_t)0)
X! 			? "the epoch\n" : ctime(&spcl.c_ddate));
X  	}
X  	dumptime = spcl.c_ddate;
X  	dumpdate = spcl.c_date;
END_OF_restore/tape.c.diff
if test 627 -ne `wc -c <restore/tape.c.diff`; then
    echo shar: \"restore/tape.c.diff\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f restore/telldir.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"restore/telldir.c\"
else
echo shar: Extracting \"restore/telldir.c\" \(1004 characters\)
sed "s/^X//" >restore/telldir.c <<'END_OF_restore/telldir.c'
X/*
X * Copyright (c) 1983 Regents of the University of California.
X * All rights reserved.
X *
X * Redistribution and use in source and binary forms are permitted
X * provided that the above copyright notice and this paragraph are
X * duplicated in all such forms and that any documentation,
X * advertising materials, and other materials related to such
X * distribution and use acknowledge that the software was developed
X * by the University of California, Berkeley.  The name of the
X * University may not be used to endorse or promote products derived
X * from this software without specific prior written permission.
X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X */
X
X/*
X * return a pointer into a directory
X */
Xlong
Xrst_4_3_telldir(dirp)
X	RST_DIR *dirp;
X{
X	extern long lseek();
X
X	return (lseek(dirp->dd_fd, 0L, 1) - dirp->dd_size + dirp->dd_loc);
X}
END_OF_restore/telldir.c
if test 1004 -ne `wc -c <restore/telldir.c`; then
    echo shar: \"restore/telldir.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0
-- 
David P. Zimmerman, Rutgers, the NJIN Project, the UUCP Project, etc, etc
dpz at pilot.njin.net       {rutgers,njin}!dpz       zimmerman at zodiac.bitnet



More information about the Comp.unix.wizards mailing list