]> wimlib.net Git - wimlib/blobdiff - programs/imagex.c
wimlib-imagex: remove old --pack-* option aliases for --solid-*
[wimlib] / programs / imagex.c
index b21de01bdbcadfb80727fde8d5b378f2317c19a3..fdd35c8072b089b19b6793da3d16a78ad60a3cb0 100644 (file)
@@ -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},
@@ -233,11 +229,8 @@ static const struct option capture_or_append_options[] = {
        {T("compress-slow"), no_argument,     NULL, IMAGEX_COMPRESS_SLOW_OPTION},
        {T("chunk-size"),  required_argument, NULL, IMAGEX_CHUNK_SIZE_OPTION},
        {T("solid"),       no_argument,      NULL, IMAGEX_SOLID_OPTION},
-       {T("pack-streams"), no_argument,      NULL, IMAGEX_SOLID_OPTION},
        {T("solid-compress"),required_argument, NULL, IMAGEX_SOLID_COMPRESS_OPTION},
-       {T("pack-compress"), required_argument, NULL, IMAGEX_SOLID_COMPRESS_OPTION},
        {T("solid-chunk-size"),required_argument, NULL, IMAGEX_SOLID_CHUNK_SIZE_OPTION},
-       {T("pack-chunk-size"), required_argument, NULL, IMAGEX_SOLID_CHUNK_SIZE_OPTION},
        {T("no-solid-sort"), no_argument,     NULL, IMAGEX_NO_SOLID_SORT_OPTION},
        {T("config"),      required_argument, NULL, IMAGEX_CONFIG_OPTION},
        {T("dereference"), no_argument,       NULL, IMAGEX_DEREFERENCE_OPTION},
@@ -288,11 +281,8 @@ static const struct option export_options[] = {
        {T("compress-slow"), no_argument,     NULL, IMAGEX_COMPRESS_SLOW_OPTION},
        {T("chunk-size"),  required_argument, NULL, IMAGEX_CHUNK_SIZE_OPTION},
        {T("solid"),       no_argument,       NULL, IMAGEX_SOLID_OPTION},
-       {T("pack-streams"),no_argument,       NULL, IMAGEX_SOLID_OPTION},
        {T("solid-compress"),required_argument, NULL, IMAGEX_SOLID_COMPRESS_OPTION},
-       {T("pack-compress"), required_argument, NULL, IMAGEX_SOLID_COMPRESS_OPTION},
        {T("solid-chunk-size"),required_argument, NULL, IMAGEX_SOLID_CHUNK_SIZE_OPTION},
-       {T("pack-chunk-size"), required_argument, NULL, IMAGEX_SOLID_CHUNK_SIZE_OPTION},
        {T("no-solid-sort"), no_argument,     NULL, IMAGEX_NO_SOLID_SORT_OPTION},
        {T("ref"),         required_argument, NULL, IMAGEX_REF_OPTION},
        {T("threads"),     required_argument, NULL, IMAGEX_THREADS_OPTION},
@@ -366,11 +356,8 @@ static const struct option optimize_options[] = {
        {T("recompress-slow"), no_argument,   NULL, IMAGEX_COMPRESS_SLOW_OPTION},
        {T("chunk-size"),  required_argument, NULL, IMAGEX_CHUNK_SIZE_OPTION},
        {T("solid"),       no_argument,       NULL, IMAGEX_SOLID_OPTION},
-       {T("pack-streams"),no_argument,       NULL, IMAGEX_SOLID_OPTION},
        {T("solid-compress"),required_argument, NULL, IMAGEX_SOLID_COMPRESS_OPTION},
-       {T("pack-compress"), required_argument, NULL, IMAGEX_SOLID_COMPRESS_OPTION},
        {T("solid-chunk-size"),required_argument, NULL, IMAGEX_SOLID_CHUNK_SIZE_OPTION},
-       {T("pack-chunk-size"), required_argument, NULL, IMAGEX_SOLID_CHUNK_SIZE_OPTION},
        {T("no-solid-sort"), no_argument,     NULL, IMAGEX_NO_SOLID_SORT_OPTION},
        {T("threads"),     required_argument, NULL, IMAGEX_THREADS_OPTION},
        {T("pipable"),     no_argument,       NULL, IMAGEX_PIPABLE_OPTION},
@@ -518,9 +505,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 +530,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 +1707,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 +1901,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 +1919,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 +2863,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 +2891,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 +3777,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 +3799,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 +4514,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 <http://gnu.org/licenses/gpl.html>.\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"