diff options
Diffstat (limited to 'fs/ext4/ext4_common.c')
-rw-r--r-- | fs/ext4/ext4_common.c | 48 |
1 files changed, 9 insertions, 39 deletions
diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c index 76f7102456e..cc150cf824f 100644 --- a/fs/ext4/ext4_common.c +++ b/fs/ext4/ext4_common.c @@ -2046,24 +2046,23 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name, unsigned int fpos = 0; int status; loff_t actread; - struct ext2fs_node *diro = (struct ext2fs_node *) dir; #ifdef DEBUG if (name != NULL) printf("Iterate dir %s\n", name); #endif /* of DEBUG */ - if (!diro->inode_read) { - status = ext4fs_read_inode(diro->data, diro->ino, &diro->inode); + if (!dir->inode_read) { + status = ext4fs_read_inode(dir->data, dir->ino, &dir->inode); if (status == 0) return 0; } /* Search the file. */ - while (fpos < le32_to_cpu(diro->inode.size)) { + while (fpos < le32_to_cpu(dir->inode.size)) { struct ext2_dirent dirent; - status = ext4fs_read_file(diro, fpos, - sizeof(struct ext2_dirent), - (char *)&dirent, &actread); + status = ext4fs_read_file(dir, fpos, + sizeof(struct ext2_dirent), + (char *)&dirent, &actread); if (status < 0) return 0; @@ -2077,7 +2076,7 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name, struct ext2fs_node *fdiro; int type = FILETYPE_UNKNOWN; - status = ext4fs_read_file(diro, + status = ext4fs_read_file(dir, fpos + sizeof(struct ext2_dirent), dirent.namelen, filename, @@ -2089,7 +2088,7 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name, if (!fdiro) return 0; - fdiro->data = diro->data; + fdiro->data = dir->data; fdiro->ino = le32_to_cpu(dirent.inode); filename[dirent.namelen] = '\0'; @@ -2104,7 +2103,7 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name, else if (dirent.filetype == FILETYPE_REG) type = FILETYPE_REG; } else { - status = ext4fs_read_inode(diro->data, + status = ext4fs_read_inode(dir->data, le32_to_cpu (dirent.inode), &fdiro->inode); @@ -2138,35 +2137,6 @@ int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name, *fnode = fdiro; return 1; } - } else { - if (fdiro->inode_read == 0) { - status = ext4fs_read_inode(diro->data, - le32_to_cpu( - dirent.inode), - &fdiro->inode); - if (status == 0) { - free(fdiro); - return 0; - } - fdiro->inode_read = 1; - } - switch (type) { - case FILETYPE_DIRECTORY: - printf("<DIR> "); - break; - case FILETYPE_SYMLINK: - printf("<SYM> "); - break; - case FILETYPE_REG: - printf(" "); - break; - default: - printf("< ? > "); - break; - } - printf("%10u %s\n", - le32_to_cpu(fdiro->inode.size), - filename); } free(fdiro); } |