]> wimlib.net Git - wimlib/blobdiff - programs/imagex.c
translate_text_to_tstr(): Correctly compare byte values
[wimlib] / programs / imagex.c
index 031f555bf2d4e91c0fd987ec18bf44e83cd59733..772b86ef75463092cd8aa67eeac55c337bb019ef 100644 (file)
@@ -118,8 +118,6 @@ static FILE *imagex_info_file;
 
 enum {
        IMAGEX_ALLOW_OTHER_OPTION,
-       IMAGEX_AS_DELTA_FROM_OPTION,
-       IMAGEX_AS_UPDATE_OF_OPTION,
        IMAGEX_BOOT_OPTION,
        IMAGEX_CHECK_OPTION,
        IMAGEX_COMMAND_OPTION,
@@ -127,6 +125,7 @@ enum {
        IMAGEX_COMPRESS_OPTION,
        IMAGEX_CONFIG_OPTION,
        IMAGEX_DEBUG_OPTION,
+       IMAGEX_DELTA_FROM_OPTION,
        IMAGEX_DEREFERENCE_OPTION,
        IMAGEX_DEST_DIR_OPTION,
        IMAGEX_EXTRACT_XML_OPTION,
@@ -159,6 +158,7 @@ enum {
        IMAGEX_THREADS_OPTION,
        IMAGEX_TO_STDOUT_OPTION,
        IMAGEX_UNIX_DATA_OPTION,
+       IMAGEX_UPDATE_OF_OPTION,
        IMAGEX_VERBOSE_OPTION,
        IMAGEX_XML_OPTION,
 };
@@ -203,9 +203,8 @@ static const struct option capture_or_append_options[] = {
        {T("norpfix"),     no_argument,       NULL, IMAGEX_NORPFIX_OPTION},
        {T("pipable"),     no_argument,       NULL, IMAGEX_PIPABLE_OPTION},
        {T("not-pipable"), no_argument,       NULL, IMAGEX_NOT_PIPABLE_OPTION},
-       {T("as-update-of"),  required_argument, NULL, IMAGEX_AS_UPDATE_OF_OPTION},
-       {T("as-update-from"), required_argument, NULL, IMAGEX_AS_UPDATE_OF_OPTION},
-       {T("as-delta-from"),   required_argument, NULL, IMAGEX_AS_DELTA_FROM_OPTION},
+       {T("update-of"),   required_argument, NULL, IMAGEX_UPDATE_OF_OPTION},
+       {T("delta-from"),  required_argument, NULL, IMAGEX_DELTA_FROM_OPTION},
        {NULL, 0, NULL, 0},
 };
 
@@ -367,11 +366,13 @@ verify_image_exists(int image, const tchar *image_name, const tchar *wim_name)
        if (image == WIMLIB_NO_IMAGE) {
                imagex_error(T("\"%"TS"\" is not a valid image in \"%"TS"\"!\n"
                             "       Please specify a 1-based image index or "
-                            "image name.\n"
-                            "       You may use `%"TS"' to list the images "
-                            "contained in a WIM."),
-                            image_name, wim_name, get_cmd_string(CMD_INFO, false));
-               return -1;
+                            "image name.  To list the images\n"
+                            "       contained in the WIM archive, run\n"
+                            "\n"
+                            "           %"TS" \"%"TS"\"\n"),
+                            image_name, wim_name,
+                            get_cmd_string(CMD_INFO, false), wim_name);
+               return WIMLIB_ERR_INVALID_IMAGE;
        }
        return 0;
 }
@@ -381,7 +382,7 @@ verify_image_is_single(int image)
 {
        if (image == WIMLIB_ALL_IMAGES) {
                imagex_error(T("Cannot specify all images for this action!"));
-               return -1;
+               return WIMLIB_ERR_INVALID_IMAGE;
        }
        return 0;
 }
