diff options
author | Simon Glass | 2016-06-30 10:52:17 -0600 |
---|---|---|
committer | Tom Rini | 2016-07-14 18:22:30 -0400 |
commit | 306642251234f68f14fa9e86b9f5df6a88632817 (patch) | |
tree | fb6027672598c3d7dbb63f2b63b7e9c7f9c5be8e | |
parent | 1426220b0e7b09ecc6a0da5f831287776a89a92c (diff) |
mkimage: Allow display of a list of any image header category
Add a generic function which can display a list of items in any category.
This will allow displaying of images for the -A, -C, -O and -T flags. At
present only -T is supported.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
-rw-r--r-- | tools/mkimage.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/mkimage.c b/tools/mkimage.c index 920d3bed675..d375c2abecf 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -25,6 +25,49 @@ static struct image_tool_params params = { .imagename2 = "", }; +static enum ih_category cur_category; + +static int h_compare_category_name(const void *vtype1, const void *vtype2) +{ + const int *type1 = vtype1; + const int *type2 = vtype2; + const char *name1 = genimg_get_cat_short_name(cur_category, *type1); + const char *name2 = genimg_get_cat_short_name(cur_category, *type2); + + return strcmp(name1, name2); +} + +int show_valid_options(enum ih_category category) +{ + int *order; + int count; + int item; + int i; + + count = genimg_get_cat_count(category); + order = calloc(count, sizeof(*order)); + if (!order) + return -ENOMEM; + + /* Sort the names in order of short name for easier reading */ + for (item = 0; item < count; item++) + order[item] = item; + cur_category = category; + qsort(order, count, sizeof(int), h_compare_category_name); + + fprintf(stderr, "\nInvalid %s, supported are:\n", + genimg_get_cat_desc(category)); + for (i = 0; i < count; i++) { + item = order[i]; + fprintf(stderr, "\t%-15s %s\n", + genimg_get_cat_short_name(category, item), + genimg_get_cat_name(category, item)); + } + fprintf(stderr, "\n"); + + return 0; +} + static int h_compare_image_name(const void *vtype1, const void *vtype2) { const int *type1 = vtype1; |