]> wimlib.net Git - wimlib/blobdiff - programs/imagex.c
wimexport: Add --recompress option
[wimlib] / programs / imagex.c
index 1a8407045dfaa46f30411fb43b844942b11bbbc2..1c077b7f2fae1afb1db12fc53cf0c99b8894c4a1 100644 (file)
@@ -46,6 +46,8 @@
 #  include <alloca.h>
 #endif
 
+#define WIMLIB_COMPRESSION_TYPE_INVALID (-1)
+
 #ifdef __WIN32__
 #  include "imagex-win32.h"
 #  define print_security_descriptor     win32_print_security_descriptor
@@ -166,7 +168,7 @@ enum {
        IMAGEX_NO_ACLS_OPTION,
        IMAGEX_NO_ATTRIBUTES_OPTION,
        IMAGEX_NO_REPLACE_OPTION,
-       IMAGEX_NO_WILDCARDS_OPTION,
+       IMAGEX_NO_GLOBS_OPTION,
        IMAGEX_NULLGLOB_OPTION,
        IMAGEX_ONE_FILE_ONLY_OPTION,
        IMAGEX_PACK_CHUNK_SIZE_OPTION,
@@ -269,6 +271,7 @@ static const struct option export_options[] = {
        {T("nocheck"),     no_argument,       NULL, IMAGEX_NOCHECK_OPTION},
        {T("no-check"),    no_argument,       NULL, IMAGEX_NOCHECK_OPTION},
        {T("compress"),    required_argument, NULL, IMAGEX_COMPRESS_OPTION},
+       {T("recompress"),  no_argument,       NULL, IMAGEX_RECOMPRESS_OPTION},
        {T("compress-slow"), no_argument,     NULL, IMAGEX_COMPRESS_SLOW_OPTION},
        {T("pack-streams"),no_argument,       NULL, IMAGEX_PACK_STREAMS_OPTION},
        {T("solid"),       no_argument,       NULL, IMAGEX_PACK_STREAMS_OPTION},
@@ -298,7 +301,8 @@ static const struct option extract_options[] = {
        {T("dest-dir"),    required_argument, NULL, IMAGEX_DEST_DIR_OPTION},
        {T("to-stdout"),   no_argument,       NULL, IMAGEX_TO_STDOUT_OPTION},
        {T("include-invalid-names"), no_argument, NULL, IMAGEX_INCLUDE_INVALID_NAMES_OPTION},
-       {T("no-wildcards"), no_argument,      NULL, IMAGEX_NO_WILDCARDS_OPTION},
+       {T("no-wildcards"), no_argument,      NULL, IMAGEX_NO_GLOBS_OPTION},
+       {T("no-globs"),     no_argument,      NULL, IMAGEX_NO_GLOBS_OPTION},
        {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},
@@ -1077,24 +1081,13 @@ imagex_progress_func(enum wimlib_progress_msg msg,
                        imagex_printf(T("\nWARNING: Excluding unsupported file or directory\n"
                                        "         \"%"TS"\" from capture\n"), info->scan.cur_path);
                        break;
-               case WIMLIB_SCAN_DENTRY_EXCLUDED_SYMLINK:
-                       imagex_printf(T("\nWARNING: Ignoring absolute symbolic link "
-                                       "with out-of-tree target:\n"
-                                       "           \"%"TS"\" => \"%"TS"\"\n"
-                                       "           (Use --norpfix to capture "
-                                       "absolute symbolic links as-is)\n"),
-                                       info->scan.cur_path, info->scan.symlink_target);
-                       break;
                case WIMLIB_SCAN_DENTRY_FIXED_SYMLINK:
                        /* Symlink fixups are enabled by default.  This is
                         * mainly intended for Windows, which for some reason
                         * uses absolute junctions (with drive letters!) in the
                         * default installation.  On UNIX-like systems, warn the
                         * user when fixing the target of an absolute symbolic
-                        * link, so they know to disable this if they want.
-                        * (Although, more likely they will get the warning
-                        * about an absolute symbolic link with an out-of-tree
-                        * target first.)  */
+                        * link, so they know to disable this if they want.  */
                #ifndef __WIN32__
                        imagex_printf(T("\nWARNING: Adjusted target of "
                                        "absolute symbolic link \"%"TS"\"\n"
@@ -1103,6 +1096,8 @@ imagex_progress_func(enum wimlib_progress_msg msg,
                                        info->scan.cur_path);
                #endif
                        break;
+               default:
+                       break;
                }
                break;
        case WIMLIB_PROGRESS_MSG_SCAN_END:
@@ -2618,6 +2613,9 @@ imagex_export(int argc, tchar **argv, int cmd)
                        if (compression_type == WIMLIB_COMPRESSION_TYPE_INVALID)
                                goto out_err;
                        break;
+               case IMAGEX_RECOMPRESS_OPTION:
+                       write_flags |= WIMLIB_WRITE_FLAG_RECOMPRESS;
+                       break;
                case IMAGEX_COMPRESS_SLOW_OPTION:
                        write_flags |= WIMLIB_WRITE_FLAG_RECOMPRESS;
                        set_compress_slow();
@@ -2915,7 +2913,7 @@ imagex_extract(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_NO_WILDCARDS_OPTION:
+               case IMAGEX_NO_GLOBS_OPTION:
                        extract_flags &= ~WIMLIB_EXTRACT_FLAG_GLOB_PATHS;
                        break;
                case IMAGEX_NULLGLOB_OPTION:
@@ -2940,7 +2938,7 @@ imagex_extract(int argc, tchar **argv, int cmd)
        if (!(extract_flags & (WIMLIB_EXTRACT_FLAG_GLOB_PATHS |
                               WIMLIB_EXTRACT_FLAG_STRICT_GLOB)))
        {
-               imagex_error(T("Can't combine --no-wildcards and --nullglob!"));
+               imagex_error(T("Can't combine --no-globs and --nullglob!"));
                goto out_err;
        }
 
@@ -4038,6 +4036,7 @@ T(
 "                    DEST_WIMFILE [DEST_IMAGE_NAME [DEST_IMAGE_DESCRIPTION]]\n"
 "                    [--boot] [--check] [--nocheck] [--compress=TYPE]\n"
 "                    [--ref=\"GLOB\"] [--threads=NUM_THREADS] [--rebuild]\n"
+"                    [--wimboot]\n"
 ),
 [CMD_EXTRACT] =
 T(
@@ -4045,7 +4044,7 @@ T(
 "                    [--check] [--ref=\"GLOB\"] [--dest-dir=CMD_DIR]\n"
 "                    [--to-stdout] [--no-acls] [--strict-acls]\n"
 "                    [--no-attributes] [--include-invalid-names]\n"
-"                    [--no-wildcards] [--nullglob] [--preserve-dir-structure]\n"
+"                    [--no-globs] [--nullglob] [--preserve-dir-structure]\n"
 ),
 [CMD_INFO] =
 T(