]> git.wh0rd.org - dump.git/commitdiff
updates to the -X option...
authorStelian Pop <stelian@popies.net>
Thu, 9 Mar 2000 13:12:31 +0000 (13:12 +0000)
committerStelian Pop <stelian@popies.net>
Thu, 9 Mar 2000 13:12:31 +0000 (13:12 +0000)
CHANGES
restore/main.c
restore/restore.8.in

diff --git a/CHANGES b/CHANGES
index c8315204daa2289f714ddcb5f5591af0561abb6a..005be8d9e49bef784f8ae92ee3fadff660fbc686 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,4 @@
-$Id: CHANGES,v 1.50 2000/03/08 11:25:58 stelian Exp $
+$Id: CHANGES,v 1.51 2000/03/09 13:12:31 stelian Exp $
 
 Changes between versions 0.4b15 and 0.4b16 (released ?????????????)
 ===================================================================
 
 Changes between versions 0.4b15 and 0.4b16 (released ?????????????)
 ===================================================================
@@ -19,8 +19,9 @@ Changes between versions 0.4b15 and 0.4b16 (released ?????????????)
 
 4.     Added the -X option to restore giving the possibility
        to read the names of the files to be extracted/listed 
 
 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.
+       from a text file (in addition 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)
 ===================================================================
index 6f9b0346e3ac07efa2e2d76b0416ae4a5698c6f8..1cd1a662981ec7b85210053568106c19048176eb 100644 (file)
@@ -40,7 +40,7 @@
 
 #ifndef lint
 static const char rcsid[] =
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: main.c,v 1.10 2000/03/08 11:25:58 stelian Exp $";
+       "$Id: main.c,v 1.11 2000/03/09 13:12:31 stelian Exp $";
 #endif /* not lint */
 
 #include <sys/param.h>
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -88,6 +88,7 @@ FILE  *terminal;
 char   *tmpdir;
 int    compare_ignore_not_found;
 char   filesys[NAMELEN];
 char   *tmpdir;
 int    compare_ignore_not_found;
 char   filesys[NAMELEN];
+static const char *stdin_opt = NULL;
 
 #ifdef __linux__
 char   *__progname;
 
 #ifdef __linux__
 char   *__progname;
@@ -95,6 +96,7 @@ char  *__progname;
 
 static void obsolete __P((int *, char **[]));
 static void usage __P((void));
 
 static void obsolete __P((int *, char **[]));
 static void usage __P((void));
+static void use_stdin __P((const char *));
 
 int
 main(int argc, char *argv[])
 
 int
 main(int argc, char *argv[])
@@ -156,6 +158,8 @@ main(int argc, char *argv[])
                        dflag = 1;
                        break;
                case 'f':
                        dflag = 1;
                        break;
                case 'f':
+                       if( !strcmp(optarg,"-") )
+                               use_stdin("-f");
                        inputdev = optarg;
                        break;
                case 'h':
                        inputdev = optarg;
                        break;
                case 'h':
@@ -202,8 +206,13 @@ main(int argc, char *argv[])
                        vflag = 1;
                        break;
                case 'X':
                        vflag = 1;
                        break;
                case 'X':
-                       if ( !(filelist=fopen(optarg,"r")) )
-                               errx(1, "can't open file for reading -- %s", optarg);
+                       if( !strcmp(optarg,"-") ) {
+                               use_stdin("-X");
+                               filelist = stdin;
+                       }
+                       else
+                               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;
@@ -227,7 +236,7 @@ main(int argc, char *argv[])
 
        setinput(inputdev);
 
 
        setinput(inputdev);
 
-       if (argc == 0) {
+       if (argc == 0 && !filelist) {
                argc = 1;
                *--argv = ".";
        }
                argc = 1;
                *--argv = ".";
        }
@@ -315,17 +324,21 @@ main(int argc, char *argv[])
                checkrestore();
                dumpsymtable(symtbl, (long)1);
                break;
                checkrestore();
                dumpsymtable(symtbl, (long)1);
                break;
