}
#endif /* !__WIN32 */
+/* Don't confuse the user by presenting the mounting commands on Windows when
+ * they will never work. However on UNIX-like systems we always present them,
+ * even if WITH_FUSE is not defined at this point, as to not tie the build of
+ * wimlib-imagex to a specific build of wimlib. */
+#ifdef __WIN32__
+# define WIM_MOUNTING_SUPPORTED 0
+#else
+# define WIM_MOUNTING_SUPPORTED 1
+#endif
#define ARRAY_LEN(array) (sizeof(array) / sizeof(array[0]))
#define for_opt(c, opts) while ((c = getopt_long_only(argc, (tchar**)argv, T(""), \
opts, NULL)) != -1)
+
enum {
CMD_NONE = -1,
CMD_APPEND = 0,
CMD_EXTRACT,
CMD_INFO,
CMD_JOIN,
+#if WIM_MOUNTING_SUPPORTED
CMD_MOUNT,
CMD_MOUNTRW,
+#endif
CMD_OPTIMIZE,
CMD_SPLIT,
+#if WIM_MOUNTING_SUPPORTED
CMD_UNMOUNT,
+#endif
CMD_UPDATE,
CMD_MAX,
};
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;
goto out;
}
-/* Mounts an image using a FUSE mount. */
+#if WIM_MOUNTING_SUPPORTED
+
+/* Mounts a WIM image. */
static int
imagex_mount_rw_or_ro(int argc, tchar **argv, int cmd)
{
ret = -1;
goto out;
}
+#endif /* WIM_MOUNTING_SUPPORTED */
/* Rebuild a WIM file */
static int
goto out;
}
+#if WIM_MOUNTING_SUPPORTED
/* Unmounts a mounted WIM image. */
static int
imagex_unmount(int argc, tchar **argv, int cmd)
ret = -1;
goto out;
}
+#endif /* WIM_MOUNTING_SUPPORTED */
/*
* Add, delete, or rename files in a WIM image.
[CMD_EXTRACT] = {T("extract"), imagex_extract},
[CMD_INFO] = {T("info"), imagex_info},
[CMD_JOIN] = {T("join"), imagex_join},
+#if WIM_MOUNTING_SUPPORTED
[CMD_MOUNT] = {T("mount"), imagex_mount_rw_or_ro},
[CMD_MOUNTRW] = {T("mountrw"), imagex_mount_rw_or_ro},
+#endif
[CMD_OPTIMIZE] = {T("optimize"), imagex_optimize},
[CMD_SPLIT] = {T("split"), imagex_split},
+#if WIM_MOUNTING_SUPPORTED
[CMD_UNMOUNT] = {T("unmount"), imagex_unmount},
+#endif
[CMD_UPDATE] = {T("update"), imagex_update},
};
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"
),
+#endif
[CMD_OPTIMIZE] =
T(
" %"TS" WIMFILE [--check] [--nocheck] [--recompress]\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] =
T(
" %"TS" DIRECTORY [--commit] [--check] [--rebuild] [--lazy]\n"
),
+#endif
[CMD_UPDATE] =
T(
" %"TS" WIMFILE [IMAGE_NUM | IMAGE_NAME] [--check] [--rebuild]\n"
int cmd;
imagex_info_file = stdout;
- invocation_name = basename(argv[0]);
+ invocation_name = tbasename(argv[0]);
#ifndef __WIN32__
if (getenv("WIMLIB_IMAGEX_USE_UTF8")) {