]> git.wh0rd.org - dump.git/blobdiff - dump/traverse.c
Fixed the warn(ACL won't be dumped) message.
[dump.git] / dump / traverse.c
index 6d4f00b3e910219257a3bd44ce6aff3b5997328c..2613b5ef5d68b54c1544bfd89ab29359942230ce 100644 (file)
@@ -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 <config.h>
@@ -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;