Annotation of embedtools/src/butz.c, revision 1.1.2.1
1.1.2.1 ! misho 1: #include "global.h"
! 2:
! 3:
! 4: cfg_root_t cfg;
! 5: sched_root_task_t *root;
! 6: int Verbose, Kill;
! 7: extern char compiled[], compiledby[], compilehost[];
! 8: char szCfgName[PATH_MAX] = BUTZ_CFG;
! 9:
! 10: static void
! 11: Usage()
! 12: {
! 13: printf( " -= Butz =- Service for board buttons management\n"
! 14: "=== %s === %s@%s ===\n\n"
! 15: " Syntax: butz [options] [set_value]\n"
! 16: "\n"
! 17: "\t-c <cfgfile>\tConfig file [default: /etc/butz.conf]\n"
! 18: "\t-v\t\tVerbose ...\n"
! 19: "\n", compiled, compiledby, compilehost);
! 20: }
! 21:
! 22: static void *
! 23: sigHandler(sched_task_t *task)
! 24: {
! 25: switch (TASK_VAL(task)) {
! 26: case SIGHUP:
! 27: cfgUnloadConfig(&cfg);
! 28: if (cfgLoadConfig(szCfgName, &cfg)) {
! 29: ELIBERR(cfg);
! 30: Kill++;
! 31: }
! 32: break;
! 33: case SIGTERM:
! 34: Kill++;
! 35: break;
! 36: default:
! 37: EERROR(EINVAL, "Undefined signal %lu!", TASK_VAL(task));
! 38: break;
! 39: }
! 40: taskExit(task, NULL);
! 41: }
! 42:
! 43:
! 44: int
! 45: main(int argc, char **argv)
! 46: {
! 47: char ch;
! 48:
! 49: while ((ch = getopt(argc, argv, "hvc:")) != -1)
! 50: switch (ch) {
! 51: case 'c':
! 52: strlcpy(szCfgName, optarg, sizeof szCfgName);
! 53: break;
! 54: case 'v':
! 55: Verbose++;
! 56: break;
! 57: case 'h':
! 58: default:
! 59: Usage();
! 60: return 1;
! 61: }
! 62: argc -= optind;
! 63: argv += optind;
! 64:
! 65: openlog("butz", LOG_PID | LOG_CONS, LOG_DAEMON);
! 66: if (cfgLoadConfig(szCfgName, &cfg)) {
! 67: ELIBERR(cfg);
! 68: return 1;
! 69: }
! 70: root = schedBegin();
! 71: if (!root) {
! 72: ELIBERR(sched);
! 73: return 1;
! 74: }
! 75:
! 76: schedSignal(root, sigHandler, NULL, SIGHUP, NULL, 0);
! 77: schedSignal(root, sigHandler, NULL, SIGTERM, NULL, 0);
! 78: schedRun(root, &Kill);
! 79:
! 80: schedEnd(&root);
! 81: cfgUnloadConfig(&cfg);
! 82: closelog();
! 83: return 0;
! 84: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>