X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=write.c;h=6e78e773c558f3d1c6d5fd8a15d0532645cec570;hp=998a6d2cccde01cf45bcb6e5dea9d5e11c3f7da0;hb=2084249288864e17c43570bd9957bd927864b1b7;hpb=0c4e55bbaa21f24f66e57a555341924840850c71 diff --git a/write.c b/write.c index 998a6d2c..6e78e773 100644 --- a/write.c +++ b/write.c @@ -14,6 +14,7 @@ #include "write.cmdline.h" #include "list.h" #include "sched.h" +#include "ggo.h" #include "stdin.h" #include "write.h" #include "write_common.h" @@ -129,20 +130,6 @@ static struct writer_node_group *check_args(void) struct writer_node_group *g = NULL; struct initial_delay_task *idt = &the_initial_delay_task; - if (conf.list_writers_given) { - char *msg = NULL; - FOR_EACH_WRITER(i) { - char *tmp = make_message("%s%s%s", - i? msg : "", - i? " " : "", - writer_names[i]); - free(msg); - msg = tmp; - } - fprintf(stderr, "%s\n", msg); - free(msg); - exit(EXIT_SUCCESS); - } if (conf.start_time_given) { long unsigned sec, usec; if (sscanf(conf.start_time_arg, "%lu:%lu", @@ -174,6 +161,33 @@ out: return NULL; } +__noreturn static void print_help_and_die(void) +{ + int i, d = conf.detailed_help_given; + const char **p = d? write_args_info_detailed_help + : write_args_info_help; + + printf_or_die("%s\n\n", WRITE_CMDLINE_PARSER_PACKAGE "-" + WRITE_CMDLINE_PARSER_VERSION); + printf_or_die("%s\n\n", write_args_info_usage); + for (; *p; p++) + printf_or_die("%s\n", *p); + + printf_or_die("\nAvailable writers: \n\t"); + FOR_EACH_WRITER(i) + printf_or_die("%s%s", i? " " : "", writer_names[i]); + printf_or_die("\n\n"); + FOR_EACH_WRITER(i) { + struct writer *w = writers + i; + + if (!w->help.short_help) + continue; + printf_or_die("Options for %s:\n", writer_names[i]); + ggo_print_help(&w->help, d); + } + exit(0); +} + /** * Para_write's main function. * @@ -192,9 +206,11 @@ int main(int argc, char *argv[]) struct check_wav_task *cwt = &the_check_wav_task; struct initial_delay_task *idt = &the_initial_delay_task; + init_supported_writers(); write_cmdline_parser(argc, argv, &conf); HANDLE_VERSION_FLAG("write", conf); - init_supported_writers(); + if (conf.help_given || conf.detailed_help_given) + print_help_and_die(); wng = check_args(); if (!wng)