if (!tstrcmp(wimfile, T("-"))) {
/* Attempt to apply pipable WIM from standard input. */
- if (argc < 3) {
- imagex_error(T("Imagex index or name must be explicitly "
- "specified when applying pipable WIM on "
- "standard input."));
- goto out_usage;
+ if (argc == 2) {
+ image_num_or_name = NULL;
+ target = argv[1];
+ } else {
+ image_num_or_name = argv[1];
+ target = argv[2];
}
- image_num_or_name = argv[1];
- target = argv[2];
wim = NULL;
num_additional_swms = 0;
additional_swms = NULL;
}
#endif
-#ifdef __WIN32__
- win32_acquire_restore_privileges();
-#endif
if (wim) {
ret = wimlib_extract_image(wim, image, target, extract_flags,
additional_swms, num_additional_swms,
}
if (ret == 0)
imagex_printf(T("Done applying WIM image.\n"));
-#ifdef __WIN32__
- win32_release_restore_privileges();
-#endif
out_free_swms:
for (unsigned i = 0; i < num_additional_swms; i++)
wimlib_free(additional_swms[i]);
tsprintf(name_end, T(" (%lu)"), conflict_idx);
}
}
-#ifdef __WIN32__
- win32_acquire_capture_privileges();
-#endif
-
ret = wimlib_add_image_multisource(wim,
capture_sources,
num_sources,
add_image_flags,
imagex_progress_func);
if (ret)
- goto out_release_privs;
+ goto out_wimlib_free;
if (desc || flags_element) {
/* User provided <DESCRIPTION> or <FLAGS> element. Get the
info.image_count,
desc);
if (ret)
- goto out_release_privs;
+ goto out_wimlib_free;
}
if (flags_element) {
ret = wimlib_set_image_flags(wim, info.image_count,
flags_element);
if (ret)
- goto out_release_privs;
+ goto out_wimlib_free;
}
}
write_flags, num_threads,
imagex_progress_func);
}
-out_release_privs:
-#ifdef __WIN32__
- win32_release_capture_privileges();
-#endif
out_wimlib_free:
wimlib_free(wim);
out_free_config:
num_additional_swms = 0;
}
-#ifdef __WIN32__
- win32_acquire_restore_privileges();
-#endif
-
ret = wimlib_extract_files(wim, image, cmds, num_cmds, 0,
additional_swms, num_additional_swms,
imagex_progress_func);
" are in the WIM image.\n"),
get_cmd_string(CMD_INFO, false));
}
-#ifdef __WIN32__
- win32_release_restore_privileges();
-#endif
for (unsigned i = 0; i < num_additional_swms; i++)
wimlib_free(additional_swms[i]);
free(additional_swms);
}
}
-#ifdef __WIN32__
- if (have_add_command)
- win32_acquire_capture_privileges();
-#endif
-
/* Execute the update commands */
ret = wimlib_update_image(wim, image, cmds, num_cmds, update_flags,
imagex_progress_func);
if (ret)
- goto out_release_privs;
+ goto out_free_cmds;
/* Overwrite the updated WIM */
ret = wimlib_overwrite(wim, write_flags, num_threads,
imagex_progress_func);
-out_release_privs:
-#ifdef __WIN32__
- if (have_add_command)
- win32_release_capture_privileges();
-#endif
+out_free_cmds:
free(cmds);
out_free_cmd_file_contents:
free(cmd_file_contents);
static const tchar *usage_strings[] = {
[CMD_APPEND] =
T(
-" %"TS" (DIRECTORY | NTFS_VOLUME) WIMFILE [IMAGE_NAME]\n"
-" [DESCRIPTION] [--boot] [--check] [--nocheck]\n"
-" [--flags EDITION_ID] [--verbose] [--dereference]\n"
-" [--config=FILE] [--threads=NUM_THREADS] [--rebuild]\n"
-" [--unix-data] [--source-list] [--no-acls]\n"
+" %"TS" (DIRECTORY | NTFS_VOLUME) WIMFILE\n"
+" [IMAGE_NAME [IMAGE_DESCRIPTION]] [--boot] [--check]\n"
+" [--nocheck] [--flags EDITION_ID] [--verbose]\n"
+" [--dereference] [--config=FILE] [--threads=NUM_THREADS]\n"
+" [--rebuild] [--unix-data] [--source-list] [--no-acls]\n"
" [--strict-acls] [--rpfix] [--norpfix] [--pipable]\n"
" [--not-pipable]\n"
),
[CMD_APPLY] =
T(
-" %"TS" WIMFILE [IMAGE_NUM | IMAGE_NAME | all]\n"
+" %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME | all)]\n"
" (DIRECTORY | NTFS_VOLUME) [--check] [--hardlink]\n"
" [--symlink] [--verbose] [--ref=\"GLOB\"] [--unix-data]\n"
" [--no-acls] [--strict-acls] [--rpfix] [--norpfix]\n"
),
[CMD_CAPTURE] =
T(
-" %"TS" (DIRECTORY | NTFS_VOLUME) WIMFILE [IMAGE_NAME]\n"
-" [DESCRIPTION] [--boot] [--check] [--nocheck]\n"
-" [--compress=TYPE] [--flags EDITION_ID] [--verbose]\n"
-" [--dereference] [--config=FILE]\n"
+" %"TS" (DIRECTORY | NTFS_VOLUME) WIMFILE\n"
+" [IMAGE_NAME [IMAGE_DESCRIPTION]] [--boot] [--check]\n"
+" [--nocheck] [--compress=TYPE] [--flags EDITION_ID]\n"
+" [--verbose] [--dereference] [--config=FILE]\n"
" [--threads=NUM_THREADS] [--unix-data] [--source-list]\n"
" [--no-acls] [--strict-acls] [--rpfix] [--norpfix]\n"
" [--pipable] [--not-pipable]\n"
[CMD_EXPORT] =
T(
" %"TS" SRC_WIMFILE (SRC_IMAGE_NUM | SRC_IMAGE_NAME | all ) \n"
-" DEST_WIMFILE [DEST_IMAGE_NAME] [DEST_IMAGE_DESCRIPTION]\n"
+" DEST_WIMFILE [DEST_IMAGE_NAME [DEST_IMAGE_DESCRIPTION]]\n"
" [--boot] [--check] [--nocheck] [--compress=TYPE]\n"
" [--ref=\"GLOB\"] [--threads=NUM_THREADS] [--rebuild]\n"
" [--pipable] [--not-pipable]\n"
T(
" %"TS" WIMFILE (IMAGE_NUM | IMAGE_NAME) [PATH...]\n"
" [--check] [--ref=\"GLOB\"] [--verbose] [--unix-data]\n"
-" [--no-acls] [--strict-acls] [--to-stdout] [--dest-dir=CMD_DIR]\n"
-" [--include-invalid-names]\n"
+" [--no-acls] [--strict-acls] [--to-stdout]\n"
+" [--dest-dir=CMD_DIR] [--include-invalid-names]\n"
),
[CMD_INFO] =
T(
-" %"TS" WIMFILE [IMAGE_NUM | IMAGE_NAME] [NEW_NAME]\n"
-" [NEW_DESC] [--boot] [--check] [--nocheck] [--header]\n"
+" %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME) [NEW_NAME\n"
+" [NEW_DESC]]] [--boot] [--check] [--nocheck] [--header]\n"
" [--lookup-table] [--xml] [--extract-xml FILE]\n"
" [--metadata]\n"
),
[CMD_JOIN] =
T(
-" %"TS" [--check] WIMFILE SPLIT_WIM...\n"
+" %"TS" OUT_WIMFILE SPLIT_WIM_PART... [--check]\n"
),
#if WIM_MOUNTING_SUPPORTED
[CMD_MOUNT] =
T(
-" %"TS" WIMFILE (IMAGE_NUM | IMAGE_NAME) DIRECTORY\n"
+" %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME)] DIRECTORY\n"
" [--check] [--debug] [--streams-interface=INTERFACE]\n"
" [--ref=\"GLOB\"] [--unix-data] [--allow-other]\n"
),
[CMD_MOUNTRW] =
T(
-" %"TS" WIMFILE [IMAGE_NUM | IMAGE_NAME] DIRECTORY\n"
+" %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME)] DIRECTORY\n"
" [--check] [--debug] [--streams-interface=INTERFACE]\n"
" [--staging-dir=CMD_DIR] [--unix-data] [--allow-other]\n"
),
),
[CMD_SPLIT] =
T(
-" %"TS" WIMFILE SPLIT_WIMFILE PART_SIZE_MB [--check]\n"
+" %"TS" WIMFILE SPLIT_WIM_PART_1 PART_SIZE_MB [--check]\n"
),
#if WIM_MOUNTING_SUPPORTED
[CMD_UNMOUNT] =
static void
version(void)
{
- static const tchar *format =
+ static const tchar *s =
T(
-"%"TS" (" PACKAGE ") " PACKAGE_VERSION "\n"
+IMAGEX_PROGNAME " (" PACKAGE ") " PACKAGE_VERSION "\n"
"Copyright (C) 2012, 2013 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"
"\n"
"Report bugs to "PACKAGE_BUGREPORT".\n"
);
- tprintf(format, invocation_name);
+ tfputs(s, stdout);
}
}
}
- /* Unless already known from the invocation name, search for the
- * function to handle the specified subcommand. */
+ /* Unless already known from the invocation name, determine which
+ * command was specified. */
if (cmd == CMD_NONE) {
if (argc < 2) {
imagex_error(T("No command specified!\n"));
}
}
- /* Handle --help and --version for all commands. Note that this will
- * not return if either of these arguments are present. */
+ /* Handle --help and --version. --help can be either for the program as
+ * a whole (cmd == CMD_NONE) or just for a specific command (cmd !=
+ * CMD_NONE). Note: help_or_version() will not return if a --help or
+ * --version argument was found. */
help_or_version(argc, argv, cmd);
+ /* Bail if a valid command was not specified. */
if (cmd == CMD_NONE) {
imagex_error(T("Unrecognized command: `%"TS"'\n"), argv[1]);
usage_all(stderr);
exit(2);
}
- /* The user may like to see more informative error messages. */
+ /* Enable warning and error messages in wimlib be more user-friendly.
+ * */
wimlib_set_print_errors(true);
- /* Initialize the library. */
+ /* Initialize wimlib. */
ret = wimlib_global_init(init_flags);
if (ret)
goto out_check_status;
}
out_check_status:
/* Exit status (ret): -1 indicates an error found by 'wimlib-imagex'
- * outside of the wimlib library code. 0 indicates success. > 0
- * indicates a wimlib error code from which an error message can be
- * printed. */
+ * itself (not by wimlib). 0 indicates success. > 0 indicates a wimlib
+ * error code from which an error message can be printed. */
if (ret > 0) {
imagex_error(T("Exiting with error code %d:\n"
" %"TS"."), ret,
if (ret == WIMLIB_ERR_NTFS_3G && errno != 0)
imagex_error_with_errno(T("errno"));
}
- /* Make the library free any resources it's holding (not strictly
- * necessary because the process is ending anyway). */
+ /* Make wimlib free any resources it's holding (although this is not
+ * strictly necessary because the process is ending anyway). */
wimlib_global_cleanup();
return ret;
}