diff --git a/ChangeLog b/ChangeLog index 7f094a1bc..bb55e2229 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-07-27 Bean + + * fs/xfs.c (grub_xfs_dir_header): Change field i8count back to + smallino, as it's more descriptive, and i8count can be confused with + the other field count. + (grub_xfs_iterate_dir): Adjust grub_xfs_dir_entry pointer for small + inode type. + 2008-07-27 Bean * commands/crc.c: New file. diff --git a/fs/xfs.c b/fs/xfs.c index 7da3e4012..81a27714b 100644 --- a/fs/xfs.c +++ b/fs/xfs.c @@ -56,7 +56,7 @@ struct grub_xfs_sblock struct grub_xfs_dir_header { grub_uint8_t count; - grub_uint8_t i8count; + grub_uint8_t smallino; union { grub_uint32_t i4; @@ -423,7 +423,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir, case XFS_INODE_FORMAT_INO: { struct grub_xfs_dir_entry *de = &diro->inode.data.dir.direntry[0]; - int smallino = !diro->inode.data.dir.dirhead.i8count; + int smallino = !diro->inode.data.dir.dirhead.smallino; int i; grub_uint64_t parent; @@ -433,12 +433,12 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir, { parent = grub_be_to_cpu32 (diro->inode.data.dir.dirhead.parent.i4); parent = grub_cpu_to_be64 (parent); + /* The header is a bit smaller than usual. */ + de = (struct grub_xfs_dir_entry *) ((char *) de - 4); } else { parent = diro->inode.data.dir.dirhead.parent.i8; - /* The header is a bit bigger than usual. */ - de = (struct grub_xfs_dir_entry *) ((char *) de + 4); } /* Synthesize the direntries for `.' and `..'. */