-               
+       
+/* handle file names from either text file (-X) or the command line */
 #define NEXTFILE(p) \
 #define NEXTFILE(p) \
-       if (filelist) { \
-               if ((p = fgets(fname, MAXPATHLEN, filelist))) \
-                       *(p + strlen(p) - 1) = '\0'; \
+       p = NULL; \
+       if (argc) { \
+               --argc; \
+               p = *argv++; \
        } \
        } \
-       else { \
-               if (argc--) \
-                       p = *argv++; \
-               else \
-                       p = NULL; \
+       else if (filelist) { \
+               if ((p = fgets(fname, MAXPATHLEN, filelist))) { \
+                       if ( *p && *(p + strlen(p) - 1) == '\n' ) /* possible null string */ \
+                               *(p + strlen(p) - 1) = '\0'; \
+                       if ( !*p ) /* skip empty lines */ \
+                               continue; \
+                       } \
        }
        
        /*
        }
        
        /*
@@ -388,14 +401,12 @@ 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\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",
          __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, " -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, " -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]");
+         __progname, " -x [-ch" kerbflag "mMuvy] [-b blocksize] [-f file] [-s fileno] [-X filelist] [file ...]",
+         __progname, " -t [-ch" kerbflag "Muvy] [-b blocksize] [-f file] [-s fileno] [-X filelist] [file ...]");
        exit(1);
 }
 
        exit(1);
 }
 
@@ -469,3 +480,16 @@ obsolete(int *argcp, char **argvp[])
        /* Update argument count. */
        *argcp = nargv - *argvp - 1;
 }
        /* Update argument count. */
        *argcp = nargv - *argvp - 1;
 }
+
+/*
+ * use_stdin --
+ *     reserve stdin for opt (avoid conflicts)
+ */
+void
+use_stdin(const char *opt)
+{
+       if (stdin_opt)
+               errx(1, "can't handle standard input for both %s and %s",
+                       stdin_opt, opt);
+       stdin_opt = opt;
+}
index 073cc8e45c018fb41717d9398c6f06dfa951c226..89fbf401649b46cd762c743ff30a746c536bece7 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.8 2000/03/08 11:25:58 stelian Exp $
+.\"    $Id: restore.8.in,v 1.9 2000/03/09 13:12:31 stelian Exp $
 .\"
 .Dd __DATE__
 .Dt RESTORE 8
 .\"
 .Dd __DATE__
 .Dt RESTORE 8
 .Op Fl f Ar file
 .Op Fl s Ar fileno
 .Op Fl T Ar directory
 .Op Fl f Ar file
 .Op Fl s Ar fileno
 .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
 .Op Fl X Ar filelist
-.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 file ...
 .Nm restore
 .Fl x
 .Op file ...
 .Nm restore
 .Fl x
@@ -99,6 +84,7 @@
 .Op Fl s Ar fileno
 .Op Fl T Ar directory
 .Op Fl X Ar filelist
 .Op Fl s Ar fileno
 .Op Fl T Ar directory
 .Op Fl X Ar filelist
+.Op file ...
 .Pp
 .in
 (The
 .Pp
 .in
 (The
@@ -407,9 +393,9 @@ The
 flag causes it to type the name of each file it treats
 preceded by its file type.
 .It Fl X Ar filelist
 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
+Read list of files to be listed or extracted from the text file
 .Ar filelist
 .Ar filelist
-instead of reading them on the command line. This can be used in 
+in addition to those specified on the command line. This can be used in 
 conjunction with the
 .Fl t
 or
 conjunction with the
 .Fl t
 or
@@ -417,6 +403,10 @@ or
 commands. The file
 .Ar filelist
 should contain file names separated by newlines.
 commands. The file
 .Ar filelist
 should contain file names separated by newlines.
+.Ar filelist
+may be an ordinary file or
+.Ql Fl
+(the standard input).
 .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.