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