From 08db2b8641b95d3059d59e9c8204c891f7c5eecc Mon Sep 17 00:00:00 2001 From: Stelian Pop Date: Wed, 8 Mar 2000 11:25:58 +0000 Subject: [PATCH] Added the -X option to restore (read names of files to be listed/extracted from a text file). --- CHANGES | 7 ++++++- THANKS | 3 ++- restore/main.c | 46 +++++++++++++++++++++++++++++++++++--------- restore/restore.8.in | 35 ++++++++++++++++++++++++++++++++- 4 files changed, 79 insertions(+), 12 deletions(-) diff --git a/CHANGES b/CHANGES index e87d485..c831520 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,4 @@ -$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 ?????????????) =================================================================== @@ -17,6 +17,11 @@ Changes between versions 0.4b15 and 0.4b16 (released ?????????????) tape at the end of run. Thanks to W. Reilly Cooley 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 for the patch. + Changes between versions 0.4b14 and 0.4b15 (released March 2, 2000) =================================================================== diff --git a/THANKS b/THANKS index 7b538a3..91533cd 100644 --- a/THANKS +++ b/THANKS @@ -1,4 +1,4 @@ -$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. @@ -44,6 +44,7 @@ Greg Lutz greglutz@ix.netcom.com 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 diff --git a/restore/main.c b/restore/main.c index 292d0cc..6f9b034 100644 --- a/restore/main.c +++ b/restore/main.c @@ -40,7 +40,7 @@ #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 @@ -104,6 +104,8 @@ main(int argc, char *argv[]) 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); @@ -125,9 +127,9 @@ main(int argc, char *argv[]) ; 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) { @@ -199,6 +201,10 @@ main(int argc, char *argv[]) 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; @@ -309,6 +315,19 @@ main(int argc, char *argv[]) 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. */ @@ -316,8 +335,11 @@ main(int argc, char *argv[]) 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; @@ -331,8 +353,11 @@ main(int argc, char *argv[]) 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; @@ -363,12 +388,14 @@ usage(void) (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); } @@ -407,6 +434,7 @@ obsolete(int *argcp, char **argvp[]) case 'f': case 's': case 'T': + case 'X': if (*argv == NULL) { warnx("option requires an argument -- %c", *ap); usage(); diff --git a/restore/restore.8.in b/restore/restore.8.in index f853fef..073cc8e 100644 --- a/restore/restore.8.in +++ b/restore/restore.8.in @@ -29,7 +29,7 @@ .\" 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 @@ -76,6 +76,14 @@ .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 @@ -83,6 +91,14 @@ .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 @@ -258,6 +274,9 @@ Note that 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. @@ -276,6 +295,9 @@ backup being extracted, unless the .Fl h flag has been specified. +See also the +.Fl X +option below. .El .Pp The following additional options may be specified: @@ -384,6 +406,17 @@ The (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. -- 2.39.2