This is a preparatory patch to add more xattr attributes, care a helper
function to alloc xattr name.

Signed-off-by: Anand Jain <anand.j...@oracle.com>
---
 props.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/props.c b/props.c
index efa11180d4c5..3a498bd9e904 100644
--- a/props.c
+++ b/props.c
@@ -94,6 +94,21 @@ static int prop_label(enum prop_object_type type,
        return ret;
 }
 
+static char *alloc_xattr_name(const char *name)
+{
+       char *xattr_name;
+
+       xattr_name = malloc(XATTR_BTRFS_PREFIX_LEN + strlen(name) + 1);
+       if (!xattr_name)
+               ERR_PTR(-ENOMEM);
+
+       memcpy(xattr_name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN);
+       memcpy(xattr_name + XATTR_BTRFS_PREFIX_LEN, name, strlen(name));
+       xattr_name[XATTR_BTRFS_PREFIX_LEN + strlen(name)] = '\0';
+
+       return xattr_name;
+}
+
 static int prop_compression(enum prop_object_type type,
                            const char *object,
                            const char *name,
@@ -114,14 +129,11 @@ static int prop_compression(enum prop_object_type type,
                goto out;
        }
 
-       xattr_name = malloc(XATTR_BTRFS_PREFIX_LEN + strlen(name) + 1);
-       if (!xattr_name) {
-               ret = -ENOMEM;
-               goto out;
+       xattr_name = alloc_xattr_name(name);
+       if (IS_ERR(xattr_name)) {
+               error("failed to alloc xattr_name %s: %m", object);
+               return PTR_ERR(xattr_name);
        }
-       memcpy(xattr_name, XATTR_BTRFS_PREFIX, XATTR_BTRFS_PREFIX_LEN);
-       memcpy(xattr_name + XATTR_BTRFS_PREFIX_LEN, name, strlen(name));
-       xattr_name[XATTR_BTRFS_PREFIX_LEN + strlen(name)] = '\0';
 
        if (value) {
                if (strcmp(value, "no") == 0 || strcmp(value, "none") == 0)
-- 
1.8.3.1

Reply via email to