X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=restore%2Finteractive.c;h=c1b8aa2a2a064821108ef69281768dbc3544e7e8;hp=bc94ed45c339cdff5c5bd02eae8598e1d83ee1b9;hb=a18d599791e977f3e3d26123031e6ed4e64d6d08;hpb=5d2a3d246d400d45dfd4c49ddb588c69fb60873d diff --git a/restore/interactive.c b/restore/interactive.c index bc94ed4..c1b8aa2 100644 --- a/restore/interactive.c +++ b/restore/interactive.c @@ -41,7 +41,7 @@ #ifndef lint static const char rcsid[] = - "$Id: interactive.c,v 1.21 2002/01/25 15:08:59 stelian Exp $"; + "$Id: interactive.c,v 1.25 2002/07/19 14:57:39 stelian Exp $"; #endif /* not lint */ #include @@ -83,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)) @@ -211,7 +211,7 @@ loop: goto bad; createfiles(); createlinks(); - setdirmodes(0); + setdirmodes(oflag ? FORCE : 0); if (dflag) checkrestore(); volno = 0; @@ -510,7 +510,7 @@ canon(char *rawname, char *canonname, int len) (void) strcpy(canonname, "."); else (void) strcpy(canonname, "./"); - if (strlen(canonname) + strlen(rawname) >= len) + if (strlen(canonname) + strlen(rawname) >= (unsigned)len) errx(1, "canonname: not enough buffer space"); (void) strcat(canonname, rawname); @@ -570,7 +570,7 @@ printlist(char *name, char *basename) list = &single; mkentry(name, dp, list); len = strlen(basename) + 1; - if (strlen(name) - len > single.len) { + if (strlen(name) - len > (unsigned)single.len) { freename(single.fname); single.fname = savename(&name[len]); single.len = strlen(single.fname); @@ -591,7 +591,7 @@ printlist(char *name, char *basename) entries = 0; listp = list; namelen = snprintf(locname, sizeof(locname), "%s/", name); - if (namelen >= sizeof(locname)) + if (namelen >= (int)sizeof(locname)) namelen = sizeof(locname) - 1; while ((dp = rst_readdir(dirp))) { if (dp == NULL) @@ -709,7 +709,7 @@ formatf(struct afile *list, int nentry) bigino = ROOTINO; endlist = &list[nentry]; for (fp = &list[0]; fp < endlist; fp++) { - if (bigino < fp->fnum) + if (bigino < (int)fp->fnum) bigino = fp->fnum; if (width < fp->len) width = fp->len; @@ -822,7 +822,7 @@ fcmp(const void *f1, const void *f2) * respond to interrupts */ void -onintr(int signo) +onintr(UNUSED(int signo)) { int save_errno = errno; @@ -836,6 +836,10 @@ onintr(int signo) #if HAVE_READLINE +#if !HAVE_READLINE_RLCM +#define rl_completion_matches completion_matches +#endif + /* A static variable for holding the line. */ static char *line_read = NULL; @@ -898,30 +902,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; @@ -943,7 +925,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; @@ -1026,4 +1008,30 @@ filename_generator(char *text, int state) return name; } + +static char ** +restore_completion (const char *text, int start, UNUSED(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; +#if HAVE_READLINE_CAC /* compile with readline 2.0 */ + rl_completion_append_character = '\0'; +#endif + rl_instream = terminal; +} + #endif /* HAVE_READLINE */