#include <stdio.h>
#include <unistd.h>
-#ifdef HAVE_ATTR_XATTR_H
-#include <attr/xattr.h>
-
#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 <attr/xattr.h>
+#else
+#ifdef HAVE_SYS_XATTR_H
+#include <sys/xattr.h>
+#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 (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;
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");
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);
}
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;
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;
return 0;
}
-#else /* !HAVE_ATTR_XATTR_H */
+#else /* no xattr.h */
guestfs_int_xattr_list *
do_getxattrs (char *path)
return -1;
}
-#endif /* !HAVE_ATTR_XATTR_H */
+#endif /* no xattr.h */