linux/fs/hfsplus/xattr_user.c
<<
>>
Prefs
   1/*
   2 * linux/fs/hfsplus/xattr_user.c
   3 *
   4 * Vyacheslav Dubeyko <slava@dubeyko.com>
   5 *
   6 * Handler for user extended attributes.
   7 */
   8
   9#include "hfsplus_fs.h"
  10#include "xattr.h"
  11
  12static int hfsplus_user_getxattr(struct dentry *dentry, const char *name,
  13                                        void *buffer, size_t size, int type)
  14{
  15        char xattr_name[HFSPLUS_ATTR_MAX_STRLEN + 1] = {0};
  16        size_t len = strlen(name);
  17
  18        if (!strcmp(name, ""))
  19                return -EINVAL;
  20
  21        if (len + XATTR_USER_PREFIX_LEN > HFSPLUS_ATTR_MAX_STRLEN)
  22                return -EOPNOTSUPP;
  23
  24        strcpy(xattr_name, XATTR_USER_PREFIX);
  25        strcpy(xattr_name + XATTR_USER_PREFIX_LEN, name);
  26
  27        return hfsplus_getxattr(dentry, xattr_name, buffer, size);
  28}
  29
  30static int hfsplus_user_setxattr(struct dentry *dentry, const char *name,
  31                const void *buffer, size_t size, int flags, int type)
  32{
  33        char xattr_name[HFSPLUS_ATTR_MAX_STRLEN + 1] = {0};
  34        size_t len = strlen(name);
  35
  36        if (!strcmp(name, ""))
  37                return -EINVAL;
  38
  39        if (len + XATTR_USER_PREFIX_LEN > HFSPLUS_ATTR_MAX_STRLEN)
  40                return -EOPNOTSUPP;
  41
  42        strcpy(xattr_name, XATTR_USER_PREFIX);
  43        strcpy(xattr_name + XATTR_USER_PREFIX_LEN, name);
  44
  45        return hfsplus_setxattr(dentry, xattr_name, buffer, size, flags);
  46}
  47
  48static size_t hfsplus_user_listxattr(struct dentry *dentry, char *list,
  49                size_t list_size, const char *name, size_t name_len, int type)
  50{
  51        /*
  52         * This method is not used.
  53         * It is used hfsplus_listxattr() instead of generic_listxattr().
  54         */
  55        return -EOPNOTSUPP;
  56}
  57
  58const struct xattr_handler hfsplus_xattr_user_handler = {
  59        .prefix = XATTR_USER_PREFIX,
  60        .list   = hfsplus_user_listxattr,
  61        .get    = hfsplus_user_getxattr,
  62        .set    = hfsplus_user_setxattr,
  63};
  64
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.