#include <waiter/waiter.h>
#include <log/log.h>
-#include <pb-config/pb-config.h>
+#include <process/process.h>
+#include <talloc/talloc.h>
-#include "udev.h"
-#include "user-event.h"
#include "discover-server.h"
#include "device-handler.h"
-#include "network.h"
+#include "sysinfo.h"
+#include "platform.h"
static void print_version(void)
{
print_version();
printf(
"Usage: pb-discover [-a, --no-autoboot] [-h, --help] [-l, --log log-file]\n"
-" [-n, --dry-run] [-V, --version]\n");
+" [-n, --dry-run] [-v, --verbose] [-V, --version]\n");
}
/**
const char *log_file;
enum opt_value dry_run;
enum opt_value show_version;
+ enum opt_value verbose;
};
/**
{"help", no_argument, NULL, 'h'},
{"log", required_argument, NULL, 'l'},
{"dry-run", no_argument, NULL, 'n'},
+ {"verbose", no_argument, NULL, 'v'},
{"version", no_argument, NULL, 'V'},
{ NULL, 0, NULL, 0},
};
- static const char short_options[] = "ahl:nV";
+ static const char short_options[] = "ahl:nvV";
static const struct opts default_values = {
.no_autoboot = opt_no,
.log_file = "/var/log/petitboot/pb-discover.log",
.dry_run = opt_no,
+ .verbose = opt_no,
};
*opts = default_values;
case 'n':
opts->dry_run = opt_yes;
break;
+ case 'v':
+ opts->verbose = opt_yes;
+ break;
case 'V':
opts->show_version = opt_yes;
break;
{
struct device_handler *handler;
struct discover_server *server;
- struct network *network;
struct waitset *waitset;
+ struct procset *procset;
struct opts opts;
- struct pb_udev *udev;
- struct user_event *uev;
+ FILE *log;
if (opts_parse(&opts, argc, argv)) {
print_usage();
return EXIT_SUCCESS;
}
+ log = stderr;
if (strcmp(opts.log_file, "-")) {
- FILE *log = fopen(opts.log_file, "a");
+ log = fopen(opts.log_file, "a");
+ if (!log) {
+ fprintf(stderr, "can't open log file %s, logging to "
+ "stderr\n", opts.log_file);
+ log = stderr;
+ }
+ }
+ pb_log_init(log);
- assert(log);
- pb_log_set_stream(log);
- } else
- pb_log_set_stream(stderr);
+ if (opts.verbose == opt_yes)
+ pb_log_set_debug(true);
-#if defined(DEBUG)
- pb_log_always_flush(1);
-#endif
pb_log("--- pb-discover ---\n");
/* we look for closed sockets when we write, so ignore SIGPIPE */
signal(SIGINT, sigint_handler);
- config_init(NULL);
-
- if (opts.no_autoboot == opt_yes)
- config_set_autoboot(false);
-
waitset = waitset_create(NULL);
server = discover_server_init(waitset);
if (!server)
return EXIT_FAILURE;
- network = network_init(server, waitset, opts.dry_run == opt_yes);
- if (!network)
+ procset = process_init(server, waitset, opts.dry_run == opt_yes);
+ if (!procset)
return EXIT_FAILURE;
+ platform_init(NULL);
+ if (opts.no_autoboot == opt_yes)
+ config_set_autoboot(false);
+
+ system_info_init(server);
+
handler = device_handler_init(server, waitset, opts.dry_run == opt_yes);
if (!handler)
return EXIT_FAILURE;
discover_server_set_device_source(server, handler);
- udev = udev_init(waitset, handler);
- if (!udev)
- return EXIT_FAILURE;
-
- uev = user_event_init(waitset, handler);
- if (!uev)
- return EXIT_FAILURE;
-
- user_event_trigger(uev);
-
for (running = 1; running;) {
if (waiter_poll(waitset))
break;
}
device_handler_destroy(handler);
- udev_destroy(udev);
- config_fini();
+ discover_server_destroy(server);
+ platform_fini();
+ talloc_free(waitset);
pb_log("--- end ---\n");
+ if (log != stderr)
+ fclose(log);
+
return EXIT_SUCCESS;
}