X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=restore%2Fdirs.c;h=2be4e528f9e0a25ba56c15f3f5d8355235ebdeda;hb=c3f69f06e7c87a8e39d2bc02396fa3ba8db76e84;hp=45d4cbe0743981208e96fa82ce6544ee4deb83de;hpb=fe0e02857a1ff7db4bf8cb28780de7ecf2f24234;p=dump.git diff --git a/restore/dirs.c b/restore/dirs.c index 45d4cbe..2be4e52 100644 --- a/restore/dirs.c +++ b/restore/dirs.c @@ -46,7 +46,7 @@ #ifndef lint static const char rcsid[] = - "$Id: dirs.c,v 1.18 2002/02/04 11:18:46 stelian Exp $"; + "$Id: dirs.c,v 1.22 2003/01/10 14:42:51 stelian Exp $"; #endif /* not lint */ #include @@ -276,7 +276,7 @@ treescan(char *pname, dump_ino_t ino, long (*todo) __P((char *, dump_ino_t, int) * skipping over "." and ".." */ namelen = snprintf(locname, sizeof(locname), "%s/", pname); - if (namelen >= sizeof(locname)) + if (namelen >= (int)sizeof(locname)) namelen = sizeof(locname) - 1; rst_seekdir(dirp, itp->t_seekpt, itp->t_seekpt); dp = rst_readdir(dirp); /* "." */ @@ -296,7 +296,7 @@ treescan(char *pname, dump_ino_t ino, long (*todo) __P((char *, dump_ino_t, int) */ while (dp != NULL) { locname[namelen] = '\0'; - if (namelen + dp->d_namlen >= sizeof(locname)) { + if (namelen + dp->d_namlen >= (int)sizeof(locname)) { fprintf(stderr, "%s%s: name exceeds %ld char\n", locname, dp->d_name, (long)sizeof(locname) - 1); } else { @@ -381,7 +381,7 @@ putdir(char *buf, size_t size) putent(&cvtbuf); } } else { - for (loc = 0; loc < size; ) { + for (loc = 0; loc < (long)size; ) { dp = (struct direct *)(buf + loc); #ifdef DIRDEBUG printf ("reclen = %d, namlen = %d, type = %d\n", @@ -397,6 +397,8 @@ putdir(char *buf, size_t size) if (!Bcvt) dp->d_namlen = dp->d_type; # endif + if (dp->d_namlen == 0 && dp->d_type != 0) + dp->d_namlen = dp->d_type; dp->d_type = DT_UNKNOWN; } #ifdef DIRDEBUG @@ -585,7 +587,7 @@ static long rst_telldir(RST_DIR *dirp) { return ((long)lseek(dirp->dd_fd, - (off_t)0, SEEK_CUR) - dirp->dd_size + dirp->dd_loc); + (OFF_T)0, SEEK_CUR) - dirp->dd_size + dirp->dd_loc); } /* @@ -647,7 +649,8 @@ setdirmodes(int flags) ep->e_flags &= ~NEW; continue; } - if (node.ino == ROOTINO && + if ((flags & FORCE) == 0 && + node.ino == ROOTINO && reply("set owner/mode for '.'") == FAIL) continue; }