#ifndef __XATTR_H
#define __XATTR_H
+#if defined(HAVE_LINUX_OS)
+#define BXATTR_ENOTSUP EOPNOTSUPP
+#elif defined(HAVE_DARWIN_OS)
+#define BXATTR_ENOTSUP ENOTSUP
+#endif
+
/*
* Magic used in the magic field of the xattr struct.
* This way we can see we encounter a valid xattr struct.
char target[PATH_MAX];
};
+#define BXATTR_FLAG_SAVE_NATIVE 0x01
+#define BXATTR_FLAG_RESTORE_NATIVE 0x02
+
+struct xattr_build_data_t {
+ uint32_t nr_errors;
+ uint32_t nr_saved;
+ POOLMEM *content;
+ uint32_t content_length;
+ alist *link_cache;
+};
+
+struct xattr_parse_data_t {
+ uint32_t nr_errors;
+};
+
/*
* Internal tracking data.
*/
struct xattr_data_t {
- POOLMEM *content;
- uint32_t content_length;
- uint32_t nr_errors;
- uint32_t nr_saved;
- alist *link_cache;
+ uint32_t flags; /* See BXATTR_FLAG_* */
+ uint32_t current_dev;
+ union {
+ struct xattr_build_data_t *build;
+ struct xattr_parse_data_t *parse;
+ } u;
};
/*