summaryrefslogtreecommitdiffstats
path: root/discover
diff options
context:
space:
mode:
Diffstat (limited to 'discover')
-rw-r--r--discover/device-handler.c7
-rw-r--r--discover/device-handler.h3
-rw-r--r--discover/pb-discover.c10
3 files changed, 15 insertions, 5 deletions
diff --git a/discover/device-handler.c b/discover/device-handler.c
index 6a27f15..12bd5ae 100644
--- a/discover/device-handler.c
+++ b/discover/device-handler.c
@@ -23,6 +23,7 @@
struct device_handler {
struct discover_server *server;
+ int dry_run;
struct device **devices;
unsigned int n_devices;
@@ -407,7 +408,8 @@ int device_handler_event(struct device_handler *handler,
return handlers[event->type][event->action](handler, event);
}
-struct device_handler *device_handler_init(struct discover_server *server)
+struct device_handler *device_handler_init(struct discover_server *server,
+ int dry_run)
{
struct device_handler *handler;
@@ -415,6 +417,7 @@ struct device_handler *device_handler_init(struct discover_server *server)
handler->devices = NULL;
handler->n_devices = 0;
handler->server = server;
+ handler->dry_run = dry_run;
list_init(&handler->contexts);
@@ -455,5 +458,5 @@ void device_handler_boot(struct device_handler *handler,
opt = find_boot_option_by_id(handler, cmd->option_id);
- boot(handler, opt, cmd, 0);
+ boot(handler, opt, cmd, handler->dry_run);
}
diff --git a/discover/device-handler.h b/discover/device-handler.h
index 7207f8d..4cf7d7d 100644
--- a/discover/device-handler.h
+++ b/discover/device-handler.h
@@ -21,7 +21,8 @@ struct discover_context {
struct list_item list;
};
-struct device_handler *device_handler_init(struct discover_server *server);
+struct device_handler *device_handler_init(struct discover_server *server,
+ int dry_run);
void device_handler_destroy(struct device_handler *devices);
diff --git a/discover/pb-discover.c b/discover/pb-discover.c
index 536f6e6..c83b574 100644
--- a/discover/pb-discover.c
+++ b/discover/pb-discover.c
@@ -43,6 +43,7 @@ struct opts {
enum opt_value show_help;
const char *log_file;
enum opt_value show_version;
+ enum opt_value dry_run;
};
/**
@@ -54,12 +55,14 @@ static int opts_parse(struct opts *opts, int argc, char *argv[])
static const struct option long_options[] = {
{"help", no_argument, NULL, 'h'},
{"log", required_argument, NULL, 'l'},
+ {"dry-run", no_argument, NULL, 'n'},
{"version", no_argument, NULL, 'V'},
{ NULL, 0, NULL, 0},
};
- static const char short_options[] = "hl:V";
+ static const char short_options[] = "hl:nV";
static const struct opts default_values = {
.log_file = "/var/log/petitboot/pb-discover.log",
+ .dry_run = opt_no,
};
*opts = default_values;
@@ -78,6 +81,9 @@ static int opts_parse(struct opts *opts, int argc, char *argv[])
case 'l':
opts->log_file = optarg;
break;
+ case 'n':
+ opts->dry_run = opt_yes;
+ break;
case 'V':
opts->show_version = opt_yes;
break;
@@ -145,7 +151,7 @@ int main(int argc, char *argv[])
if (!server)
return EXIT_FAILURE;
- handler = device_handler_init(server);
+ handler = device_handler_init(server, opts.dry_run == opt_yes);
if (!handler)
return EXIT_FAILURE;
OpenPOWER on IntegriCloud