X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=main.c;h=65ed854bf5f24dae1ec82062a34eb3c7783558f6;hp=e081109c3b85943784c41425ba601f5b77fdae62;hb=6390afe7a3cf1663979078711febb2be21fb4cf2;hpb=0f479be2068d7fe3bd5953e7454aaabb2be38d93 diff --git a/main.c b/main.c index e081109..65ed854 100644 --- a/main.c +++ b/main.c @@ -1,11 +1,31 @@ +/* + * Copyright (C) 2013 Felix Fietkau + * Copyright (C) 2013 John Crispin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 + * as published by the Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include + +#include #include -#include "procd.h" +#include -int debug = 0; +#include "procd.h" +#include "hotplug.h" +#include "watchdog.h" static int usage(const char *prog) { - fprintf(stderr, "Usage: %s [options]\n" + ERROR("Usage: %s [options]\n" "Options:\n" " -s : Path to ubus socket\n" " -d: Enable debug messages\n" @@ -13,10 +33,26 @@ static int usage(const char *prog) return 1; } + +static int main_procd_init(int argc, char **argv) +{ + procd_early(); + debug_init(); + watchdog_init(); + uloop_init(); + hotplug("/etc/hotplug-preinit.json"); + procd_preinit(); + uloop_run(); + return 0; +} + int main(int argc, char **argv) { int ch; + if (!strcmp(basename(*argv), "init")) + return main_procd_init(argc, argv); + while ((ch = getopt(argc, argv, "ds:")) != -1) { switch (ch) { case 's': @@ -30,7 +66,11 @@ int main(int argc, char **argv) } } uloop_init(); - procd_connect_ubus(); + procd_signal(); + if (getpid() != 1) + procd_connect_ubus(); + else + procd_state_next(); uloop_run(); return 0;