X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fextract.c;fp=src%2Fextract.c;h=b59e22352f81f6078e8fc224a4df322817b12628;hp=a39c1c02210815b503f9c29e81a1806eda1a114c;hb=0e639be92660b408a20a1875eb1c1d609692999e;hpb=1fbda1dbe72721908b1f99f9f8abf1749e43f4c5 diff --git a/src/extract.c b/src/extract.c index a39c1c02..b59e2235 100644 --- a/src/extract.c +++ b/src/extract.c @@ -63,6 +63,7 @@ #include "wimlib/unix_data.h" #include "wimlib/wim.h" #include "wimlib/win32.h" /* for realpath() equivalent */ +#include "wimlib/xattr.h" #include "wimlib/xml.h" #define WIMLIB_EXTRACT_FLAG_FROM_PIPE 0x80000000 @@ -1224,6 +1225,8 @@ inode_tally_features(const struct wim_inode *inode, features->unix_data++; if (inode_has_object_id(inode)) features->object_ids++; + if (inode_has_linux_xattrs(inode)) + features->linux_xattrs++; } /* Tally features necessary to extract a dentry and the corresponding inode. */ @@ -1361,21 +1364,30 @@ do_feature_check(const struct wim_features *required_features, WARNING("Ignoring Windows NT security descriptors of %lu files", required_features->security_descriptors); - /* UNIX data. */ + /* Standard UNIX metadata */ if ((extract_flags & WIMLIB_EXTRACT_FLAG_UNIX_DATA) && required_features->unix_data && !supported_features->unix_data) { - ERROR("Extraction backend does not support UNIX data!"); + ERROR("Requested UNIX metadata extraction, but extraction " + "backend does not support it!"); return WIMLIB_ERR_UNSUPPORTED; } - if (required_features->unix_data && !(extract_flags & WIMLIB_EXTRACT_FLAG_UNIX_DATA)) { - WARNING("Ignoring UNIX metadata of %lu files", + WARNING("Ignoring UNIX metadata (uid/gid/mode/rdev) of %lu files", required_features->unix_data); } + /* Linux-style extended attributes */ + if (required_features->linux_xattrs && + (!supported_features->linux_xattrs || + !(extract_flags & WIMLIB_EXTRACT_FLAG_UNIX_DATA))) + { + WARNING("Ignoring Linux-style extended attributes of %lu files", + required_features->linux_xattrs); + } + /* Object IDs. */ if (required_features->object_ids && !supported_features->object_ids) { WARNING("Ignoring object IDs of %lu files",