IMAGEX_CHUNK_SIZE_OPTION,
IMAGEX_COMMAND_OPTION,
IMAGEX_COMMIT_OPTION,
+ IMAGEX_COMPACT_OPTION,
IMAGEX_COMPRESS_OPTION,
IMAGEX_COMPRESS_SLOW_OPTION,
IMAGEX_CONFIG_OPTION,
/* --resume is undocumented for now as it needs improvement. */
{T("resume"), no_argument, NULL, IMAGEX_RESUME_OPTION},
{T("wimboot"), no_argument, NULL, IMAGEX_WIMBOOT_OPTION},
+ {T("compact"), required_argument, NULL, IMAGEX_COMPACT_OPTION},
{NULL, 0, NULL, 0},
};
{T("nullglob"), no_argument, NULL, IMAGEX_NULLGLOB_OPTION},
{T("preserve-dir-structure"), no_argument, NULL, IMAGEX_PRESERVE_DIR_STRUCTURE_OPTION},
{T("wimboot"), no_argument, NULL, IMAGEX_WIMBOOT_OPTION},
+ {T("compact"), required_argument, NULL, IMAGEX_COMPACT_OPTION},
{NULL, 0, NULL, 0},
};
return ctype;
}
+/* Parse the argument to --compact */
+static int
+set_compact_mode(const tchar *arg, int *extract_flags)
+{
+ int flag = 0;
+ if (!tstrcasecmp(arg, T("xpress4k")))
+ flag = WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS4K;
+ else if (!tstrcasecmp(arg, T("xpress8k")))
+ flag = WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS8K;
+ else if (!tstrcasecmp(arg, T("xpress16k")))
+ flag = WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS16K;
+ else if (!tstrcasecmp(arg, T("lzx")))
+ flag = WIMLIB_EXTRACT_FLAG_COMPACT_LZX;
+
+ if (flag) {
+ *extract_flags |= flag;
+ return 0;
+ }
+
+ imagex_error(T(
+"\"%"TS"\" is not a recognized System Compression format. The options are:"
+"\n"
+" --compact=xpress4k\n"
+" --compact=xpress8k\n"
+" --compact=xpress16k\n"
+" --compact=lzx\n"
+ ), arg);
+ return -1;
+}
+
+
static void
set_compress_slow(void)
{
percent_done = TO_PERCENT(info->extract.completed_bytes,
info->extract.total_bytes);
unit_shift = get_unit(info->extract.total_bytes, &unit_name);
- imagex_printf(T("\rExtracting files: "
+ imagex_printf(T("\rExtracting file data: "
"%"PRIu64" %"TS" of %"PRIu64" %"TS" (%u%%) done"),
info->extract.completed_bytes >> unit_shift,
unit_name,
case IMAGEX_WIMBOOT_OPTION:
extract_flags |= WIMLIB_EXTRACT_FLAG_WIMBOOT;
break;
+ case IMAGEX_COMPACT_OPTION:
+ ret = set_compact_mode(optarg, &extract_flags);
+ if (ret)
+ goto out_free_refglobs;
+ break;
default:
goto out_usage;
}
attr_string[0] = T('\0');
if (info->pipable)
- tstrcat(attr_string, "Pipable, ");
+ tstrcat(attr_string, T("Pipable, "));
if (info->has_integrity_table)
- tstrcat(attr_string, "Integrity info, ");
+ tstrcat(attr_string, T("Integrity info, "));
if (info->has_rpfix)
- tstrcat(attr_string, "Relative path junction, ");
+ tstrcat(attr_string, T("Relative path junction, "));
if (info->resource_only)
- tstrcat(attr_string, "Resource only, ");
+ tstrcat(attr_string, T("Resource only, "));
if (info->metadata_only)
- tstrcat(attr_string, "Metadata only, ");
+ tstrcat(attr_string, T("Metadata only, "));
if (info->is_marked_readonly)
- tstrcat(attr_string, "Readonly, ");
+ tstrcat(attr_string, T("Readonly, "));
- p = tstrchr(attr_string, '\0');
+ p = tstrchr(attr_string, T('\0'));
if (p >= &attr_string[2] && p[-1] == T(' ') && p[-2] == T(','))
- p[-2] = '\0';
+ p[-2] = T('\0');
tprintf(T("Attributes: %"TS"\n\n"), attr_string);
}
case IMAGEX_WIMBOOT_OPTION:
extract_flags |= WIMLIB_EXTRACT_FLAG_WIMBOOT;
break;
+ case IMAGEX_COMPACT_OPTION:
+ ret = set_compact_mode(optarg, &extract_flags);
+ if (ret)
+ goto out_free_refglobs;
+ break;
default:
goto out_usage;
}
" [--check] [--ref=\"GLOB\"] [--no-acls] [--strict-acls]\n"
" [--no-attributes] [--rpfix] [--norpfix]\n"
" [--include-invalid-names] [--wimboot] [--unix-data]\n"
+" [--compact=FORMAT]\n"
),
[CMD_CAPTURE] =
T(