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
/*
* 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
* 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 <http://www.gnu.org/licenses/>.
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
+
+#include <config.h>
+#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
+#include <getopt.h>
#include "common.h"
+#include "help.h"
/*
* Decode a hexadecimal string into a sequence of bytes. If there are an
char tmp[] = "00";
for (len = 0; hex[len]; len++) {
- if (!isxdigit(hex[len]))
+ if (!isxdigit((unsigned char)hex[len]))
return -1;
}
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');
+ }
+}
+/*
+ * 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 <https://www.gnu.org/licenses/>.
+ */
+
#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
/*
* 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
* 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 <http://www.gnu.org/licenses/>.
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <config.h>
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 <http://gnu.org/licenses/gpl.html>.");
- 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)
progname, hex);
goto out;
}
-
+
rc = upkg_decode_index(&index, buf, n);
if (rc == 0) {
fprintf(stderr, "%s: invalid index encoding:\n", progname);
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);
/*
* 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
* 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 <http://www.gnu.org/licenses/>.
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <config.h>
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 <http://gnu.org/licenses/gpl.html>.");
- 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)
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);