/** int main(int argc, char **argv) v0.1 */ int WinExecd_Start() { int c; int test_config = 0; char *cfg = DEFAULTCPATH; /* Reading config */ if((c = ExecdConfig(cfg)) < 0) { ErrorExit(CONFIG_ERROR, ARGV0, cfg); } /* Exit if test_config */ if(test_config) return(0); /* Active response disabled */ if(c == 1) { verbose(EXEC_DISABLED, ARGV0); return(0); } /* Creating list for timeout */ timeout_list = OSList_Create(); if(!timeout_list) { ErrorExit(LIST_ERROR, ARGV0); } /* Start up message */ verbose(STARTUP_MSG, ARGV0, getpid()); return(1); }
/** int main(int argc, char **argv) v0.1 */ int main(int argc, char **argv) { int c; int test_config = 0,run_foreground = 0; gid_t gid; int m_queue = 0; const char *group = GROUPGLOBAL; const char *cfg = DEFAULTCPATH; /* Setting the name */ OS_SetName(ARGV0); while((c = getopt(argc, argv, "Vtdhfg:c:")) != -1){ switch(c){ case 'V': print_version(); break; case 'h': help_execd(); break; case 'd': nowDebug(); break; case 'f': run_foreground = 1; break; case 'g': if(!optarg) ErrorExit("%s: -g needs an argument.",ARGV0); group = optarg; break; case 'c': if(!optarg) ErrorExit("%s: -c needs an argument.",ARGV0); cfg = optarg; break; case 't': test_config = 1; break; default: help_execd(); break; } } /* Check if the group given are valid */ gid = Privsep_GetGroup(group); if(gid == (gid_t)-1) ErrorExit(USER_ERROR,ARGV0,"",group); /* Privilege separation */ if(Privsep_SetGroup(gid) < 0) ErrorExit(SETGID_ERROR,ARGV0,group, errno, strerror(errno)); /* Reading config */ if((c = ExecdConfig(cfg)) < 0) { ErrorExit(CONFIG_ERROR, ARGV0, cfg); } /* Exit if test_config */ if(test_config) exit(0); /* Signal manipulation */ StartSIG2(ARGV0, execd_shutdown); if (!run_foreground) { /* Going daemon */ nowDaemon(); goDaemon(); } /* Active response disabled */ if(c == 1) { verbose(EXEC_DISABLED, ARGV0); exit(0); } /* Creating the PID file */ if(CreatePID(ARGV0, getpid()) < 0) merror(PID_ERROR, ARGV0); /* Starting queue (exec queue) */ if((m_queue = StartMQ(EXECQUEUEPATH,READ)) < 0) ErrorExit(QUEUE_ERROR, ARGV0, EXECQUEUEPATH, strerror(errno)); /* Start up message */ verbose(STARTUP_MSG, ARGV0, (int)getpid()); /* The real daemon Now */ ExecdStart(m_queue); exit(0); }