X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=programs%2Fimagex.c;h=0bba3546bd55a8c7fc381f63cafa8d196b2477e3;hp=372e115b64509d8b6a85ba72061038160c353aef;hb=57c23c5aaf99ac0f7ce83bd0d811fe5ebe71cd37;hpb=d33bda72d5d980aa4de9739ed5b55b424093e8ac diff --git a/programs/imagex.c b/programs/imagex.c index 372e115b..0bba3546 100644 --- a/programs/imagex.c +++ b/programs/imagex.c @@ -89,13 +89,14 @@ IMAGEX_PROGNAME" append (DIRECTORY | NTFS_VOLUME) WIMFILE [IMAGE_NAME]\n" " [--verbose] [--dereference] [--config=FILE]\n" " [--threads=NUM_THREADS] [--rebuild] [--unix-data]\n" " [--source-list] [--no-acls] [--strict-acls]\n" +" [--rpfix] [--norpfix]\n" ), [APPLY] = T( IMAGEX_PROGNAME" apply WIMFILE [IMAGE_NUM | IMAGE_NAME | all]\n" " (DIRECTORY | NTFS_VOLUME) [--check] [--hardlink]\n" " [--symlink] [--verbose] [--ref=\"GLOB\"] [--unix-data]\n" -" [--no-acls] [--strict-acls]\n" +" [--no-acls] [--strict-acls] [--rpfix] [--norpfix]\n" ), [CAPTURE] = T( @@ -104,6 +105,7 @@ IMAGEX_PROGNAME" capture (DIRECTORY | NTFS_VOLUME) WIMFILE [IMAGE_NAME]\n" " [--flags EDITION_ID] [--verbose] [--dereference]\n" " [--config=FILE] [--threads=NUM_THREADS] [--unix-data]\n" " [--source-list] [--no-acls] [--strict-acls]\n" +" [--rpfix] [--norpfix]\n" ), [DELETE] = T( @@ -173,9 +175,11 @@ enum { IMAGEX_LOOKUP_TABLE_OPTION, IMAGEX_METADATA_OPTION, IMAGEX_NO_ACLS_OPTION, + IMAGEX_NORPFIX_OPTION, IMAGEX_REBULID_OPTION, IMAGEX_RECOMPRESS_OPTION, IMAGEX_REF_OPTION, + IMAGEX_RPFIX_OPTION, IMAGEX_SOFT_OPTION, IMAGEX_SOURCE_LIST_OPTION, IMAGEX_STAGING_DIR_OPTION, @@ -198,6 +202,8 @@ static const struct option apply_options[] = { {T("noacls"), no_argument, NULL, IMAGEX_NO_ACLS_OPTION}, {T("no-acls"), no_argument, NULL, IMAGEX_NO_ACLS_OPTION}, {T("strict-acls"), no_argument, NULL, IMAGEX_STRICT_ACLS_OPTION}, + {T("rpfix"), no_argument, NULL, IMAGEX_RPFIX_OPTION}, + {T("norpfix"), no_argument, NULL, IMAGEX_NORPFIX_OPTION}, {NULL, 0, NULL, 0}, }; static const struct option capture_or_append_options[] = { @@ -215,6 +221,8 @@ static const struct option capture_or_append_options[] = { {T("noacls"), no_argument, NULL, IMAGEX_NO_ACLS_OPTION}, {T("no-acls"), no_argument, NULL, IMAGEX_NO_ACLS_OPTION}, {T("strict-acls"), no_argument, NULL, IMAGEX_STRICT_ACLS_OPTION}, + {T("rpfix"), no_argument, NULL, IMAGEX_RPFIX_OPTION}, + {T("norpfix"), no_argument, NULL, IMAGEX_NORPFIX_OPTION}, {NULL, 0, NULL, 0}, }; static const struct option delete_options[] = { @@ -1178,6 +1186,12 @@ imagex_apply(int argc, tchar **argv) case IMAGEX_STRICT_ACLS_OPTION: extract_flags |= WIMLIB_EXTRACT_FLAG_STRICT_ACLS; break; + case IMAGEX_NORPFIX_OPTION: + extract_flags |= WIMLIB_EXTRACT_FLAG_NORPFIX; + break; + case IMAGEX_RPFIX_OPTION: + extract_flags |= WIMLIB_EXTRACT_FLAG_RPFIX; + break; default: usage(APPLY); return -1; @@ -1344,6 +1358,12 @@ imagex_capture_or_append(int argc, tchar **argv) case IMAGEX_STRICT_ACLS_OPTION: add_image_flags |= WIMLIB_ADD_IMAGE_FLAG_STRICT_ACLS; break; + case IMAGEX_RPFIX_OPTION: + add_image_flags |= WIMLIB_ADD_IMAGE_FLAG_RPFIX; + break; + case IMAGEX_NORPFIX_OPTION: + add_image_flags |= WIMLIB_ADD_IMAGE_FLAG_NORPFIX; + break; default: usage(cmd); return -1; @@ -2057,7 +2077,7 @@ imagex_info(int argc, tchar **argv) ret = file_writable(wimfile); if (ret != 0) - return ret; + goto out; if (check) write_flags = WIMLIB_WRITE_FLAG_CHECK_INTEGRITY; @@ -2526,11 +2546,16 @@ main(int argc, char **argv) { const struct imagex_command *cmd; int ret; + int init_flags = 0; #ifndef __WIN32__ - setlocale(LC_ALL, ""); - { - char *codeset = nl_langinfo(CODESET); + if (getenv("WIMLIB_IMAGEX_USE_UTF8")) { + init_flags |= WIMLIB_INIT_FLAG_ASSUME_UTF8; + } else { + char *codeset; + + setlocale(LC_ALL, ""); + codeset = nl_langinfo(CODESET); if (!strstr(codeset, "UTF-8") && !strstr(codeset, "UTF8") && !strstr(codeset, "utf-8") && @@ -2538,7 +2563,10 @@ main(int argc, char **argv) { fputs( "WARNING: Running "IMAGEX_PROGNAME" in a UTF-8 locale is recommended!\n" -" (Maybe try: `export LANG=en_US.UTF-8'?\n", stderr); +" Maybe try: `export LANG=en_US.UTF-8'?\n" +" Alternatively, set the environmental variable WIMLIB_IMAGEX_USE_UTF8\n" +" to any value to force wimlib to use UTF-8.\n", + stderr); } } @@ -2561,7 +2589,7 @@ main(int argc, char **argv) wimlib_set_print_errors(true); /* Do any initializations that the library needs */ - ret = wimlib_global_init(); + ret = wimlib_global_init(init_flags); if (ret) goto out_check_status;