]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mkimage: Allow display of a list of any image header category
authorSimon Glass <sjg@chromium.org>
Thu, 30 Jun 2016 16:52:17 +0000 (10:52 -0600)
committerTom Rini <trini@konsulko.com>
Thu, 14 Jul 2016 22:22:30 +0000 (18:22 -0400)
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>
tools/mkimage.c

index 920d3bed675d01091d696aa39439e6479d3387dd..d375c2abecff602de73d605c35f478a3ffb22d68 100644 (file)
@@ -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;