@@ -936,8 +937,8 @@ translate_text_to_tstr(char *text, size_t num_bytes, size_t *num_tchars_ret)
        size_t num_wchars;
 
        if (num_bytes >= 2 &&
-           ((text[0] == 0xff && text[1] == 0xfe) ||
-            (text[0] <= 0x7f && text[1] == 0x00)))
+           (((unsigned char)text[0] == 0xff && (unsigned char)text[1] == 0xfe) ||
+            ((unsigned char)text[0] <= 0x7f && (unsigned char)text[1] == 0x00)))
        {
                /* File begins with 0xfeff, the BOM for UTF-16LE, or it begins
                 * with something that looks like an ASCII character encoded as
@@ -1205,7 +1206,7 @@ imagex_progress_func(enum wimlib_progress_msg msg,
                case WIMLIB_UPDATE_OP_DELETE:
                        imagex_printf(T("Deleted WIM path "
                                  "\""WIMLIB_WIM_PATH_SEPARATOR_STRING "%"TS"\"\n"),
-                               info->update.command->delete.wim_path);
+                               info->update.command->delete_.wim_path);
                        break;
                case WIMLIB_UPDATE_OP_RENAME:
                        imagex_printf(T("Renamed WIM path "
@@ -1274,9 +1275,9 @@ update_command_add_option(int op, const tchar *option,
                break;
        case WIMLIB_UPDATE_OP_DELETE:
                if (!tstrcmp(option, T("--force")))
-                       cmd->delete.delete_flags |= WIMLIB_DELETE_FLAG_FORCE;
+                       cmd->delete_.delete_flags |= WIMLIB_DELETE_FLAG_FORCE;
                else if (!tstrcmp(option, T("--recursive")))
-                       cmd->delete.delete_flags |= WIMLIB_DELETE_FLAG_RECURSIVE;
+                       cmd->delete_.delete_flags |= WIMLIB_DELETE_FLAG_RECURSIVE;
                else
                        recognized = false;
                break;
@@ -1307,7 +1308,7 @@ update_command_add_nonoption(int op, const tchar *nonoption,
                        cmd->add.wim_target_path = (tchar*)nonoption;
                break;
        case WIMLIB_UPDATE_OP_DELETE:
-               cmd->delete.wim_path = (tchar*)nonoption;
+               cmd->delete_.wim_path = (tchar*)nonoption;
                break;
        case WIMLIB_UPDATE_OP_RENAME:
                if (num_nonoptions == 0)
@@ -1731,9 +1732,9 @@ imagex_capture_or_append(int argc, tchar **argv, int cmd)
                case IMAGEX_NOT_PIPABLE_OPTION:
                        write_flags |= WIMLIB_WRITE_FLAG_NOT_PIPABLE;
                        break;
-               case IMAGEX_AS_UPDATE_OF_OPTION:
+               case IMAGEX_UPDATE_OF_OPTION:
                        if (template_image_name_or_num) {
-                               imagex_error(T("'--as-update-of' can only be "
+                               imagex_error(T("'--update-of' can only be "
                                               "specified one time!"));
                                goto out_err;
                        } else {
@@ -1750,14 +1751,14 @@ imagex_capture_or_append(int argc, tchar **argv, int cmd)
                                }
                        }
                        break;
-               case IMAGEX_AS_DELTA_FROM_OPTION:
+               case IMAGEX_DELTA_FROM_OPTION:
                        if (cmd != CMD_CAPTURE) {
-                               imagex_error(T("'--as-delta-from' is only "
+                               imagex_error(T("'--delta-from' is only "
                                               "valid for capture!"));
                                goto out_usage;
                        }
                        if (base_wimfile) {
-                               imagex_error(T("'--as-delta-from' can only be "
+                               imagex_error(T("'--delta-from' can only be "
                                               "specified one time!"));
                                goto out_err;
                        }
@@ -1801,8 +1802,8 @@ imagex_capture_or_append(int argc, tchar **argv, int cmd)
                set_fd_to_binary_mode(wim_fd);
        }
 
-       /* If template image was specified using --as-update-of=IMAGE rather
-        * than --as-update-of=WIMFILE:IMAGE, set the default WIMFILE.  */
+       /* If template image was specified using --update-of=IMAGE rather
+        * than --update-of=WIMFILE:IMAGE, set the default WIMFILE.  */
        if (template_image_name_or_num && !template_wimfile) {
                if (base_wimfile) {
                        /* Capturing delta WIM:  default to base WIM.  */
@@ -1815,7 +1816,7 @@ imagex_capture_or_append(int argc, tchar **argv, int cmd)
                        /* Capturing a normal (non-delta) WIM, so the WIM file
                         * *must* be explicitly specified.  */
                        imagex_error(T("For capture of non-delta WIM, "
-                                      "'--as-update-of' must specify "
+                                      "'--update-of' must specify "
                                       "WIMFILE:IMAGE!"));
                        goto out_usage;
                }
@@ -2012,7 +2013,7 @@ imagex_capture_or_append(int argc, tchar **argv, int cmd)
        if (desc || flags_element || template_image_name_or_num) {
                /* User provided <DESCRIPTION> or <FLAGS> element, or an image
                 * on which the added one is to be based has been specified with
-                * --as-update-of.  Get the index of the image we just
+                * --update-of.  Get the index of the image we just
                 *  added, then use it to call the appropriate functions.  */
                struct wimlib_wim_info info;
 
@@ -2805,8 +2806,7 @@ imagex_info(int argc, tchar **argv, int cmd)
        image = wimlib_resolve_image(wim, image_num_or_name);
        ret = WIMLIB_ERR_INVALID_IMAGE;
        if (image == WIMLIB_NO_IMAGE && tstrcmp(image_num_or_name, T("0"))) {
-               imagex_error(T("The image \"%"TS"\" does not exist in \"%"TS"\""),
-                            image_num_or_name, wimfile);
+               verify_image_exists(image, image_num_or_name, wimfile);
                if (boot) {
                        imagex_error(T("If you would like to set the boot "
                                       "index to 0, specify image \"0\" with "
@@ -3526,7 +3526,7 @@ imagex_update(int argc, tchar **argv, int cmd)
                        cmds[i].add.config = config;
                        break;
                case WIMLIB_UPDATE_OP_DELETE:
-                       cmds[i].delete.delete_flags |= default_delete_flags;
+                       cmds[i].delete_.delete_flags |= default_delete_flags;
                        break;
                default:
                        break;
@@ -3603,7 +3603,7 @@ T(
 "                    [--dereference] [--config=FILE] [--threads=NUM_THREADS]\n"
 "                    [--rebuild] [--unix-data] [--source-list] [--no-acls]\n"
 "                    [--strict-acls] [--rpfix] [--norpfix] [--pipable]\n"
-"                    [--not-pipable] [--as-update-of=[WIMFILE:]IMAGE]\n"
+"                    [--not-pipable] [--update-of=[WIMFILE:]IMAGE]\n"
 ),
 [CMD_APPLY] =
 T(
@@ -3621,7 +3621,7 @@ T(
 "                    [--verbose] [--dereference] [--config=FILE]\n"
 "                    [--threads=NUM_THREADS] [--unix-data] [--source-list]\n"
 "                    [--no-acls] [--strict-acls] [--norpfix] [--pipable]\n"
-"                    [--as-update-of=[WIMFILE:]IMAGE] [--as-delta-from=WIMFILE]\n"
+"                    [--update-of=[WIMFILE:]IMAGE] [--delta-from=WIMFILE]\n"
 ),
 [CMD_DELETE] =
 T(