#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>
#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));
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);
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;
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))
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))