]> git.wh0rd.org - dump.git/blobdiff - dump/traverse.c
Bug concerning 'filetype' feature in ext2fs.
[dump.git] / dump / traverse.c
index 0865527eb9e69334a81f26f7f5e2d194bf86ead8..2517e0223bb916482f5419e5171407e074bb2636 100644 (file)
@@ -40,7 +40,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: traverse.c,v 1.6 1999/10/13 09:57:20 stelian Exp $";
+       "$Id: traverse.c,v 1.8 1999/11/17 22:46:43 tiniou Exp $";
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -93,7 +93,6 @@ typedef       long fsizeT;
 #ifdef __linux__
 static int searchdir __P((struct ext2_dir_entry *dp, int offset,
                           int blocksize, char *buf, void *private));
-loff_t llseek (int fd, loff_t offset, int origin);
 #else
 static int dirindir __P((ino_t ino, daddr_t blkno, int level, long *size));
 static void dmpindir __P((ino_t ino, daddr_t blk, int level, fsizeT *size));
@@ -699,7 +698,7 @@ convert_dir(struct ext2_dir_entry *dirent, int offset, int blocksize, char *buf,
 
        p = (struct convert_dir_context *)private;
 
-       reclen = EXT2_DIR_REC_LEN(dirent->name_len + 1);
+       reclen = EXT2_DIR_REC_LEN((dirent->name_len & 0xFF) + 1);
        if (((p->offset + reclen - 1) / p->bs) != (p->offset / p->bs)) {
                dp = (struct direct *)(p->buf + p->prev_offset);
                dp->d_reclen += p->bs - (p->offset % p->bs);
@@ -710,8 +709,8 @@ convert_dir(struct ext2_dir_entry *dirent, int offset, int blocksize, char *buf,
        dp->d_ino = dirent->inode;
        dp->d_reclen = reclen;
        dp->d_type = 0;
-       dp->d_namlen = dirent->name_len;
-       strncpy(dp->d_name, dirent->name, dirent->name_len);
+       dp->d_namlen = dirent->name_len & 0xFF;
+       strncpy(dp->d_name, dirent->name, dp->d_namlen);
        dp->d_name[dp->d_namlen] = '\0';
        p->prev_offset = p->offset;
        p->offset += reclen;
@@ -1013,8 +1012,8 @@ bread(daddr_t blkno, char *buf, int size)
 
 loop:
 #ifdef __linux__
-       if (llseek(diskfd, ((ext2_loff_t)blkno << dev_bshift), 0) !=
-                       ((ext2_loff_t)blkno << dev_bshift))
+       if (ext2fs_llseek(diskfd, (((ext2_loff_t)blkno) << dev_bshift), 0) !=
+                       (((ext2_loff_t)blkno) << dev_bshift))
 #else
        if (lseek(diskfd, ((off_t)blkno << dev_bshift), 0) !=
                                                ((off_t)blkno << dev_bshift))
@@ -1059,8 +1058,8 @@ loop:
        memset(buf, 0, size);
        for (i = 0; i < size; i += dev_bsize, buf += dev_bsize, blkno++) {
 #ifdef __linux__
-               if (llseek(diskfd, ((ext2_loff_t)blkno << dev_bshift), 0) !=
-                               ((ext2_loff_t)blkno << dev_bshift))
+               if (ext2fs_llseek(diskfd, (((ext2_loff_t)blkno) << dev_bshift), 0) !=
+                               (((ext2_loff_t)blkno) << dev_bshift))
 #else
                if (lseek(diskfd, ((off_t)blkno << dev_bshift), 0) !=
                                                ((off_t)blkno << dev_bshift))