diff --git a/src/main.c b/src/main.c index a8f21db9..92fd3161 100644 --- a/src/main.c +++ b/src/main.c @@ -138,7 +138,7 @@ static void die(const char *fmt, ...) static int MakeConsole(); #endif -static void show_usage_and_exit(void) +static void show_usage_and_exit(const char *exeName) { const struct mg_option *options; int i; @@ -147,12 +147,20 @@ static void show_usage_and_exit(void) MakeConsole(); #endif + if (exeName==0 || *exeName==0) { + exeName = "civetweb"; + } + fprintf(stderr, "Civetweb v%s, built on %s\n", mg_version(), __DATE__); fprintf(stderr, "Usage:\n"); - fprintf(stderr, " civetweb -A \n"); - fprintf(stderr, " civetweb [config_file]\n"); - fprintf(stderr, " civetweb [-option value ...]\n"); + fprintf(stderr, " Start server with a set of options:\n"); + fprintf(stderr, " %s [config_file]\n", exeName); + fprintf(stderr, " %s [-option value ...]\n", exeName); + fprintf(stderr, " Add user/change password:\n"); + fprintf(stderr, " %s -A \n", exeName); + fprintf(stderr, " Remove user:\n"); + fprintf(stderr, " %s -R \n", exeName); fprintf(stderr, "\nOPTIONS:\n"); options = mg_get_valid_options(); @@ -432,7 +440,7 @@ static void process_command_line_arguments(char *argv[], char **options) They override config file and default settings. */ for (i = cmd_line_opts_start; argv[i] != NULL; i += 2) { if (argv[i][0] != '-' || argv[i + 1] == NULL) { - show_usage_and_exit(); + show_usage_and_exit(argv[0]); } if (!set_option(options, &argv[i][1], argv[i + 1])) { printf("command line option is invalid, ignoring it:\n %s %s\n", @@ -561,15 +569,24 @@ static void start_civetweb(int argc, char *argv[]) char *options[2*MAX_OPTIONS+1]; int i; - /* Edit passwords file, if -A option is specified */ + /* Edit passwords file: Add user or change password, if -A option is specified */ if (argc > 1 && !strcmp(argv[1], "-A")) { if (argc != 6) { - show_usage_and_exit(); + show_usage_and_exit(argv[0]); } exit(mg_modify_passwords_file(argv[2], argv[3], argv[4], argv[5]) ? EXIT_SUCCESS : EXIT_FAILURE); } + /* Edit passwords file: Remove user, if -R option is specified */ + if (argc > 1 && !strcmp(argv[1], "-R")) { + if (argc != 5) { + show_usage_and_exit(argv[0]); + } + exit(mg_modify_passwords_file(argv[2], argv[3], argv[4], NULL) ? + EXIT_SUCCESS : EXIT_FAILURE); + } + /* Call Lua with additional Civetweb specific Lua functions, if -L option is specified */ if (argc > 1 && !strcmp(argv[1], "-L")) { #ifdef WIN32 @@ -582,8 +599,8 @@ static void start_civetweb(int argc, char *argv[]) } /* Show usage if -h or --help options are specified */ - if (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) { - show_usage_and_exit(); + if (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "-H") || !strcmp(argv[1], "--help"))) { + show_usage_and_exit(argv[0]); } options[0] = NULL; @@ -1501,9 +1518,9 @@ static int MakeConsole() { ok = (GetConsoleWindow() != NULL); if (ok) { - freopen("CONIN$", "r", stdin); - freopen("CONOUT$", "w", stdout); - freopen("CONOUT$", "w", stderr); + freopen("CONIN$", "r", stdin); + freopen("CONOUT$", "w", stdout); + freopen("CONOUT$", "w", stderr); } }