1 /* 2 * Copyright (C) 2013 Felix Fietkau <nbd@openwrt.org> 3 * Copyright (C) 2013 John Crispin <blogic@openwrt.org> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU Lesser General Public License version 2.1 7 * as published by the Free Software Foundation 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 */ 14 15 #include <sys/wait.h> 16 #include <sys/types.h> 17 #include <sys/stat.h> 18 #include <sys/reboot.h> 19 20 #include <unistd.h> 21 #include <getopt.h> 22 #include <libgen.h> 23 24 #include "procd.h" 25 #include "watchdog.h" 26 #include "plug/hotplug.h" 27 28 unsigned int debug; 29 30 static int usage(const char *prog) 31 { 32 fprintf(stderr, "Usage: %s [options]\n" 33 "Options:\n" 34 " -s <path> Path to ubus socket\n" 35 " -h <path> run as hotplug daemon\n" 36 " -d <level> Enable debug messages\n" 37 " -S Print messages to stdout\n" 38 "\n", prog); 39 return 1; 40 } 41 42 int main(int argc, char **argv) 43 { 44 int ch; 45 char *dbglvl = getenv("DBGLVL"); 46 int ulog_channels = ULOG_KMSG; 47 48 if (dbglvl) { 49 debug = atoi(dbglvl); 50 unsetenv("DBGLVL"); 51 } 52 53 while ((ch = getopt(argc, argv, "d:s:h:S")) != -1) { 54 switch (ch) { 55 case 'h': 56 return hotplug_run(optarg); 57 case 's': 58 ubus_socket = optarg; 59 break; 60 case 'd': 61 debug = atoi(optarg); 62 break; 63 case 'S': 64 ulog_channels = ULOG_STDIO; 65 break; 66 default: 67 return usage(argv[0]); 68 } 69 } 70 71 ulog_open(ulog_channels, LOG_DAEMON, "procd"); 72 ulog_threshold(LOG_DEBUG + 1); 73 74 setsid(); 75 uloop_init(); 76 procd_signal(); 77 if (getpid() != 1) 78 procd_connect_ubus(); 79 else 80 procd_state_next(); 81 uloop_run(); 82 uloop_done(); 83 84 return 0; 85 } 86
This page was automatically generated by LXR 0.3.1. • OpenWrt