diff --git a/sbin/restore/interactive.c b/sbin/restore/interactive.c index ec49c36fa082..5fc468bbc3fa 100644 --- a/sbin/restore/interactive.c +++ b/sbin/restore/interactive.c @@ -46,9 +46,10 @@ static const char rcsid[] = #include #include -#include +#include #include #include +#include #include #include #include @@ -421,7 +422,7 @@ copynext(char *input, char *output) */ quote = *cp++; while (*cp != quote && *cp != '\0') - *bp++ = *cp++ | 0200; + *bp++ = *cp++; if (*cp++ == '\0') { fprintf(stderr, "missing %c\n", quote); cp--; @@ -581,7 +582,7 @@ mkentry(char *name, struct direct *dp, struct afile *fp) fp->fnum = dp->d_ino; fp->fname = savename(dp->d_name); for (cp = fp->fname; *cp; cp++) - if (!vflag && (*cp < ' ' || *cp >= 0177)) + if (!vflag && !isprint((unsigned char)*cp)) *cp = '?'; fp->len = cp - fp->fname; if (dflag && TSTINO(fp->fnum, dumpmap) == 0) @@ -748,7 +749,7 @@ glob_stat(const char *name, struct stat *stp) static int fcmp(const void *f1, const void *f2) { - return (strcmp(((struct afile *)f1)->fname, + return (strcoll(((struct afile *)f1)->fname, ((struct afile *)f2)->fname)); } diff --git a/sbin/restore/main.c b/sbin/restore/main.c index 4fe2be62e8b3..d636880e2165 100644 --- a/sbin/restore/main.c +++ b/sbin/restore/main.c @@ -53,6 +53,7 @@ static const char rcsid[] = #include #include +#include #include #include #include @@ -94,6 +95,8 @@ main(int argc, char *argv[]) if (argc < 2) usage(); + (void)setlocale(LC_ALL, ""); + if ((inputdev = getenv("TAPE")) == NULL) inputdev = _PATH_DEFTAPE; obsolete(&argc, &argv);