7914
|
1 |
--- fuse-ext2-0.0.7/fuse-ext2/op_readdir.c.orig 2011-11-09 23:11:51.899546974 +0000
|
|
2 |
+++ fuse-ext2-0.0.7/fuse-ext2/op_readdir.c 2011-11-09 23:32:02.615079901 +0000
|
|
3 |
@@ -26,40 +26,7 @@
|
|
4 |
};
|
|
5 |
|
|
6 |
#define _USE_DIR_ITERATE2
|
|
7 |
-#ifdef _USE_DIR_ITERATE2
|
|
8 |
-static int walk_dir2 (ext2_ino_t dir, int entry, struct ext2_dir_entry *dirent, int offset, int blocksize, char *buf, void *vpsid)
|
|
9 |
-{
|
|
10 |
- if (dirent->name_len > 0) {
|
|
11 |
- int res;
|
|
12 |
- unsigned char type;
|
|
13 |
- int len;
|
|
14 |
- struct dir_walk_data *psid=(struct dir_walk_data *)vpsid;
|
|
15 |
- struct stat st;
|
|
16 |
- memset(&st, 0, sizeof(st));
|
|
17 |
-
|
|
18 |
- len=dirent->name_len & 0xff;
|
|
19 |
- dirent->name[len]=0; // bug wraparound
|
|
20 |
-
|
|
21 |
- switch (dirent->name_len >> 8) {
|
|
22 |
- case EXT2_FT_UNKNOWN: type=DT_UNKNOWN;break;
|
|
23 |
- case EXT2_FT_REG_FILE: type=DT_REG;break;
|
|
24 |
- case EXT2_FT_DIR: type=DT_DIR;break;
|
|
25 |
- case EXT2_FT_CHRDEV: type=DT_CHR;break;
|
|
26 |
- case EXT2_FT_BLKDEV: type=DT_BLK;break;
|
|
27 |
- case EXT2_FT_FIFO: type=DT_FIFO;break;
|
|
28 |
- case EXT2_FT_SOCK: type=DT_SOCK;break;
|
|
29 |
- case EXT2_FT_SYMLINK: type=DT_LNK;break;
|
|
30 |
- default: type=DT_UNKNOWN;break;
|
|
31 |
- }
|
|
32 |
- st.st_ino=dirent->inode;
|
|
33 |
- st.st_mode=type<<12;
|
|
34 |
- debugf("%s %d %d %d",dirent->name,dirent->name_len &0xff, dirent->name_len >> 8,type);
|
|
35 |
- res = psid->filler(psid->buf, dirent->name, &st, 0);
|
|
36 |
- }
|
|
37 |
- return 0;
|
|
38 |
-}
|
|
39 |
-#else
|
|
40 |
-static int walk_dir (struct ext2_dir_entry *de, int offset, int blocksize, char *buf, void *priv_data)
|
|
41 |
+static int walk_dir2 (struct ext2_dir_entry *de, int offset, int blocksize, char *buf, void *priv_data)
|
|
42 |
{
|
|
43 |
int ret;
|
|
44 |
size_t flen;
|
|
45 |
@@ -82,7 +49,6 @@
|
|
46 |
debugf("leave");
|
|
47 |
return ret;
|
|
48 |
}
|
|
49 |
-#endif
|
|
50 |
|
|
51 |
int op_readdir (const char *path, void *buf, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info *fi)
|
|
52 |
{
|
|
53 |
@@ -107,7 +73,7 @@
|
|
54 |
#ifdef _USE_DIR_ITERATE2
|
|
55 |
rc = ext2fs_dir_iterate2(e2fs,ino, DIRENT_FLAG_INCLUDE_EMPTY, NULL, walk_dir2, &dwd);
|
|
56 |
#else
|
|
57 |
- rc = ext2fs_dir_iterate(e2fs, ino, 0, NULL, walk_dir, &dwd);
|
|
58 |
+ rc = ext2fs_dir_iterate(e2fs, ino, 0, NULL, walk_dir2, &dwd);
|
|
59 |
#endif
|
|
60 |
|
|
61 |
if (rc) {
|