1 /* 2 * linux/fs/hfsplus/xattr.h 3 * 4 * Vyacheslav Dubeyko <slava@dubeyko.com> 5 * 6 * Logic of processing extended attributes 7 */ 8 9 #ifndef _LINUX_HFSPLUS_XATTR_H 10 #define _LINUX_HFSPLUS_XATTR_H 11 12 #include <linux/xattr.h> 13 14 extern const struct xattr_handler hfsplus_xattr_osx_handler; 15 extern const struct xattr_handler hfsplus_xattr_user_handler; 16 extern const struct xattr_handler hfsplus_xattr_trusted_handler; 17 /*extern const struct xattr_handler hfsplus_xattr_acl_access_handler;*/ 18 /*extern const struct xattr_handler hfsplus_xattr_acl_default_handler;*/ 19 extern const struct xattr_handler hfsplus_xattr_security_handler; 20 21 extern const struct xattr_handler *hfsplus_xattr_handlers[]; 22 23 int __hfsplus_setxattr(struct inode *inode, const char *name, 24 const void *value, size_t size, int flags); 25 26 static inline int hfsplus_setxattr(struct dentry *dentry, const char *name, 27 const void *value, size_t size, int flags) 28 { 29 return __hfsplus_setxattr(dentry->d_inode, name, value, size, flags); 30 } 31 32 ssize_t hfsplus_getxattr(struct dentry *dentry, const char *name, 33 void *value, size_t size); 34 35 ssize_t hfsplus_listxattr(struct dentry *dentry, char *buffer, size_t size); 36 37 int hfsplus_removexattr(struct dentry *dentry, const char *name); 38 39 int hfsplus_init_security(struct inode *inode, struct inode *dir, 40 const struct qstr *qstr); 41 42 static inline int hfsplus_init_acl(struct inode *inode, struct inode *dir) 43 { 44 /*TODO: implement*/ 45 return 0; 46 } 47 48 static inline int hfsplus_init_inode_security(struct inode *inode, 49 struct inode *dir, 50 const struct qstr *qstr) 51 { 52 int err; 53 54 err = hfsplus_init_acl(inode, dir); 55 if (!err) 56 err = hfsplus_init_security(inode, dir, qstr); 57 return err; 58 } 59 60 #endif 61