-$Id: CHANGES,v 1.49 2000/03/08 10:51:29 stelian Exp $
+$Id: CHANGES,v 1.50 2000/03/08 11:25:58 stelian Exp $
Changes between versions 0.4b15 and 0.4b16 (released ?????????????)
===================================================================
tape at the end of run. Thanks to W. Reilly Cooley
<wcooley@nakedape.cc> for the patch.
+4. Added the -X option to restore giving the possibility
+ to read the names of the files to be extracted/listed
+ from a text file (instead of the command line). Thanks
+ to Dejan Muhamedagic <dejan@quant-x.com> for the patch.
+
Changes between versions 0.4b14 and 0.4b15 (released March 2, 2000)
===================================================================
-$Id: THANKS,v 1.24 2000/03/08 10:51:29 stelian Exp $
+$Id: THANKS,v 1.25 2000/03/08 11:25:58 stelian Exp $
Dump and restore were written by the people of the CSRG at the University
of California, Berkeley.
Eric Maisonobe virnet@nat.fr
David Miller davem@caip.rutgers.edu
David Monro davidm@cs.su.oz.au
+Dejan Muhamedagic dejan@quant-x.com
Lukas Nellen L.Nellen@ThPhys.Uni-Heidelberg.DE
Nuno Oliveira nuno@eq.uc.pt
Brent Olson night@halcyon.com
#ifndef lint
static const char rcsid[] =
- "$Id: main.c,v 1.9 2000/03/02 11:34:51 stelian Exp $";
+ "$Id: main.c,v 1.10 2000/03/08 11:25:58 stelian Exp $";
#endif /* not lint */
#include <sys/param.h>
char *inputdev = _PATH_DEFTAPE;
char *symtbl = "./restoresymtable";
char *p, name[MAXPATHLEN];
+ FILE *filelist = NULL;
+ char fname[MAXPATHLEN];
/* Temp files should *not* be readable. We set permissions later. */
(void) umask(077);
;
obsolete(&argc, &argv);
#ifdef KERBEROS
-#define optlist "b:CcdD:f:hikmMNRrs:tT:uvxy"
+#define optlist "b:CcdD:f:hikmMNRrs:tT:uvxX:y"
#else
-#define optlist "b:CcdD:f:himMNRrs:tT:uvxy"
+#define optlist "b:CcdD:f:himMNRrs:tT:uvxX:y"
#endif
while ((ch = getopt(argc, argv, optlist)) != -1)
switch(ch) {
case 'v':
vflag = 1;
break;
+ case 'X':
+ if ( !(filelist=fopen(optarg,"r")) )
+ errx(1, "can't open file for reading -- %s", optarg);
+ break;
case 'y':
yflag = 1;
break;
checkrestore();
dumpsymtable(symtbl, (long)1);
break;
+
+#define NEXTFILE(p) \
+ if (filelist) { \
+ if ((p = fgets(fname, MAXPATHLEN, filelist))) \
+ *(p + strlen(p) - 1) = '\0'; \
+ } \
+ else { \
+ if (argc--) \
+ p = *argv++; \
+ else \
+ p = NULL; \
+ }
+
/*
* List contents of tape.
*/
setup();
extractdirs(0);
initsymtable((char *)0);
- while (argc--) {
- canon(*argv++, name, sizeof(name));
+ for (;;) {
+ NEXTFILE(p);
+ if (!p)
+ break;
+ canon(p, name, sizeof(name));
ino = dirlookup(name);
if (ino == 0)
continue;
setup();
extractdirs(1);
initsymtable((char *)0);
- while (argc--) {
- canon(*argv++, name, sizeof(name));
+ for (;;) {
+ NEXTFILE(p);
+ if (!p)
+ break;
+ canon(p, name, sizeof(name));
ino = dirlookup(name);
if (ino == 0)
continue;
(void)fprintf(stderr,
"%s %s\n", __progname, _DUMP_VERSION);
(void)fprintf(stderr,
- "usage:\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n",
+ "usage:\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n",
__progname, " -i [-ch" kerbflag "mMuvy] [-b blocksize] [-f file] [-s fileno]",
__progname, " -r [-c" kerbflag "Muvy] [-b blocksize] [-f file] [-s fileno]",
__progname, " -R [-c" kerbflag "Muvy] [-b blocksize] [-f file] [-s fileno]",
__progname, " -x [-ch" kerbflag "mMuvy] [-b blocksize] [-f file] [-s fileno] [file ...]",
- __progname, " -t [-ch" kerbflag "Muvy] [-b blocksize] [-f file] [-s fileno] [file ...]");
+ __progname, " -x [-ch" kerbflag "mMuvy] [-b blocksize] [-f file] [-s fileno] [-X filelist]",
+ __progname, " -t [-ch" kerbflag "Muvy] [-b blocksize] [-f file] [-s fileno] [file ...]",
+ __progname, " -t [-ch" kerbflag "Muvy] [-b blocksize] [-f file] [-s fileno] [-X filelist]");
exit(1);
}
case 'f':
case 's':
case 'T':
+ case 'X':
if (*argv == NULL) {
warnx("option requires an argument -- %c", *ap);
usage();
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: restore.8.in,v 1.7 2000/01/21 10:23:30 stelian Exp $
+.\" $Id: restore.8.in,v 1.8 2000/03/08 11:25:58 stelian Exp $
.\"
.Dd __DATE__
.Dt RESTORE 8
.Op Fl T Ar directory
.Op file ...
.Nm restore
+.Fl t
+.Op Fl chkMNuvy
+.Op Fl b Ar blocksize
+.Op Fl f Ar file
+.Op Fl s Ar fileno
+.Op Fl T Ar directory
+.Op Fl X Ar filelist
+.Nm restore
.Fl x
.Op Fl chkmMNuvy
.Op Fl b Ar blocksize
.Op Fl s Ar fileno
.Op Fl T Ar directory
.Op file ...
+.Nm restore
+.Fl x
+.Op Fl chkmMNuvy
+.Op Fl b Ar blocksize
+.Op Fl f Ar file
+.Op Fl s Ar fileno
+.Op Fl T Ar directory
+.Op Fl X Ar filelist
.Pp
.in
(The
flag replaces the function of the old
.Xr dumpdir 8
program.
+See also the
+.Fl X
+option below.
.ne 1i
.It Fl x
The named files are read from the given media.
unless the
.Fl h
flag has been specified.
+See also the
+.Fl X
+option below.
.El
.Pp
The following additional options may be specified:
(verbose)
flag causes it to type the name of each file it treats
preceded by its file type.
+.It Fl X Ar filelist
+Get the list of the files to be listed or extracted from the text file
+.Ar filelist
+instead of reading them on the command line. This can be used in
+conjunction with the
+.Fl t
+or
+.Fl x
+commands. The file
+.Ar filelist
+should contain file names separated by newlines.
.It Fl y
Do not ask the user whether to abort the restore in the event of an error.
Always try to skip over the bad block(s) and continue.