X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fxattr.c;h=1531070dc1be2ff32fde955946bcb2411626a1b8;hp=a908a44b6c798364b48864623ea74315da6946ee;hb=6a14f1c2502f58ff7bed8cb451f95a83f5ee920a;hpb=2f1a50d81671810256dce0852e6b1e0810ac44af diff --git a/daemon/xattr.c b/daemon/xattr.c index a908a44..1531070 100644 --- a/daemon/xattr.c +++ b/daemon/xattr.c @@ -35,12 +35,12 @@ #endif #endif -static guestfs_int_xattr_list *getxattrs (char *path, ssize_t (*listxattr) (const char *path, char *list, size_t size), ssize_t (*getxattr) (const char *path, const char *name, void *value, size_t size)); -static int _setxattr (char *xattr, char *val, int vallen, char *path, int (*setxattr) (const char *path, const char *name, const void *value, size_t size, int flags)); -static int _removexattr (char *xattr, char *path, int (*removexattr) (const char *path, const char *name)); +static guestfs_int_xattr_list *getxattrs (const char *path, ssize_t (*listxattr) (const char *path, char *list, size_t size), ssize_t (*getxattr) (const char *path, const char *name, void *value, size_t size)); +static int _setxattr (const char *xattr, const char *val, int vallen, const char *path, int (*setxattr) (const char *path, const char *name, const void *value, size_t size, int flags)); +static int _removexattr (const char *xattr, const char *path, int (*removexattr) (const char *path, const char *name)); guestfs_int_xattr_list * -do_getxattrs (char *path) +do_getxattrs (const char *path) { #if defined(HAVE_LISTXATTR) && defined(HAVE_GETXATTR) return getxattrs (path, listxattr, getxattr); @@ -51,7 +51,7 @@ do_getxattrs (char *path) } guestfs_int_xattr_list * -do_lgetxattrs (char *path) +do_lgetxattrs (const char *path) { #if defined(HAVE_LLISTXATTR) && defined(HAVE_LGETXATTR) return getxattrs (path, llistxattr, lgetxattr); @@ -62,7 +62,7 @@ do_lgetxattrs (char *path) } int -do_setxattr (char *xattr, char *val, int vallen, char *path) +do_setxattr (const char *xattr, const char *val, int vallen, const char *path) { #if defined(HAVE_SETXATTR) return _setxattr (xattr, val, vallen, path, setxattr); @@ -73,7 +73,7 @@ do_setxattr (char *xattr, char *val, int vallen, char *path) } int -do_lsetxattr (char *xattr, char *val, int vallen, char *path) +do_lsetxattr (const char *xattr, const char *val, int vallen, const char *path) { #if defined(HAVE_LSETXATTR) return _setxattr (xattr, val, vallen, path, lsetxattr); @@ -84,7 +84,7 @@ do_lsetxattr (char *xattr, char *val, int vallen, char *path) } int -do_removexattr (char *xattr, char *path) +do_removexattr (const char *xattr, const char *path) { #if defined(HAVE_REMOVEXATTR) return _removexattr (xattr, path, removexattr); @@ -95,7 +95,7 @@ do_removexattr (char *xattr, char *path) } int -do_lremovexattr (char *xattr, char *path) +do_lremovexattr (const char *xattr, const char *path) { #if defined(HAVE_LREMOVEXATTR) return _removexattr (xattr, path, lremovexattr); @@ -106,7 +106,7 @@ do_lremovexattr (char *xattr, char *path) } static guestfs_int_xattr_list * -getxattrs (char *path, +getxattrs (const char *path, ssize_t (*listxattr) (const char *path, char *list, size_t size), ssize_t (*getxattr) (const char *path, const char *name, void *value, size_t size)) @@ -116,9 +116,6 @@ getxattrs (char *path, int i, j; guestfs_int_xattr_list *r = NULL; - NEED_ROOT (NULL); - ABS_PATH (path, NULL); - CHROOT_IN; len = listxattr (path, NULL, 0); CHROOT_OUT; @@ -198,11 +195,13 @@ getxattrs (char *path, error: free (buf); if (r) { - if (r->guestfs_int_xattr_list_val) - for (i = 0; i < r->guestfs_int_xattr_list_len; ++i) { - free (r->guestfs_int_xattr_list_val[i].attrname); - free (r->guestfs_int_xattr_list_val[i].attrval.attrval_val); + if (r->guestfs_int_xattr_list_val) { + unsigned int k; + for (k = 0; k < r->guestfs_int_xattr_list_len; ++k) { + free (r->guestfs_int_xattr_list_val[k].attrname); + free (r->guestfs_int_xattr_list_val[k].attrval.attrval_val); } + } free (r->guestfs_int_xattr_list_val); } free (r); @@ -210,7 +209,7 @@ getxattrs (char *path, } static int -_setxattr (char *xattr, char *val, int vallen, char *path, +_setxattr (const char *xattr, const char *val, int vallen, const char *path, int (*setxattr) (const char *path, const char *name, const void *value, size_t size, int flags)) { @@ -228,7 +227,7 @@ _setxattr (char *xattr, char *val, int vallen, char *path, } static int -_removexattr (char *xattr, char *path, +_removexattr (const char *xattr, const char *path, int (*removexattr) (const char *path, const char *name)) { int r; @@ -247,42 +246,42 @@ _removexattr (char *xattr, char *path, #else /* no xattr.h */ guestfs_int_xattr_list * -do_getxattrs (char *path) +do_getxattrs (const char *path) { reply_with_error ("getxattrs: no support for xattrs"); return NULL; } guestfs_int_xattr_list * -do_lgetxattrs (char *path) +do_lgetxattrs (const char *path) { reply_with_error ("lgetxattrs: no support for xattrs"); return NULL; } int -do_setxattr (char *xattr, char *val, int vallen, char *path) +do_setxattr (const char *xattr, const char *val, int vallen, const char *path) { reply_with_error ("setxattr: no support for xattrs"); return -1; } int -do_lsetxattr (char *xattr, char *val, int vallen, char *path) +do_lsetxattr (const char *xattr, const char *val, int vallen, const char *path) { reply_with_error ("lsetxattr: no support for xattrs"); return -1; } int -do_removexattr (char *xattr, char *path) +do_removexattr (const char *xattr, const char *path) { reply_with_error ("removexattr: no support for xattrs"); return -1; } int -do_lremovexattr (char *xattr, char *path) +do_lremovexattr (const char *xattr, const char *path) { reply_with_error ("lremovexattr: no support for xattrs"); return -1;