[PATCH 06/29] discover: Add helpers for status reporting

Samuel Mendoza-Jonas sam at mendozajonas.com
Mon Dec 19 15:18:52 AEDT 2016


From: Jeremy Kerr <jk at ozlabs.org>

This change adds a couple of helpers for the status reporting API,
allowing callers to provide just a set of printf-style arguments, rather
than having to build up a struct status.

Signed-off-by: Jeremy Kerr <jk at ozlabs.org>
Signed-off-by: Samuel Mendoza-Jonas <sam at mendozajonas.com>
---
 discover/device-handler.c | 33 +++++++++++++++++++++++++++++++++
 discover/device-handler.h |  4 ++++
 discover/pxe-parser.c     |  5 +----
 3 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/discover/device-handler.c b/discover/device-handler.c
index 81bdedb..b8825ce 100644
--- a/discover/device-handler.c
+++ b/discover/device-handler.c
@@ -416,6 +416,39 @@ void device_handler_status(struct device_handler *handler,
 	discover_server_notify_boot_status(handler->server, status);
 }
 
+static void _device_handler_vstatus(struct device_handler *handler,
+		enum status_type type, const char *fmt, va_list ap)
+{
+	struct status status;
+
+	status.type = type;
+	status.message = talloc_vasprintf(handler, fmt, ap);
+
+	device_handler_status(handler, &status);
+
+	talloc_free(status.message);
+}
+
+void device_handler_status_info(struct device_handler *handler,
+		const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	_device_handler_vstatus(handler, STATUS_INFO, fmt, ap);
+	va_end(ap);
+}
+
+void device_handler_status_err(struct device_handler *handler,
+		const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	_device_handler_vstatus(handler, STATUS_ERROR, fmt, ap);
+	va_end(ap);
+}
+
 static void device_handler_boot_status_cb(void *arg, struct status *status)
 {
 	device_handler_status(arg, status);
diff --git a/discover/device-handler.h b/discover/device-handler.h
index 89ca87a..f4022e7 100644
--- a/discover/device-handler.h
+++ b/discover/device-handler.h
@@ -98,6 +98,10 @@ void device_handler_remove(struct device_handler *handler,
 
 void device_handler_status(struct device_handler *handler,
 		struct status *status);
+void device_handler_status_info(struct device_handler *handler,
+		const char *fmt, ...);
+void device_handler_status_err(struct device_handler *handler,
+		const char *fmt, ...);
 
 struct discover_context *device_handler_discover_context_create(
 		struct device_handler *handler,
diff --git a/discover/pxe-parser.c b/discover/pxe-parser.c
index a044215..5ac6990 100644
--- a/discover/pxe-parser.c
+++ b/discover/pxe-parser.c
@@ -241,7 +241,6 @@ static void pxe_conf_parse_cb(struct load_url_result *result, void *data)
 {
 	struct conf_context *conf = data;
 	struct device_handler *handler;
-	struct status status = {0};
 	struct pxe_parser_info *info;
 	char *buf = NULL;
 	int len, rc = 0;
@@ -279,14 +278,12 @@ static void pxe_conf_parse_cb(struct load_url_result *result, void *data)
 	handler = talloc_parent(conf);
 	device_handler_discover_context_commit(handler, conf->dc);
 
-	status.type = STATUS_INFO;
 	/*
 	 * TRANSLATORS: the format specifier in this string in an IP address,
 	 * eg. 192.168.1.1
 	 */
-	status.message = talloc_asprintf(conf, _("pxe: parsed config for %s"),
+	device_handler_status_info(handler, _("pxe: parsed config for %s"),
 					conf->dc->conf_url->host);
-	device_handler_status(handler, &status);
 
 	talloc_free(buf);
 out_clean:
-- 
2.10.2



More information about the Petitboot mailing list