]> 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 ?????????????)
 ===================================================================
 
 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.
 
        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)
 ===================================================================
 
 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.
 
 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
 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
 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[] =
 
 #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>
 #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];
        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);
 
        /* 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
                ;                                                               
        obsolete(&argc, &argv);
 #ifdef KERBEROS
-#define        optlist "b:CcdD:f:hikmMNRrs:tT:uvxy"
+#define        optlist "b:CcdD:f:hikmMNRrs:tT:uvxX:y"
 #else
 #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) {
 #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 '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;
                case 'y':
                        yflag = 1;
                        break;
@@ -309,6 +315,19 @@ main(int argc, char *argv[])
                checkrestore();
                dumpsymtable(symtbl, (long)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.
         */
        /*
         * List contents of tape.
         */
@@ -316,8 +335,11 @@ main(int argc, char *argv[])
                setup();
                extractdirs(0);
                initsymtable((char *)0);
                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;
                        ino = dirlookup(name);
                        if (ino == 0)
                                continue;
@@ -331,8 +353,11 @@ main(int argc, char *argv[])
                setup();
                extractdirs(1);
                initsymtable((char *)0);
                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;
                        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,
        (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, " -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);
 }
 
        exit(1);
 }
 
@@ -407,6 +434,7 @@ obsolete(int *argcp, char **argvp[])
                case 'f':
                case 's':
                case 'T':
                case 'f':
                case 's':
                case 'T':
+               case 'X':
                        if (*argv == NULL) {
                                warnx("option requires an argument -- %c", *ap);
                                usage();
                        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.
 .\"
 .\" 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
 .\"
 .Dd __DATE__
 .Dt RESTORE 8
 .Op Fl T Ar directory
 .Op file ...
 .Nm restore
 .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
 .Fl x
 .Op Fl chkmMNuvy
 .Op Fl b Ar blocksize
 .Op Fl s Ar fileno
 .Op Fl T Ar directory
 .Op file ...
 .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
 .Pp
 .in
 (The
@@ -258,6 +274,9 @@ Note that the
 flag replaces the function of the old
 .Xr dumpdir 8
 program.
 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.
 .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.
 unless the
 .Fl h
 flag has been specified.
+See also the
+.Fl X
+option below.
 .El
 .Pp
 The following additional options may be specified:
 .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.
 (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.
 .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.