summaryrefslogtreecommitdiffstatshomepage
path: root/src/tools/imgtool/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/imgtool/main.cpp')
-rw-r--r--src/tools/imgtool/main.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/tools/imgtool/main.cpp b/src/tools/imgtool/main.cpp
index 50c65845ddb..5c55535932e 100644
--- a/src/tools/imgtool/main.cpp
+++ b/src/tools/imgtool/main.cpp
@@ -106,7 +106,23 @@ static int parse_options(int argc, char *argv[], int minunnamed, int maxunnamed,
if (i < minunnamed)
goto error; /* Too few unnamed */
- resolution->find(name)->set_value(value);
+ util::option_resolution::entry *entry = resolution->find(name);
+ if (entry->option_type() == util::option_guide::entry::option_type::ENUM_BEGIN)
+ {
+ const util::option_guide::entry *enum_value;
+ for (enum_value = entry->enum_value_begin(); enum_value != entry->enum_value_end(); enum_value++)
+ {
+ if (!strcmp (enum_value->identifier(), value))
+ {
+ entry->set_value(enum_value->parameter());
+ break;
+ }
+ }
+ if (enum_value == entry->enum_value_end())
+ goto error;
+ }
+ else
+ entry->set_value(value);
}
}
}