diff options
Diffstat (limited to 'ext2fs/inode.c')
-rw-r--r-- | ext2fs/inode.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/ext2fs/inode.c b/ext2fs/inode.c index 5b99069e..ead82678 100644 --- a/ext2fs/inode.c +++ b/ext2fs/inode.c @@ -764,19 +764,24 @@ diskfs_get_translator (struct node *np, char **namep, mach_msg_type_number_t *na return err; } - err = ext2_get_xattr (np, "gnu.translator", NULL, &datalen); - if (err) - return err; + /* If xattr is supported by this filesystem, check for new translator record + * regardless of flag to use it or not */ + if (EXT2_HAS_COMPAT_FEATURE (sblock, EXT2_FEATURE_COMPAT_EXT_ATTR)) + { + err = ext2_get_xattr (np, "gnu.translator", NULL, &datalen); + if (err) + return err; - *namep = malloc (datalen); - if (!*namep) - err = ENOMEM; - else - err = ext2_get_xattr (np, "gnu.translator", *namep, &datalen); + *namep = malloc (datalen); + if (!*namep) + err = ENOMEM; + else + err = ext2_get_xattr (np, "gnu.translator", *namep, &datalen); - diskfs_end_catch_exception (); + diskfs_end_catch_exception (); - *namelen = datalen; + *namelen = datalen; + } return err; } |