X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=programs%2Fimagex.c;h=0e6197309e484cb46dc0c00651084188de591e99;hb=672dbeabbf152aefb1d8a7211d3c8a1feb3e1e51;hp=b21de01bdbcadfb80727fde8d5b378f2317c19a3;hpb=0945405bedb03d9929243e2eab30f6555de281ae;p=wimlib diff --git a/programs/imagex.c b/programs/imagex.c index b21de01b..0e619730 100644 --- a/programs/imagex.c +++ b/programs/imagex.c @@ -6,7 +6,7 @@ */ /* - * Copyright (C) 2012, 2013, 2014, 2015 Eric Biggers + * Copyright (C) 2012-2016 Eric Biggers * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -182,7 +182,6 @@ enum { IMAGEX_RECOMPRESS_OPTION, IMAGEX_RECURSIVE_OPTION, IMAGEX_REF_OPTION, - IMAGEX_RESUME_OPTION, IMAGEX_RPFIX_OPTION, IMAGEX_SNAPSHOT_OPTION, IMAGEX_SOFT_OPTION, @@ -216,9 +215,6 @@ static const struct option apply_options[] = { {T("rpfix"), no_argument, NULL, IMAGEX_RPFIX_OPTION}, {T("norpfix"), no_argument, NULL, IMAGEX_NORPFIX_OPTION}, {T("include-invalid-names"), no_argument, NULL, IMAGEX_INCLUDE_INVALID_NAMES_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}, @@ -518,9 +514,9 @@ print_available_compression_types(FILE *fp) tfputs(s, fp); } -/* Parse the argument to --compress */ +/* Parse the argument to --compress or --solid-compress */ static int -get_compression_type(tchar *optarg) +get_compression_type(tchar *optarg, bool solid) { int ctype; unsigned int compression_level = 0; @@ -543,15 +539,27 @@ get_compression_type(tchar *optarg) if (!tstrcasecmp(optarg, T("maximum")) || !tstrcasecmp(optarg, T("lzx")) || - !tstrcasecmp(optarg, T("max"))) + !tstrcasecmp(optarg, T("max"))) { ctype = WIMLIB_COMPRESSION_TYPE_LZX; - else if (!tstrcasecmp(optarg, T("fast")) || !tstrcasecmp(optarg, T("xpress"))) + } else if (!tstrcasecmp(optarg, T("fast")) || !tstrcasecmp(optarg, T("xpress"))) { ctype = WIMLIB_COMPRESSION_TYPE_XPRESS; - else if (!tstrcasecmp(optarg, T("recovery")) || !tstrcasecmp(optarg, T("lzms"))) + } else if (!tstrcasecmp(optarg, T("recovery"))) { + if (!solid) { + tfprintf(stderr, +T( +"Warning: use of '--compress=recovery' is discouraged because it behaves\n" +" differently from DISM. Instead, you typically want to use '--solid' to\n" +" create a solid LZMS-compressed WIM or \"ESD file\", similar to DISM's\n" +" /compress:recovery. But if you really want *non-solid* LZMS compression,\n" +" then you may suppress this warning by specifying '--compress=lzms' instead\n" +" of '--compress=recovery'.\n")); + } ctype = WIMLIB_COMPRESSION_TYPE_LZMS; - else if (!tstrcasecmp(optarg, T("none"))) + } else if (!tstrcasecmp(optarg, T("lzms"))) { + ctype = WIMLIB_COMPRESSION_TYPE_LZMS; + } else if (!tstrcasecmp(optarg, T("none"))) { ctype = WIMLIB_COMPRESSION_TYPE_NONE; - else { + } else { imagex_error(T("Invalid compression type \"%"TS"\"!"), optarg); print_available_compression_types(stderr); return WIMLIB_COMPRESSION_TYPE_INVALID; @@ -1708,9 +1716,6 @@ imagex_apply(int argc, tchar **argv, int cmd) extract_flags |= WIMLIB_EXTRACT_FLAG_REPLACE_INVALID_FILENAMES; extract_flags |= WIMLIB_EXTRACT_FLAG_ALL_CASE_CONFLICTS; break; - case IMAGEX_RESUME_OPTION: - extract_flags |= WIMLIB_EXTRACT_FLAG_RESUME; - break; case IMAGEX_WIMBOOT_OPTION: extract_flags |= WIMLIB_EXTRACT_FLAG_WIMBOOT; break; @@ -1905,7 +1910,7 @@ imagex_capture_or_append(int argc, tchar **argv, int cmd) add_flags &= ~WIMLIB_ADD_FLAG_WINCONFIG; break; case IMAGEX_COMPRESS_OPTION: - compression_type = get_compression_type(optarg); + compression_type = get_compression_type(optarg, false); if (compression_type == WIMLIB_COMPRESSION_TYPE_INVALID) goto out_err; break; @@ -1923,7 +1928,7 @@ imagex_capture_or_append(int argc, tchar **argv, int cmd) goto out_err; break; case IMAGEX_SOLID_COMPRESS_OPTION: - solid_ctype = get_compression_type(optarg); + solid_ctype = get_compression_type(optarg, true); if (solid_ctype == WIMLIB_COMPRESSION_TYPE_INVALID) goto out_err; break; @@ -2867,7 +2872,7 @@ imagex_export(int argc, tchar **argv, int cmd) write_flags |= WIMLIB_WRITE_FLAG_NO_CHECK_INTEGRITY; break; case IMAGEX_COMPRESS_OPTION: - compression_type = get_compression_type(optarg); + compression_type = get_compression_type(optarg, false); if (compression_type == WIMLIB_COMPRESSION_TYPE_INVALID) goto out_err; break; @@ -2895,7 +2900,7 @@ imagex_export(int argc, tchar **argv, int cmd) goto out_err; break; case IMAGEX_SOLID_COMPRESS_OPTION: - solid_ctype = get_compression_type(optarg); + solid_ctype = get_compression_type(optarg, true); if (solid_ctype == WIMLIB_COMPRESSION_TYPE_INVALID) goto out_err; break; @@ -3781,7 +3786,7 @@ imagex_optimize(int argc, tchar **argv, int cmd) break; case IMAGEX_COMPRESS_OPTION: write_flags |= WIMLIB_WRITE_FLAG_RECOMPRESS; - compression_type = get_compression_type(optarg); + compression_type = get_compression_type(optarg, false); if (compression_type == WIMLIB_COMPRESSION_TYPE_INVALID) goto out_err; break; @@ -3803,7 +3808,7 @@ imagex_optimize(int argc, tchar **argv, int cmd) goto out_err; break; case IMAGEX_SOLID_COMPRESS_OPTION: - solid_ctype = get_compression_type(optarg); + solid_ctype = get_compression_type(optarg, true); if (solid_ctype == WIMLIB_COMPRESSION_TYPE_INVALID) goto out_err; break; @@ -4518,7 +4523,7 @@ version(void) static const tchar *s = T( "wimlib-imagex (distributed with " PACKAGE " " PACKAGE_VERSION ")\n" -"Copyright (C) 2012, 2013, 2014, 2015 Eric Biggers\n" +"Copyright (C) 2012-2016 Eric Biggers\n" "License GPLv3+; GNU GPL version 3 or later .\n" "This is free software: you are free to change and redistribute it.\n" "There is NO WARRANTY, to the extent permitted by law.\n"