diff --git a/ffserver.c b/ffserver.c index b09eadcab6..e463f32598 100644 --- a/ffserver.c +++ b/ffserver.c @@ -59,6 +59,8 @@ static const char program_name[] = "FFserver"; static const int program_birth_year = 2000; +static const OptionDef options[]; + /* maximum number of simultaneous HTTP connections */ #define HTTP_MAX_CONNECTIONS 2000 @@ -288,6 +290,7 @@ static int rtp_new_av_stream(HTTPContext *c, static const char *my_program_name; static const char *my_program_dir; +static const char *config_filename; static int ffserver_debug; static int ffserver_daemon; static int no_launch; @@ -4303,17 +4306,6 @@ static int parse_ffconfig(const char *filename) return 0; } -static void show_help(void) -{ - printf("usage: ffserver [-L] [-h] [-f configfile]\n" - "Hyper fast multi format Audio/Video streaming server\n" - "\n" - "-L show license\n" - "-h show help\n" - "-f configfile use configfile instead of /etc/ffserver.conf\n" - ); -} - static void handle_child_exit(int sig) { pid_t pid; @@ -4339,10 +4331,38 @@ static void handle_child_exit(int sig) need_to_start_children = 1; } +static void opt_show_license(void) +{ + show_license(); + exit(0); +} + +static void opt_debug() +{ + ffserver_debug = 1; + ffserver_daemon = 0; +} + +static void opt_show_help(void) +{ + printf("usage: ffserver [options]\n" + "Hyper fast multi format Audio/Video streaming server\n"); + printf("\n"); + show_help_options(options, "Main options:\n", 0, 0); + exit(0); +} + +static const OptionDef options[] = { + { "h", 0, {(void*)opt_show_help}, "show help" }, + { "L", 0, {(void*)opt_show_license}, "show license" }, + { "n", OPT_BOOL, {(void *)&no_launch }, "enable no-launch mode" }, + { "d", 0, {(void*)opt_debug}, "enable debug mode" }, + { "f", HAS_ARG | OPT_STRING, {(void*)&config_filename }, "use configfile instead of /etc/ffserver.conf", "configfile" }, + { NULL }, +}; + int main(int argc, char **argv) { - const char *config_filename; - int c; struct sigaction sigact; av_register_all(); @@ -4355,32 +4375,7 @@ int main(int argc, char **argv) my_program_dir = getcwd(0, 0); ffserver_daemon = 1; - for(;;) { - c = getopt(argc, argv, "ndLh?f:"); - if (c == -1) - break; - switch(c) { - case 'L': - show_license(); - exit(0); - case '?': - case 'h': - show_help(); - exit(0); - case 'n': - no_launch = 1; - break; - case 'd': - ffserver_debug = 1; - ffserver_daemon = 0; - break; - case 'f': - config_filename = optarg; - break; - default: - exit(2); - } - } + parse_options(argc, argv, options, NULL); putenv("http_proxy"); /* Kill the http_proxy */