]> git.wh0rd.org - dump.git/commitdiff
Added the -X option to restore (read names of files to be
authorStelian Pop <stelian@popies.net>
Wed, 8 Mar 2000 11:25:58 +0000 (11:25 +0000)
committerStelian Pop <stelian@popies.net>
Wed, 8 Mar 2000 11:25:58 +0000 (11:25 +0000)
listed/extracted from a text file).

CHANGES
THANKS
restore/main.c
restore/restore.8.in

diff --git a/CHANGES b/CHANGES
index e87d4856381860af1ccf673de642c05460ab5597..c8315204daa2289f714ddcb5f5591af0561abb6a 100644 (file)
--- 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
        <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)
 ===================================================================
 
diff --git a/THANKS b/THANKS
index 7b538a313cf5b18163f1d6594ee9dcec2a5f6951..91533cdfed499f563ff438882a4620c2022910c8 100644 (file)
--- 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
index 292d0cc11d35aab429d2d3501f2194f49c1aae0f..6f9b0346e3ac07efa2e2d76b0416ae4a5698c6f8 100644 (file)
@@ -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 <sys/param.h>
@@ -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();
index f853fefca748347581282c78f28aaa078017057a..073cc8e45c018fb41717d9398c6f06dfa951c226 100644 (file)
@@ -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
 .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
@@ -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.