option
getopt()を使用するが、マルチモジュールの場合はgetopt_long()を使うらしい?
以下、lagopusのparse_argsの例
static void
parse_args(int argc, const char *const argv[]) {
int o;
/*
* FIXME:
* Avoid to use getopt() for proper multi-modules initialization.
*/
while ((o = getopt_long(argc, (char * const *)argv,
"dh?vl:p:C:", s_longopts, NULL)) != EOF) {
switch (o) {
case 0: {
break;
}
case 'd': {
s_debug_level++;
break;
}
case 'h':
case '?': {
usage(stdout, 0);
break;
}
case 'v': {
fprintf(stdout, "%s version %d.%d.%d%s\n",
LAGOPUS_PRODUCT_NAME,
LAGOPUS_VERSION_MAJOR,
LAGOPUS_VERSION_MINOR,
LAGOPUS_VERSION_PATCH,
LAGOPUS_VERSION_RELEASE);
exit(0);
/* NOTREACHED */
}
case 'l': {
s_logfile = optarg;
break;
}
case 'p': {
s_pidfile = optarg;
break;
}
case 'C': {
s_configfile = optarg;
break;
}
default: {
usage(stderr, 1);
break;
}
}
}
}