X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fxattr.c;h=88947b2293dd4de0d9b2590ab2677bf2edb5ce29;hp=76f44bbfdcc42e89c7aaed3033284d30be76015e;hb=0dd6c8c8442d4ff588f6dac2efab24d3409b0dec;hpb=2600359b9b520ab386f069fbbcd656e5cdbd9b76 diff --git a/daemon/xattr.c b/daemon/xattr.c index 76f44bb..88947b2 100644 --- a/daemon/xattr.c +++ b/daemon/xattr.c @@ -21,13 +21,20 @@ #include #include -#ifdef HAVE_ATTR_XATTR_H -#include - #include "../src/guestfs_protocol.h" #include "daemon.h" #include "actions.h" +#if defined(HAVE_ATTR_XATTR_H) || defined(HAVE_SYS_XATTR_H) + +#ifdef HAVE_ATTR_XATTR_H +#include +#else +#ifdef HAVE_SYS_XATTR_H +#include +#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)); @@ -100,9 +107,9 @@ do_lremovexattr (char *xattr, char *path) 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)) + 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)) { ssize_t len, vlen; char *buf = NULL; @@ -110,7 +117,7 @@ getxattrs (char *path, guestfs_int_xattr_list *r = NULL; NEED_ROOT (NULL); - ABS_PATH (path, NULL); + ABS_PATH (path, return NULL); CHROOT_IN; len = listxattr (path, NULL, 0); @@ -168,15 +175,15 @@ getxattrs (char *path, r->guestfs_int_xattr_list_val[j].attrval.attrval_len = vlen; if (r->guestfs_int_xattr_list_val[j].attrname == NULL || - r->guestfs_int_xattr_list_val[j].attrval.attrval_val == NULL) { + r->guestfs_int_xattr_list_val[j].attrval.attrval_val == NULL) { reply_with_perror ("malloc"); goto error; } CHROOT_IN; vlen = getxattr (path, &buf[i], - r->guestfs_int_xattr_list_val[j].attrval.attrval_val, - vlen); + r->guestfs_int_xattr_list_val[j].attrval.attrval_val, + vlen); CHROOT_OUT; if (vlen == -1) { reply_with_perror ("getxattr"); @@ -193,8 +200,8 @@ getxattrs (char *path, 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); + free (r->guestfs_int_xattr_list_val[i].attrname); + free (r->guestfs_int_xattr_list_val[i].attrval.attrval_val); } free (r->guestfs_int_xattr_list_val); } @@ -204,8 +211,8 @@ getxattrs (char *path, 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)) + int (*setxattr) (const char *path, const char *name, + const void *value, size_t size, int flags)) { int r; @@ -222,7 +229,7 @@ _setxattr (char *xattr, char *val, int vallen, char *path, static int _removexattr (char *xattr, char *path, - int (*removexattr) (const char *path, const char *name)) + int (*removexattr) (const char *path, const char *name)) { int r; @@ -237,7 +244,7 @@ _removexattr (char *xattr, char *path, return 0; } -#else /* !HAVE_ATTR_XATTR_H */ +#else /* no xattr.h */ guestfs_int_xattr_list * do_getxattrs (char *path) @@ -281,4 +288,4 @@ do_lremovexattr (char *xattr, char *path) return -1; } -#endif /* !HAVE_ATTR_XATTR_H */ +#endif /* no xattr.h */