result = item->pbt_client->kexec_cb(item->pbt_client, opt_data);
if (!result) {
- //mvaddstr(1, 0, "system is going down now...");
- sleep(60);
+ sleep(item->pbt_client->dry_run ? 1 : 60);
}
pb_log("%s: failed: %s\n", __func__, opt_data->kd->image);
memset(client, 0, sizeof(*client));
}
-struct pbt_client *pbt_client_init(enum pbt_twin_backend backend, unsigned int width,
- unsigned int height,
+struct pbt_client *pbt_client_init(enum pbt_twin_backend backend,
+ unsigned int width, unsigned int height,
int (*kexec_cb)(struct pbt_client *, struct pb_opt_data *),
- int start_deamon)
+ int start_deamon, int dry_run)
{
struct pbt_client *pbt_client;
unsigned int i;
pbt_client->sig = "pbt_client";
pbt_client->kexec_cb = kexec_cb;
+ pbt_client->dry_run = dry_run;
pbt_client->frame.scr = pbt_scr_init(pbt_client, backend, width, height,
NULL, NULL);
goto fail_scr_init;
/* Loop here for scripts that just started the server. */
-if (1) {
-start_deamon:
- for (i = 10; i; i--) {
+
+retry_start:
+ for (i = start_deamon ? 2 : 10; i; i--) {
pbt_client->discover_client
= discover_client_init(&pbt_client_ops, pbt_client);
- if (pbt_client->discover_client)
+ if (pbt_client->discover_client || !i)
break;
pb_log("%s: waiting for server %d\n", __func__, i);
sleep(1);
result = pb_start_daemon();
if (!result)
- goto start_deamon;
+ goto retry_start;
pb_log("%s: discover_client_init failed.\n", __func__);
fprintf(stderr, "%s: error: discover_client_init failed.\n",
waiter_register(discover_client_get_fd(pbt_client->discover_client),
WAIT_IN, (waiter_cb)discover_client_process,
pbt_client->discover_client);
-}
+
return pbt_client;
fail_client_init: