ext2文件系统源代码之xattr_user.c

来源:互联网 发布:数据库市场占有率 2016 编辑:程序博客网 时间:2024/06/07 01:39
我们继续看xattr_user.c这个文件,很简单。
/* * linux/fs/ext2/xattr_user.c * user扩展属性处理函数 * * Copyright (C) 2001 by Andreas Gruenbacher, <a.gruenbacher@computer.org> */#include <linux/init.h>#include <linux/module.h>#include <linux/string.h>#include "ext2.h"#include "xattr.h"/*扩展属性前缀名*/#define XATTR_USER_PREFIX "user."/*得到user属性全名*/static size_text2_xattr_user_list(struct inode *inode, char *list, size_t list_size,     const char *name, size_t name_len){/*得到前缀长度和总长度*/const size_t prefix_len = sizeof(XATTR_USER_PREFIX)-1;const size_t total_len = prefix_len + name_len + 1;/*建安是否支持user属性*/if (!test_opt(inode->i_sb, XATTR_USER))return 0;if (list && total_len <= list_size) {/*复制到list*/memcpy(list, XATTR_USER_PREFIX, prefix_len);memcpy(list+prefix_len, name, name_len);list[prefix_len + name_len] = '\0';}return total_len;}static intext2_xattr_user_get(struct inode *inode, const char *name,    void *buffer, size_t size){/*参数检查和权限检查*/if (strcmp(name, "") == 0)return -EINVAL;if (!test_opt(inode->i_sb, XATTR_USER))return -EOPNOTSUPP;/*调用之前的函数得到属性*/return ext2_xattr_get(inode, EXT2_XATTR_INDEX_USER, name, buffer, size);}static intext2_xattr_user_set(struct inode *inode, const char *name,    const void *value, size_t size, int flags){/*参数检查和权限检查*/if (strcmp(name, "") == 0)return -EINVAL;if (!test_opt(inode->i_sb, XATTR_USER))return -EOPNOTSUPP;/*调用之前的函数设置属性*/return ext2_xattr_set(inode, EXT2_XATTR_INDEX_USER, name,      value, size, flags);}/*属性结构体的处理结构体*/struct xattr_handler ext2_xattr_user_handler = {.prefix= XATTR_USER_PREFIX,.list= ext2_xattr_user_list,.get= ext2_xattr_user_get,.set= ext2_xattr_user_set,};

0 0