add function sf_parse_cmd_option_bool

iovec_array
YuQing 2021-05-20 09:55:02 +08:00
parent 89cef5e19d
commit 4d1ef0ba1a
2 changed files with 37 additions and 5 deletions

View File

@ -97,7 +97,7 @@ void sf_usage_ex1(const char *program, const str_ptr_array_t *other_options)
{ {
int i; int i;
fprintf(stderr, "Usage: %s [options] <config_file> " fprintf(stderr, "\nUsage: %s [options] <config_file> "
"[start | stop | restart]\n\noptions:\n", program); "[start | stop | restart]\n\noptions:\n", program);
if (other_options != NULL) { if (other_options != NULL) {
@ -106,7 +106,8 @@ void sf_usage_ex1(const char *program, const str_ptr_array_t *other_options)
} }
} }
fprintf(stderr, "\t--without-daemon | --no-daemon: run in foreground\n" fprintf(stderr, "\t-n | --without-daemon | --no-daemon: "
"run in foreground\n"
"\t-V | --version: show version info\n" "\t-V | --version: show version info\n"
"\t-h | --help: for this usage\n\n"); "\t-h | --help: for this usage\n\n");
} }
@ -128,7 +129,7 @@ const char *sf_parse_daemon_mode_and_action_ex1(int argc, char *argv[],
for (i=1; i<argc; i++) { for (i=1; i<argc; i++) {
if (argv[i][0] != '-') { if (argv[i][0] != '-') {
if (normal.argc == CMD_NORMAL_ARG_COUNT) { if (normal.argc == CMD_NORMAL_ARG_COUNT) {
fprintf(stderr, "too many arguments!\n\n"); fprintf(stderr, "\nError: too many arguments!\n");
sf_usage_ex1(argv[0], other_options); sf_usage_ex1(argv[0], other_options);
return NULL; return NULL;
} }
@ -136,7 +137,8 @@ const char *sf_parse_daemon_mode_and_action_ex1(int argc, char *argv[],
continue; continue;
} }
if (strcmp(argv[i], "--without-daemon") == 0 || if (strcmp(argv[i], "-n") == 0 ||
strcmp(argv[i], "--without-daemon") == 0 ||
strcmp(argv[i], "--no-daemon") == 0) strcmp(argv[i], "--no-daemon") == 0)
{ {
*daemon_mode = false; *daemon_mode = false;
@ -152,7 +154,7 @@ const char *sf_parse_daemon_mode_and_action_ex1(int argc, char *argv[],
} else { } else {
proc_name = argv[0]; proc_name = argv[0];
} }
printf("%s V%d.%d.%d\n\n", proc_name, version->major, printf("\n%s V%d.%d.%d\n\n", proc_name, version->major,
version->minor, version->patch); version->minor, version->patch);
return NULL; return NULL;
} }
@ -165,6 +167,7 @@ const char *sf_parse_daemon_mode_and_action_ex1(int argc, char *argv[],
} }
if (normal.argc == 0) { if (normal.argc == 0) {
fprintf(stderr, "\nError: expect config file!\n");
sf_usage_ex1(argv[0], other_options); sf_usage_ex1(argv[0], other_options);
return NULL; return NULL;
} }
@ -179,6 +182,31 @@ const char *sf_parse_daemon_mode_and_action_ex1(int argc, char *argv[],
return config_filepath; return config_filepath;
} }
void sf_parse_cmd_option_bool(int argc, char *argv[],
const string_t *short_option, const string_t *long_option,
bool *value)
{
char **pp;
char **end;
int len;
*value = false;
end = argv + argc;
for (pp=argv + 1; pp<end; pp++) {
if (**pp != '-') {
continue;
}
len = strlen(*pp);
if (fc_string_equals2(short_option, *pp, len) ||
fc_string_equals2(long_option, *pp, len))
{
*value = true;
break;
}
}
}
int sf_logger_init(LogContext *pContext, const char *filename_prefix) int sf_logger_init(LogContext *pContext, const char *filename_prefix)
{ {
int result; int result;

View File

@ -107,6 +107,10 @@ static inline const char *sf_parse_daemon_mode_and_action_ex(int argc,
daemon_mode, action, default_action, &options); daemon_mode, action, default_action, &options);
} }
void sf_parse_cmd_option_bool(int argc, char *argv[],
const string_t *short_option, const string_t *long_option,
bool *value);
int sf_logger_init(LogContext *pContext, const char *filename_prefix); int sf_logger_init(LogContext *pContext, const char *filename_prefix);
ScheduleEntry *sf_logger_set_schedule_entry(struct log_context *pContext, ScheduleEntry *sf_logger_set_schedule_entry(struct log_context *pContext,