#include "wimlib/reparse.h"
#include "wimlib/resource.h"
#include "wimlib/security.h"
+#include "wimlib/unix_data.h"
#ifdef __WIN32__
# include "wimlib/win32.h" /* for realpath() equivalent */
#endif
#include <sys/stat.h>
#include <unistd.h>
-#define WIMLIB_EXTRACT_FLAG_MULTI_IMAGE 0x80000000
-#define WIMLIB_EXTRACT_FLAG_FROM_PIPE 0x40000000
-#define WIMLIB_EXTRACT_FLAG_IMAGEMODE 0x20000000
+#define WIMLIB_EXTRACT_FLAG_FROM_PIPE 0x80000000
+#define WIMLIB_EXTRACT_FLAG_IMAGEMODE 0x40000000
/* Keep in sync with wimlib.h */
#define WIMLIB_EXTRACT_MASK_PUBLIC \
#define PWM_ALLOW_WIM_HDR 0x00001
-#define PWM_SILENT_EOF 0x00002
/* Read the header from a stream in a pipable WIM. */
static int
return 0;
read_error:
- if (ret != WIMLIB_ERR_UNEXPECTED_END_OF_FILE || !(flags & PWM_SILENT_EOF))
- ERROR_WITH_ERRNO("Error reading pipable WIM from pipe");
+ ERROR_WITH_ERRNO("Error reading pipable WIM from pipe");
return ret;
}
for (i = 0; i < num_trees; i++) {
struct wim_dentry *d = trees[i];
while (!dentry_is_root(d)) {
- d = d->parent;
+ d = d->d_parent;
if (d->tmp_flag)
goto tree_contained;
}
place_after = dentry_list;
ancestor = dentry;
do {
- ancestor = ancestor->parent;
+ ancestor = ancestor->d_parent;
if (will_extract_dentry(ancestor)) {
place_after = &ancestor->d_extraction_list_node;
break;
ancestor = dentry;
do {
- ancestor = ancestor->parent;
+ ancestor = ancestor->d_parent;
if (will_extract_dentry(ancestor))
break;
list_add(&ancestor->d_extraction_list_node, place_after);
return WIMLIB_ERR_UNSUPPORTED;
}
+ if (required_features->unix_data &&
+ !(extract_flags & WIMLIB_EXTRACT_FLAG_UNIX_DATA))
+ {
+ WARNING("Ignoring UNIX metadata of %lu files",
+ required_features->unix_data);
+ }
+
/* DOS Names. */
if (required_features->short_names &&
!supported_features->short_names)
int image;
const tchar *image_name;
- extract_flags |= WIMLIB_EXTRACT_FLAG_MULTI_IMAGE;
-
if (extract_flags & WIMLIB_EXTRACT_FLAG_NTFS) {
ERROR("Cannot extract multiple images in NTFS extraction mode.");
return WIMLIB_ERR_INVALID_PARAM;