aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass2016-06-30 10:52:17 -0600
committerTom Rini2016-07-14 18:22:30 -0400
commit306642251234f68f14fa9e86b9f5df6a88632817 (patch)
treefb6027672598c3d7dbb63f2b63b7e9c7f9c5be8e
parent1426220b0e7b09ecc6a0da5f831287776a89a92c (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.c43
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;