[Concept,26/30] fit: Add a helper for printing descriptions

Message ID 20251120025614.2215587-27-sjg@u-boot.org
State New
Headers
Series fit: Improve and test the code to print FIT info |

Commit Message

Simon Glass Nov. 20, 2025, 2:56 a.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

Add emit_desc() which handles getting and printing descriptions from FIT
nodes. Handle the "unavailable" case when a description is missing.

Co-developed-by: Claude <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

 boot/fit_print.c | 36 +++++++++++++++++++++++++-----------
 1 file changed, 25 insertions(+), 11 deletions(-)
  

Patch

diff --git a/boot/fit_print.c b/boot/fit_print.c
index 8781d5a7da7..069afbe8567 100644
--- a/boot/fit_print.c
+++ b/boot/fit_print.c
@@ -159,6 +159,26 @@  static void emit_stringlist(struct fit_print_ctx *ctx, int noffset,
 		emit_label_val(ctx, i ? "" : label, val);
 }
 
+/**
+ * emit_desc() - print a description
+ * @ctx: pointer to FIT print context
+ * @noffset: offset of the node containing the description
+ * @label: label string to use when printing
+ *
+ * Gets the description from the specified node and prints it with the given
+ * label. If the description is not available, prints "unavailable" instead.
+ * This is a convenience function for printing FIT descriptions.
+ */
+static void emit_desc(struct fit_print_ctx *ctx, int noffset,
+		      const char *label)
+{
+	const char *desc;
+	int ret;
+
+	ret = fit_get_desc(ctx->fit, noffset, &desc);
+	emit_label_val(ctx, label, ret ? "unavailable" : desc);
+}
+
 /**
  * fit_image_print_data() - prints out the hash node details
  * @ctx: pointer to FIT print context
@@ -262,7 +282,6 @@  void fit_image_print(struct fit_print_ctx *ctx, int image_noffset)
 {
 	const void *fit = ctx->fit;
 	uint8_t type, arch, os, comp = IH_COMP_NONE;
-	const char *desc;
 	size_t size;
 	ulong load, entry;
 	const void *data;
@@ -271,8 +290,7 @@  void fit_image_print(struct fit_print_ctx *ctx, int image_noffset)
 	int ret;
 
 	/* Mandatory properties */
-	ret = fit_get_desc(fit, image_noffset, &desc);
-	emit_label_val(ctx, "Description", ret ? "unavailable" : desc);
+	emit_desc(ctx, image_noffset, "Description");
 
 	emit_timestamp(ctx, 0, "Created");
 
@@ -368,12 +386,11 @@  void fit_image_print(struct fit_print_ctx *ctx, int image_noffset)
 static void fit_conf_print(struct fit_print_ctx *ctx, int noffset)
 {
 	const void *fit = ctx->fit;
-	const char *uname, *desc;
-	int ret, ndepth;
+	const char *uname;
+	int ndepth;
 
 	/* Mandatory properties */
-	ret = fit_get_desc(fit, noffset, &desc);
-	emit_label_val(ctx, "Description", ret ? "unavailable" : desc);
+	emit_desc(ctx, noffset, "Description");
 
 	uname = fdt_getprop(fit, noffset, FIT_KERNEL_PROP, NULL);
 	emit_label_val(ctx, "Kernel", uname ?: "unavailable");
@@ -401,18 +418,15 @@  void fit_print(struct fit_print_ctx *ctx)
 {
 	const void *fit = ctx->fit;
 	int p = ctx->indent;
-	const char *desc;
 	char *uname;
 	int images_noffset;
 	int confs_noffset;
 	int noffset;
 	int ndepth;
 	int count = 0;
-	int ret;
 
 	/* Root node properties */
-	ret = fit_get_desc(fit, 0, &desc);
-	emit_label_val(ctx, "FIT description", ret ? "unavailable" : desc);
+	emit_desc(ctx, 0, "FIT description");
 
 	emit_timestamp(ctx, 0, "Created");