X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=restore%2Finteractive.c;h=ecbffda09e8a3dde54e457f666529feb24fa1253;hp=473c11301340f575b09f677805b0379c5c6e3eb2;hb=a3ab8e4243d14360f2769230d23e7d3afd6397cb;hpb=7e14831e01fd2adf5818c6151f75a1d664eed22e diff --git a/restore/interactive.c b/restore/interactive.c index 473c113..ecbffda 100644 --- a/restore/interactive.c +++ b/restore/interactive.c @@ -18,11 +18,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -41,10 +37,11 @@ #ifndef lint static const char rcsid[] = - "$Id: interactive.c,v 1.22 2002/02/04 12:07:38 stelian Exp $"; + "$Id: interactive.c,v 1.27 2003/10/26 16:05:48 stelian Exp $"; #endif /* not lint */ #include +#include #include #include @@ -56,8 +53,13 @@ static const char rcsid[] = #endif #include #else /* __linux__ */ +#ifdef sunos +#include +#include +#else #include #include +#endif #endif /* __linux__ */ #include @@ -71,6 +73,9 @@ static const char rcsid[] = #ifdef __linux__ #include +#endif + +#if defined(__linux__) || defined(sunos) extern char * __progname; #endif @@ -211,7 +216,7 @@ loop: goto bad; createfiles(); createlinks(); - setdirmodes(0); + setdirmodes(oflag ? FORCE : 0); if (dflag) checkrestore(); volno = 0; @@ -510,7 +515,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 +575,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 +596,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 +714,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 +827,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 +841,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; @@ -1006,7 +1015,7 @@ filename_generator(const char *text, int state) } static char ** -restore_completion (const char *text, int start, int end) +restore_completion (const char *text, int start, UNUSED(int end)) { char **matches; @@ -1024,7 +1033,9 @@ 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; }