1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
#include "main.ih"
// Room for Args initialization
namespace // the anonymous namespace can be used here
{
Arg::LongOption longOptions[] =
{
// only interpreted from the command-line
Arg::LongOption("help", 'h'),
Arg::LongOption("version", 'v'),
Arg::LongOption("list", 'l'),
Arg::LongOption("no-daemon", Arg::NoArg),
Arg::LongOption("reload", 'r'),
Arg::LongOption("stdout", 's'),
Arg::LongOption("terminate", 't'),
Arg::LongOption("config", 'c'),
Arg::LongOption("forced", 'f'),
// all options below are also interpreted when specified by
// the config file
Arg::LongOption("agent", Arg::Required),
Arg::LongOption("ipc-file", 'i'),
Arg::LongOption("log", 'L'),
Arg::LongOption("mailer", 'm'),
Arg::LongOption("syslog", Arg::NoArg),
Arg::LongOption("syslog-facility", Arg::Required),
Arg::LongOption("syslog-priority", Arg::Required),
Arg::LongOption("syslog-tag", Arg::Required),
Arg::LongOption("verbose", Arg::NoArg),
};
auto longEnd = longOptions + sizeof(longOptions) / sizeof(longOptions[0]);
}
int main(int argc, char **argv)
try
{
ArgConfig &arg = ArgConfig::initialize("c:fhi:lL:m:rstv",
longOptions, longEnd, argc, argv);
arg.versionHelp(Options::usage, Icmbuild::version, 0);
Daemon daemon;
daemon.run();
}
catch (exception const &exc)
{
if (exc.what() != to_string(fmsg.id()))
cerr << exc.what() << endl;
return 1;
}
catch (int x)
{
return ArgConfig::instance().option("hv") ? 0 : 1;
}
|