61 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * linux/fs/hfsplus/xattr.h | ||
|  |  * | ||
|  |  * Vyacheslav Dubeyko <slava@dubeyko.com> | ||
|  |  * | ||
|  |  * Logic of processing extended attributes | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef _LINUX_HFSPLUS_XATTR_H
 | ||
|  | #define _LINUX_HFSPLUS_XATTR_H
 | ||
|  | 
 | ||
|  | #include <linux/xattr.h>
 | ||
|  | 
 | ||
|  | extern const struct xattr_handler hfsplus_xattr_osx_handler; | ||
|  | extern const struct xattr_handler hfsplus_xattr_user_handler; | ||
|  | extern const struct xattr_handler hfsplus_xattr_trusted_handler; | ||
|  | /*extern const struct xattr_handler hfsplus_xattr_acl_access_handler;*/ | ||
|  | /*extern const struct xattr_handler hfsplus_xattr_acl_default_handler;*/ | ||
|  | extern const struct xattr_handler hfsplus_xattr_security_handler; | ||
|  | 
 | ||
|  | extern const struct xattr_handler *hfsplus_xattr_handlers[]; | ||
|  | 
 | ||
|  | int __hfsplus_setxattr(struct inode *inode, const char *name, | ||
|  | 			const void *value, size_t size, int flags); | ||
|  | 
 | ||
|  | static inline int hfsplus_setxattr(struct dentry *dentry, const char *name, | ||
|  | 			const void *value, size_t size, int flags) | ||
|  | { | ||
|  | 	return __hfsplus_setxattr(dentry->d_inode, name, value, size, flags); | ||
|  | } | ||
|  | 
 | ||
|  | ssize_t hfsplus_getxattr(struct dentry *dentry, const char *name, | ||
|  | 			void *value, size_t size); | ||
|  | 
 | ||
|  | ssize_t hfsplus_listxattr(struct dentry *dentry, char *buffer, size_t size); | ||
|  | 
 | ||
|  | int hfsplus_removexattr(struct dentry *dentry, const char *name); | ||
|  | 
 | ||
|  | int hfsplus_init_security(struct inode *inode, struct inode *dir, | ||
|  | 				const struct qstr *qstr); | ||
|  | 
 | ||
|  | static inline int hfsplus_init_acl(struct inode *inode, struct inode *dir) | ||
|  | { | ||
|  | 	/*TODO: implement*/ | ||
|  | 	return 0; | ||
|  | } | ||
|  | 
 | ||
|  | static inline int hfsplus_init_inode_security(struct inode *inode, | ||
|  | 						struct inode *dir, | ||
|  | 						const struct qstr *qstr) | ||
|  | { | ||
|  | 	int err; | ||
|  | 
 | ||
|  | 	err = hfsplus_init_acl(inode, dir); | ||
|  | 	if (!err) | ||
|  | 		err = hfsplus_init_security(inode, dir, qstr); | ||
|  | 	return err; | ||
|  | } | ||
|  | 
 | ||
|  | #endif
 |