X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afh.c;h=f3c25a261ea5cc9c3b49398c850dba00e82afd35;hp=4c65d7c1f76bdc4b054461127d14b9547881d6f7;hb=213b3181e7f8ebd07ec37e256188ea9094722cef;hpb=2f07d34b5d4c37606be5849b6ee51e0443707898 diff --git a/afh.c b/afh.c index 4c65d7c1..f3c25a26 100644 --- a/afh.c +++ b/afh.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2013 Andre Noll + * Copyright (C) 2008 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -15,6 +15,7 @@ #include "afh.h" #include "error.h" #include "version.h" +#include "ggo.h" static struct afh_args_info conf; INIT_AFH_ERRLISTS; @@ -56,6 +57,17 @@ static void print_chunk_table(struct afh_info *afhi) } } +__noreturn static void print_help_and_die(void) +{ + struct ggo_help h = DEFINE_GGO_HELP(afh); + int d = conf.detailed_help_given; + unsigned flags = d? GPH_STANDARD_FLAGS_DETAILED : GPH_STANDARD_FLAGS; + + ggo_print_help(&h, flags); + printf("supported audio formats: %s\n", AUDIO_FORMAT_HANDLERS); + exit(EXIT_SUCCESS); +} + /** * The main function of para_afh. * @@ -72,12 +84,14 @@ int main(int argc, char **argv) struct afh_info afhi; afh_cmdline_parser(argc, argv, &conf); - HANDLE_VERSION_FLAG("afh", conf); loglevel = get_loglevel_by_name(conf.loglevel_arg); + version_handle_flag("afh", conf.version_given); + if (conf.help_given || conf.detailed_help_given) + print_help_and_die(); + afh_init(); ret = -E_AFH_SYNTAX; if (conf.inputs_num == 0) goto out; - afh_init(); for (i = 0; i < conf.inputs_num; i++) { int ret2; ret = mmap_full_file(conf.inputs[i], O_RDONLY, &audio_file_data, @@ -88,16 +102,16 @@ int main(int argc, char **argv) } ret = compute_afhi(conf.inputs[i], audio_file_data, audio_file_size, fd, &afhi); - if (ret < 0) - goto out; - - audio_format_num = ret; - printf("File %d: %s\n", i + 1, conf.inputs[i]); - print_info(audio_format_num, &afhi); - if (conf.chunk_table_given) - print_chunk_table(&afhi); - printf("\n"); - clear_afhi(&afhi); + if (ret >= 0) { + audio_format_num = ret; + printf("File %d: %s\n", i + 1, conf.inputs[i]); + print_info(audio_format_num, &afhi); + if (conf.chunk_table_given) + print_chunk_table(&afhi); + printf("\n"); + clear_afhi(&afhi); + } + close(fd); ret2 = para_munmap(audio_file_data, audio_file_size); if (ret2 < 0 && ret >= 0) ret = ret2;