X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=programs%2Fimagex.c;h=1c077b7f2fae1afb1db12fc53cf0c99b8894c4a1;hb=9f4d013f39fef92d3fb733bbfa61cb5307699b21;hp=1f8018a3c95e2d189f46ad1737a17aa860bfa17b;hpb=b7071062542143113ad654d89ee6b0603b23b524;p=wimlib diff --git a/programs/imagex.c b/programs/imagex.c index 1f8018a3..1c077b7f 100644 --- a/programs/imagex.c +++ b/programs/imagex.c @@ -46,6 +46,8 @@ # include #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; } @@ -3002,6 +3000,15 @@ imagex_extract(int argc, tchar **argv, int cmd) if (!imagex_be_quiet) imagex_printf(T("Done extracting files.\n")); } else if (ret == WIMLIB_ERR_PATH_DOES_NOT_EXIST) { + if ((extract_flags & (WIMLIB_EXTRACT_FLAG_STRICT_GLOB | + WIMLIB_EXTRACT_FLAG_GLOB_PATHS)) + == (WIMLIB_EXTRACT_FLAG_STRICT_GLOB | + WIMLIB_EXTRACT_FLAG_GLOB_PATHS)) + { + tfprintf(stderr, + T("Note: You can use the '--nullglob' " + "option to ignore missing files.\n")); + } tfprintf(stderr, T("Note: You can use `%"TS"' to see what " "files and directories\n" " are in the WIM image.\n"), @@ -4029,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( @@ -4036,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(