]> git.wh0rd.org - dump.git/blobdiff - restore/interactive.c
Readline cleanups (warning compiles)
[dump.git] / restore / interactive.c
index f2f3ae80dc06c497e84ebb62692d0fefdaea0019..473c11301340f575b09f677805b0379c5c6e3eb2 100644 (file)
@@ -2,8 +2,8 @@
  *     Ported to Linux's Second Extended File System as part of the
  *     dump and restore backup suit
  *     Remy Card <card@Linux.EU.Org>, 1994-1997
- *     Stelian Pop <pop@noos.fr>, 1999-2000
- *     Stelian Pop <pop@noos.fr> - Alcôve <www.alcove.fr>, 2000
+ *     Stelian Pop <stelian@popies.net>, 1999-2000
+ *     Stelian Pop <stelian@popies.net> - Alcôve <www.alcove.com>, 2000-2002
  */
 
 /*
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: interactive.c,v 1.14 2000/12/04 15:43:17 stelian Exp $";
+       "$Id: interactive.c,v 1.22 2002/02/04 12:07:38 stelian Exp $";
 #endif /* not lint */
 
+#include <config.h>
 #include <sys/param.h>
 #include <sys/stat.h>
 
 #ifdef __linux__
+#ifdef HAVE_EXT2FS_EXT2_FS_H
+#include <ext2fs/ext2_fs.h>
+#else
 #include <linux/ext2_fs.h>
+#endif
 #include <bsdcompat.h>
 #else  /* __linux__ */
 #include <ufs/ufs/dinode.h>
@@ -78,9 +83,9 @@ extern char * __progname;
 
 static char *rl_gets (char *prompt);
 static void initialize_readline(void);
-static char **restore_completion (char *text, int start, int end);
-static char *command_generator(char *text, int state);
-static char *filename_generator(char *text, int state);
+static char **restore_completion (const char *text, int start, int end);
+static char *command_generator(const char *text, int state);
+static char *filename_generator(const char *text, int state);
 #endif
 
 #define round(a, b) (((a) + (b) - 1) / (b) * (b))
@@ -96,7 +101,7 @@ static int pflag = 0;                /* prompt mode */
  * Structure and routines associated with listing directories.
  */
 struct afile {
-       ino_t   fnum;           /* inode number of file */
+       dump_ino_t fnum;        /* inode number of file */
        char    *fname;         /* file name */
        short   len;            /* name length */
        char    prefix;         /* prefix character */
@@ -124,8 +129,8 @@ static void  printlist __P((char *, char *));
 void
 runcmdshell(void)
 {
-       register struct entry *np;
-       ino_t ino;
+       struct entry *np;
+       dump_ino_t ino;
        struct arglist arglist;
        char curdir[MAXPATHLEN];
        char name[MAXPATHLEN];
@@ -140,8 +145,8 @@ runcmdshell(void)
        arglist.glob.gl_opendir = (void *)rst_opendir;
        arglist.glob.gl_readdir = (void *)glob_readdir;
        arglist.glob.gl_closedir = (void *)rst_closedir;
-       arglist.glob.gl_lstat = glob_stat;
-       arglist.glob.gl_stat = glob_stat;
+       arglist.glob.gl_lstat = (int (*)(const char *, void *))glob_stat;
+       arglist.glob.gl_stat = (int (*)(const char *, void *))glob_stat;
        canon("/", curdir, sizeof(curdir));
 loop:
        if (setjmp(reset) != 0) {
@@ -311,6 +316,7 @@ loop:
                if (strncmp(cmd, "what", strlen(cmd)) != 0)
                        goto bad;
                printdumpinfo();
+               printvolinfo();
                break;
        /*
         * Turn on debugging.
@@ -351,7 +357,7 @@ loop:
 static void
 getcmd(char *curdir, char *cmd, char *name, int size, struct arglist *ap)
 {
-       register char *cp;
+       char *cp;
        static char input[BUFSIZ];
        char output[BUFSIZ];
 #      define rawname input    /* save space by reusing input buffer */
@@ -447,7 +453,7 @@ retnext:
 static char *
 copynext(char *input, char *output)
 {
-       register char *cp, *bp;
+       char *cp, *bp;
        char quote;
 
        for (cp = input; *cp == ' ' || *cp == '\t'; cp++)
@@ -496,7 +502,7 @@ copynext(char *input, char *output)
 void
 canon(char *rawname, char *canonname, int len)
 {
-       register char *cp, *np;
+       char *cp, *np;
 
        if (strcmp(rawname, ".") == 0 || strncmp(rawname, "./", 2) == 0)
                (void) strcpy(canonname, "");
@@ -548,8 +554,8 @@ canon(char *rawname, char *canonname, int len)
 static void
 printlist(char *name, char *basename)
 {
-       register struct afile *fp, *list, *listp = NULL;
-       register struct direct *dp;
+       struct afile *fp, *list, *listp = NULL;
+       struct direct *dp;
        struct afile single;
        RST_DIR *dirp;
        int entries, len, namelen;
@@ -693,7 +699,7 @@ mkentry(char *name, struct direct *dp, struct afile *fp)
 static void
 formatf(struct afile *list, int nentry)
 {
-       register struct afile *fp, *endlist;
+       struct afile *fp, *endlist;
        int width, bigino, haveprefix, havepostfix;
        int i, j, w, precision = 0, columns, lines;
 
@@ -790,7 +796,7 @@ glob_readdir(RST_DIR *dirp)
 static int
 glob_stat(const char *name, struct stat *stp)
 {
-       register struct direct *dp;
+       struct direct *dp;
        dp = pathsearch(name);
        if (dp == NULL || (!dflag && TSTINO(dp->d_ino, dumpmap) == 0) ||
            (!vflag && dp->d_ino == WINO))
@@ -892,30 +898,8 @@ rl_gets (char *dir)
        return (line_read);
 }
 
-static void 
-initialize_readline(void) 
-{
-       rl_attempted_completion_function = restore_completion;
-       rl_completion_entry_function = (Function *)NULL;
-       rl_completion_append_character = '\0';
-       rl_instream = terminal;
-}
-
-static char **
-restore_completion (char *text, int start, int end)
-{
-       char **matches;
-
-       if (start == 0)
-               matches = completion_matches (text, command_generator);
-       else
-               matches = completion_matches (text, filename_generator);
-
-       return (matches);
-}
-
 static char *
-command_generator(char *text, int state)
+command_generator(const char *text, int state)
 {
        static int list_index, len;
        char *name;
@@ -937,7 +921,7 @@ command_generator(char *text, int state)
 }
 
 static char *
-filename_generator(char *text, int state)
+filename_generator(const char *text, int state)
 {
        static int list_index;
        char *name;
@@ -1020,4 +1004,28 @@ filename_generator(char *text, int state)
 
        return name;
 }
+
+static char **
+restore_completion (const char *text, int start, int end)
+{
+       char **matches;
+
+       if (start == 0)
+               matches = rl_completion_matches (text, command_generator);
+       else
+               matches = rl_completion_matches (text, filename_generator);
+
+       return (matches);
+}
+
+static void 
+initialize_readline(void) 
+{
+       rl_readline_name = "dump";
+       rl_attempted_completion_function = restore_completion;
+       rl_completion_entry_function = NULL;
+       rl_completion_append_character = '\0';
+       rl_instream = terminal;
+}
+
 #endif /* HAVE_READLINE */