X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=restore%2Finteractive.c;h=28b4d371861d2b7820e41ebfa3ab0f49d8061306;hb=ebcbe7f6c10482913b60fc792e72e494b439b242;hp=de958bb34ce3547f26a9062303d5d43261b923e4;hpb=ddd2ef55b78a62c4bc3daad18bef8a90e85a2052;p=dump.git diff --git a/restore/interactive.c b/restore/interactive.c index de958bb..28b4d37 100644 --- a/restore/interactive.c +++ b/restore/interactive.c @@ -2,8 +2,7 @@ * Ported to Linux's Second Extended File System as part of the * dump and restore backup suit * Remy Card , 1994-1997 - * Stelian Pop , 1999 - * + * Stelian Pop , 1999-2000 */ /* @@ -40,11 +39,8 @@ */ #ifndef lint -#if 0 -static char sccsid[] = "@(#)interactive.c 8.5 (Berkeley) 5/1/95"; -#endif static const char rcsid[] = - "$Id: interactive.c,v 1.3 1999/10/11 12:59:20 stelian Exp $"; + "$Id: interactive.c,v 1.8 2000/01/21 10:17:41 stelian Exp $"; #endif /* not lint */ #include @@ -561,12 +557,12 @@ printlist(char *name, char *basename) strcmp(dp->d_name, "..") == 0)) continue; locname[namelen] = '\0'; - if (namelen + dp->d_namlen >= MAXPATHLEN) { + if (namelen + strlen(dp->d_name) >= MAXPATHLEN) { fprintf(stderr, "%s%s: name exceeds %d char\n", locname, dp->d_name, MAXPATHLEN); } else { (void) strncat(locname, dp->d_name, - (int)dp->d_namlen); + (int)strlen(dp->d_name)); mkentry(locname, dp, listp++); entries++; } @@ -633,9 +629,12 @@ mkentry(char *name, struct direct *dp, struct afile *fp) fp->postfix = '#'; break; +#ifndef __linux__ + /* no need for this */ case DT_WHT: fp->postfix = '%'; break; +#endif case DT_UNKNOWN: case DT_DIR: @@ -691,7 +690,7 @@ formatf(struct afile *list, int nentry) for (j = 0; j < columns; j++) { fp = &list[j * lines + i]; if (vflag) { - fprintf(stderr, "%*ld ", precision, fp->fnum); + fprintf(stderr, "%*ld ", precision, (long)fp->fnum); fp->len += precision + 1; } if (haveprefix) { @@ -717,26 +716,20 @@ formatf(struct afile *list, int nentry) * Skip over directory entries that are not on the tape * * First have to get definition of a dirent. + * + * For Linux the dirent struct is now included from bsdcompat.h */ -#ifdef __linux__ -struct dirent { - off_t d_off; /* offset of next disk dir entry */ - unsigned long d_fileno; /* file number of entry */ - unsigned short d_reclen; /* length of this record */ - unsigned short d_namlen; /* length of string in d_name */ - char d_name[255+1]; /* name (up to MAXNAMLEN + 1) */ -}; -#else /* __linux__ */ +#ifndef __linux__ #undef DIRBLKSIZ #include #undef d_ino -#endif /* __linux__ */ +#endif /* ! __linux__ */ struct dirent * glob_readdir(RST_DIR *dirp) { struct direct *dp; - static struct dirent adirent; + static struct dirent adirent; while ((dp = rst_readdir(dirp)) != NULL) { if (!vflag && dp->d_ino == WINO) @@ -747,7 +740,6 @@ glob_readdir(RST_DIR *dirp) if (dp == NULL) return (NULL); adirent.d_fileno = dp->d_ino; - adirent.d_namlen = dp->d_namlen; memmove(adirent.d_name, dp->d_name, dp->d_namlen + 1); return (&adirent); } @@ -759,7 +751,6 @@ static int glob_stat(const char *name, struct stat *stp) { register struct direct *dp; - dp = pathsearch(name); if (dp == NULL || (!dflag && TSTINO(dp->d_ino, dumpmap) == 0) || (!vflag && dp->d_ino == WINO))