• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/procd/procd.c

  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