X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;ds=sidebyside;f=dump%2Ftraverse.c;h=2613b5ef5d68b54c1544bfd89ab29359942230ce;hb=a028bdc88a9fca7a274fe9a2f3dc7d824aedd8bc;hp=6d4f00b3e910219257a3bd44ce6aff3b5997328c;hpb=a18d599791e977f3e3d26123031e6ed4e64d6d08;p=dump.git diff --git a/dump/traverse.c b/dump/traverse.c index 6d4f00b..2613b5e 100644 --- a/dump/traverse.c +++ b/dump/traverse.c @@ -41,7 +41,7 @@ #ifndef lint static const char rcsid[] = - "$Id: traverse.c,v 1.49 2002/07/19 14:57:39 stelian Exp $"; + "$Id: traverse.c,v 1.52 2002/12/09 10:53:59 stelian Exp $"; #endif /* not lint */ #include @@ -195,7 +195,7 @@ blockest(struct dinode const *dp) * dump blocks (sizeest vs. blkest in the indirect block * calculation). */ - blkest = howmany((u_quad_t)dp->di_blocks*fs->blocksize, TP_BSIZE); + blkest = howmany((u_quad_t)dp->di_blocks * 512, TP_BSIZE); i_size = dp->di_size + ((u_quad_t) dp->di_size_high << 32); sizeest = howmany(i_size, TP_BSIZE); if (blkest > sizeest) @@ -825,7 +825,7 @@ dumpino(struct dinode *dp, dump_ino_t ino, int metaonly) nbi.di_uid = (((int32_t)dp->di_uidhigh) << 16) | dp->di_uid; nbi.di_gid = (((int32_t)dp->di_gidhigh) << 16) | dp->di_gid; if (dp->di_file_acl) - warn("ACLs in inode #%ld won't be dumped", (long)ino); + msg("ACLs in inode #%ld won't be dumped\n", (long)ino); memmove(&spcl.c_dinode, &nbi, sizeof(nbi)); #else /* __linux__ */ spcl.c_dinode = *dp; @@ -983,6 +983,32 @@ convert_dir(struct ext2_dir_entry *dirent, UNUSED(int offset), dp->d_ino = dirent->inode; dp->d_reclen = reclen; dp->d_namlen = dirent->name_len & 0xFF; + switch ((dirent->name_len & 0xFF00) >> 8) { + default: + dp->d_type = DT_UNKNOWN; + break; + case EXT2_FT_REG_FILE: + dp->d_type = DT_REG; + break; + case EXT2_FT_DIR: + dp->d_type = DT_DIR; + break; + case EXT2_FT_CHRDEV: + dp->d_type = DT_CHR; + break; + case EXT2_FT_BLKDEV: + dp->d_type = DT_BLK; + break; + case EXT2_FT_FIFO: + dp->d_type = DT_FIFO; + break; + case EXT2_FT_SOCK: + dp->d_type = DT_SOCK; + break; + case EXT2_FT_SYMLINK: + dp->d_type = DT_LNK; + break; + } strncpy(dp->d_name, dirent->name, dp->d_namlen); dp->d_name[dp->d_namlen] = '\0'; p->prev_offset = p->offset; @@ -1057,7 +1083,7 @@ dumpdirino(struct dinode *dp, dump_ino_t ino) nbi.di_uid = (((int32_t)dp->di_uidhigh) << 16) | dp->di_uid; nbi.di_gid = (((int32_t)dp->di_gidhigh) << 16) | dp->di_gid; if (dp->di_file_acl) - warn("ACLs in inode #%ld won't be dumped", (long)ino); + msg("ACLs in inode #%ld won't be dumped\n", (long)ino); memmove(&spcl.c_dinode, &nbi, sizeof(nbi)); #else /* __linux__ */ spcl.c_dinode = *dp;