talloc_free(device);
}
-void device_handler_boot_status(void *arg, struct status *status)
+void device_handler_status(struct device_handler *handler,
+ struct status *status)
{
- struct device_handler *handler = arg;
-
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);
+}
+
static void countdown_status(struct device_handler *handler,
struct discover_boot_option *opt, unsigned int sec)
{
status.message = talloc_asprintf(handler,
_("Booting in %d sec: %s"), sec, opt->option->name);
- discover_server_notify_boot_status(handler->server, &status);
+ device_handler_status(handler, &status);
talloc_free(status.message);
}
platform_pre_boot();
handler->pending_boot = boot(handler, handler->default_boot_option,
- NULL, handler->dry_run, device_handler_boot_status,
+ NULL, handler->dry_run, device_handler_boot_status_cb,
handler);
handler->pending_boot_is_default = true;
return 0;
status->message = talloc_asprintf(status, _("Processing %s device %s"),
device_type_display_name(dev->device->type),
dev->device->id);
- device_handler_boot_status(handler, status);
+ device_handler_status(handler, status);
process_boot_option_queue(handler);
*/
status->message = talloc_asprintf(status,_("Processing %s complete"),
dev->device->id);
- device_handler_boot_status(handler, status);
+ device_handler_status(handler, status);
talloc_free(status);
talloc_unlink(handler, ctx);
*/
status->message = talloc_asprintf(status, _("Processing dhcp event on %s"),
dev->device->id);
- device_handler_boot_status(handler, status);
+ device_handler_status(handler, status);
/* create our context */
ctx = device_handler_discover_context_create(handler, dev);
*/
status->message = talloc_asprintf(status,_("Processing %s complete"),
dev->device->id);
- device_handler_boot_status(handler, status);
+ device_handler_status(handler, status);
talloc_free(status);
talloc_unlink(handler, ctx);
platform_pre_boot();
handler->pending_boot = boot(handler, opt, cmd, handler->dry_run,
- device_handler_boot_status, handler);
+ device_handler_boot_status_cb, handler);
handler->pending_boot_is_default = false;
}
status.type = STATUS_INFO;
status.message = _("Default boot cancelled");
- discover_server_notify_boot_status(handler->server, &status);
+ device_handler_status(handler, &status);
}
void device_handler_update_config(struct device_handler *handler,
status->message = talloc_asprintf(status, _("Config file %s parsed"),
pb_url->file);
msg:
- device_handler_boot_status(handler, status);
+ device_handler_status(handler, status);
talloc_free(status);
}