From: Nick Bowler Date: Sun, 27 Feb 2022 20:38:15 +0000 (-0500) Subject: tests: Add --version output to the common library. X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/commitdiff_plain/b8fe472353dead42e203aefda5e8040ad41448a9 tests: Add --version output to the common library. Just a slight simplification of the individual test apps. Let's also augment the --help output with a simple list of options (even though the current test apps have no useful options). --- diff --git a/Makefile.am b/Makefile.am index 8f98918..fa034c3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -86,7 +86,7 @@ endif check_PROGRAMS = test/decodeindex test/pcxrle check_LIBRARIES = libtest.a -libtest_a_SOURCES = test/common.c test/common.h +libtest_a_SOURCES = test/common.c test/common.h common/src/help.c $(libtest_a_OBJECTS): $(gnulib_headers) TEST_LIBS = libtest.a libgnu.la diff --git a/test/common.c b/test/common.c index c998624..9919b1b 100644 --- a/test/common.c +++ b/test/common.c @@ -1,6 +1,6 @@ /* * Helper functions for test programs. - * Copyright © 2012 Nick Bowler + * Copyright © 2012, 2022 Nick Bowler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -13,12 +13,17 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ + +#include +#include #include #include +#include #include "common.h" +#include "help.h" /* * Decode a hexadecimal string into a sequence of bytes. If there are an @@ -35,7 +40,7 @@ size_t test_decode_hex(const char *hex, unsigned char *buf, size_t n) char tmp[] = "00"; for (len = 0; hex[len]; len++) { - if (!isxdigit(hex[len])) + if (!isxdigit((unsigned char)hex[len])) return -1; } @@ -55,3 +60,23 @@ size_t test_decode_hex(const char *hex, unsigned char *buf, size_t n) return count; } + +void test_print_version(const char *program) +{ + printf("%s (%s) %s\n", program, PACKAGE_NAME, PACKAGE_VERSION); + puts("Copyright (C) 2022 Nick Bowler."); + puts("License GPLv3+: GNU GPL version 3 or any later version."); + puts("This is free software: you are free to change and redistribute it."); + puts("There is NO WARRANTY, to the extent permitted by law."); +} + +void test_print_options(const struct option *lopts) +{ + const struct option *opt; + + puts("\nOptions:"); + for (opt = lopts; opt->val; opt++) { + if (help_print_optstring(opt, "ARG", 20)) + putchar('\n'); + } +} diff --git a/test/common.h b/test/common.h index 907ee5a..675ebe2 100644 --- a/test/common.h +++ b/test/common.h @@ -1,6 +1,29 @@ +/* + * Helper functions for test programs. + * Copyright © 2012, 2022 Nick Bowler + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #ifndef TEST_COMMON_H_ #define TEST_COMMON_H_ +struct option; + +void test_print_version(const char *program); +void test_print_options(const struct option *lopts); + size_t test_decode_hex(const char *hex, unsigned char *buf, size_t n); #endif diff --git a/test/decodeindex.c b/test/decodeindex.c index 1eef6a6..1d4643b 100644 --- a/test/decodeindex.c +++ b/test/decodeindex.c @@ -1,6 +1,6 @@ /* * Tool for decoding compact index values for testing. - * Copyright © 2012 Nick Bowler + * Copyright © 2012, 2022 Nick Bowler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -13,7 +13,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ #include @@ -38,13 +38,10 @@ static void print_usage(FILE *f) fprintf(f, "Usage: %s [options] index [index ...]\n", progname); } -static void print_version(void) +static void print_help(void) { - printf("%s (%s) %s\n", PROGNAME, PACKAGE_NAME, PACKAGE_VERSION); - puts("Copyright (C) 2012 Nick Bowler."); - puts("License GPLv3+: GNU GPL version 3 or later ."); - puts("This is free software: you are free to change and redistribute it."); - puts("There is NO WARRANTY, to the extent permitted by law."); + print_usage(stdout); + test_print_options(lopts); } static void print_bytes(FILE *f, int indent, void *buf, size_t n) @@ -78,7 +75,7 @@ static int print_index(const char *hex) progname, hex); goto out; } - + rc = upkg_decode_index(&index, buf, n); if (rc == 0) { fprintf(stderr, "%s: invalid index encoding:\n", progname); @@ -106,10 +103,10 @@ int main(int argc, char **argv) while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) { switch (opt) { case 'V': - print_version(); + test_print_version(PROGNAME); return EXIT_SUCCESS; case 'H': - print_usage(stdout); + print_help(); return EXIT_SUCCESS; default: print_usage(stderr); diff --git a/test/pcxrle.c b/test/pcxrle.c index 6824fd0..34c50ce 100644 --- a/test/pcxrle.c +++ b/test/pcxrle.c @@ -1,6 +1,6 @@ /* * Tool for testing PCX run-length encoding. - * Copyright © 2012 Nick Bowler + * Copyright © 2012, 2022 Nick Bowler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -13,7 +13,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ #include @@ -41,13 +41,10 @@ static void print_usage(FILE *f) fprintf(f, "Usage: %s [options] bytes [bytes ...]\n", progname); } -static void print_version(void) +static void print_help(void) { - printf("%s (%s) %s\n", PROGNAME, PACKAGE_NAME, PACKAGE_VERSION); - puts("Copyright (C) 2012 Nick Bowler."); - puts("License GPLv3+: GNU GPL version 3 or later ."); - puts("This is free software: you are free to change and redistribute it."); - puts("There is NO WARRANTY, to the extent permitted by law."); + print_usage(stdout); + test_print_options(lopts); } static void rle_error(const unsigned char *raw, size_t n, const char *str) @@ -163,10 +160,10 @@ int main(int argc, char **argv) while ((opt = getopt_long(argc, argv, sopts, lopts, NULL)) != -1) { switch (opt) { case 'V': - print_version(); + test_print_version(PROGNAME); return EXIT_SUCCESS; case 'H': - print_usage(stdout); + print_help(); return EXIT_SUCCESS; default: print_usage(stderr);