IMAGEX_EXTRACT_XML_OPTION,
IMAGEX_FLAGS_OPTION,
IMAGEX_FORCE_OPTION,
- IMAGEX_HARDLINK_OPTION,
IMAGEX_HEADER_OPTION,
IMAGEX_INCLUDE_INVALID_NAMES_OPTION,
IMAGEX_LAZY_OPTION,
IMAGEX_STAGING_DIR_OPTION,
IMAGEX_STREAMS_INTERFACE_OPTION,
IMAGEX_STRICT_ACLS_OPTION,
- IMAGEX_SYMLINK_OPTION,
IMAGEX_THREADS_OPTION,
IMAGEX_TO_STDOUT_OPTION,
IMAGEX_UNIX_DATA_OPTION,
static const struct option apply_options[] = {
{T("check"), no_argument, NULL, IMAGEX_CHECK_OPTION},
- {T("hardlink"), no_argument, NULL, IMAGEX_HARDLINK_OPTION},
- {T("symlink"), no_argument, NULL, IMAGEX_SYMLINK_OPTION},
{T("verbose"), no_argument, NULL, IMAGEX_VERBOSE_OPTION},
{T("ref"), required_argument, NULL, IMAGEX_REF_OPTION},
{T("unix-data"), no_argument, NULL, IMAGEX_UNIX_DATA_OPTION},
{T("rebuild"), no_argument, NULL, IMAGEX_REBUILD_OPTION},
{T("pipable"), no_argument, NULL, IMAGEX_PIPABLE_OPTION},
{T("not-pipable"), no_argument, NULL, IMAGEX_NOT_PIPABLE_OPTION},
+ {T("wimboot"), no_argument, NULL, IMAGEX_WIMBOOT_OPTION},
{NULL, 0, NULL, 0},
};
info->extract.total_parts);
}
break;
- case WIMLIB_PROGRESS_MSG_APPLY_TIMESTAMPS:
- imagex_printf(T("Setting timestamps on all extracted files...\n"));
- break;
- case WIMLIB_PROGRESS_MSG_EXTRACT_IMAGE_END:
- if (info->extract.extract_flags & WIMLIB_EXTRACT_FLAG_NTFS) {
- imagex_printf(T("Unmounting NTFS volume \"%"TS"\"...\n"),
- info->extract.target);
- }
- break;
case WIMLIB_PROGRESS_MSG_SPLIT_BEGIN_PART:
percent_done = TO_PERCENT(info->split.completed_bytes,
info->split.total_bytes);
case IMAGEX_CHECK_OPTION:
open_flags |= WIMLIB_OPEN_FLAG_CHECK_INTEGRITY;
break;
- case IMAGEX_HARDLINK_OPTION:
- extract_flags |= WIMLIB_EXTRACT_FLAG_HARDLINK;
- break;
- case IMAGEX_SYMLINK_OPTION:
- extract_flags |= WIMLIB_EXTRACT_FLAG_SYMLINK;
- break;
case IMAGEX_VERBOSE_OPTION:
/* No longer does anything. */
break;
tprintf(T("Link Group ID = 0x%016"PRIx64"\n"), dentry->hard_link_group_id);
tprintf(T("Link Count = %"PRIu32"\n"), dentry->num_links);
+ if (dentry->unix_mode != 0) {
+ tprintf(T("UNIX Data = uid:%"PRIu32" gid:%"PRIu32" mode:0%"PRIo32"\n"),
+ dentry->unix_uid, dentry->unix_gid, dentry->unix_mode);
+ }
+
for (uint32_t i = 0; i <= dentry->num_named_streams; i++) {
if (dentry->streams[i].stream_name) {
tprintf(T("\tData stream \"%"TS"\":\n"),
case IMAGEX_NOT_PIPABLE_OPTION:
write_flags |= WIMLIB_WRITE_FLAG_NOT_PIPABLE;
break;
+ case IMAGEX_WIMBOOT_OPTION:
+ export_flags |= WIMLIB_EXPORT_FLAG_WIMBOOT;
+ break;
default:
goto out_usage;
}
if (compression_type == WIMLIB_COMPRESSION_TYPE_INVALID) {
/* The user did not specify a compression type; default
- * to that of the source WIM, unless --pack-streams or
- * --solid was specified. */
+ * to that of the source WIM, unless --pack-streams,
+ * --solid, or --wimboot was specified. */
if (write_flags & WIMLIB_WRITE_FLAG_PACK_STREAMS)
compression_type = WIMLIB_COMPRESSION_TYPE_LZMS;
+ else if (export_flags & WIMLIB_EXPORT_FLAG_WIMBOOT)
+ compression_type = WIMLIB_COMPRESSION_TYPE_XPRESS;
else
compression_type = src_info.compression_type;
}
if (ret)
goto out_free_src_wim;
- /* Use same chunk size if compression type is the same. */
- if (compression_type == src_info.compression_type &&
- chunk_size == UINT32_MAX)
+ if ((export_flags & WIMLIB_EXPORT_FLAG_WIMBOOT)
+ && compression_type == WIMLIB_COMPRESSION_TYPE_XPRESS)
+ {
+ /* For --wimboot export, use small XPRESS chunks. */
+ wimlib_set_output_chunk_size(dest_wim, 4096);
+ } else if (compression_type == src_info.compression_type &&
+ chunk_size == UINT32_MAX)
+ {
+ /* Use same chunk size if compression type is the same. */
wimlib_set_output_chunk_size(dest_wim, src_info.chunk_size);
+ }
}
if (chunk_size != UINT32_MAX) {
extract_flags |= WIMLIB_EXTRACT_FLAG_TO_STDOUT;
imagex_info_file = stderr;
imagex_be_quiet = true;
+ set_fd_to_binary_mode(STDOUT_FILENO);
break;
case IMAGEX_INCLUDE_INVALID_NAMES_OPTION:
extract_flags |= WIMLIB_EXTRACT_FLAG_REPLACE_INVALID_FILENAMES;
" %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME | all)]\n"
" (DIRECTORY | NTFS_VOLUME) [--check] [--ref=\"GLOB\"]\n"
" [--no-acls] [--strict-acls] [--no-attributes]\n"
-" [--rpfix] [--norpfix] [--hardlink] [--symlink]\n"
-" [--include-invalid-names] [--wimboot]\n"
+" [--rpfix] [--norpfix] [--include-invalid-names]\n"
+" [--wimboot]\n"
),
[CMD_CAPTURE] =
T(