From 244361ebaec57a6fbb9998bfa5ec71ee8d88f3e8 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Wed, 24 May 2017 09:17:34 -0300 Subject: support: Add optstring support This patch adds an option to test to add small command line option through CMDLINE_OPTSTRING define. For instance: #define CMDLINE_OPTSTRING "vd" static void cmdline_process_function (int c) { switch (c): 'v': /* process '-v' option. */ break; 'd': /* process '-d' option. */ break; } #define CMDLINE_PROCESS cmdline_process_function It will add both '-v' and '-d' along with already default long options. * support/support_test_main.c (support_test_main): Use optstring member for option string in getopt_long. * support/test-driver.c: Add comment about CMDLINE_OPTSTRING. (CMDLINE_OPTSTRING): New define. * support/test-driver.h (test_config): Add optstring member. --- ChangeLog | 8 ++++++++ support/support_test_main.c | 3 ++- support/test-driver.c | 9 +++++++++ support/test-driver.h | 1 + 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 70faa63f6e..8fb6aaae0c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2017-06-15 Adhemerval Zanella + + * support/support_test_main.c (support_test_main): Use optstring + member for option string in getopt_long. + * support/test-driver.c: Add comment about CMDLINE_OPTSTRING. + (CMDLINE_OPTSTRING): New define. + * support/test-driver.h (test_config): Add optstring member. + 2017-06-15 H.J. Lu * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add diff --git a/support/support_test_main.c b/support/support_test_main.c index 914d64f603..3c411a467b 100644 --- a/support/support_test_main.c +++ b/support/support_test_main.c @@ -211,7 +211,8 @@ support_test_main (int argc, char **argv, const struct test_config *config) mallopt (M_PERTURB, 42); } - while ((opt = getopt_long (argc, argv, "+", options, NULL)) != -1) + while ((opt = getopt_long (argc, argv, config->optstring, options, NULL)) + != -1) switch (opt) { case '?': diff --git a/support/test-driver.c b/support/test-driver.c index 482066dbeb..47c387c2b4 100644 --- a/support/test-driver.c +++ b/support/test-driver.c @@ -93,6 +93,10 @@ has this type: void CMDLINE_PROCESS (int); + + If the program also to process custom default short command line + argument (similar to getopt) it must define CMDLINE_OPTSTRING + with the expected options (for instance "vb"). */ #include @@ -151,6 +155,11 @@ main (int argc, char **argv) #ifdef CMDLINE_PROCESS test_config.cmdline_function = CMDLINE_PROCESS; #endif +#ifdef CMDLINE_OPTSTRING + test_config.optstring = "+" CMDLINE_OPTSTRING; +#else + test_config.optstring = "+"; +#endif return support_test_main (argc, argv, &test_config); } diff --git a/support/test-driver.h b/support/test-driver.h index af1971a9ca..a8fe9c3565 100644 --- a/support/test-driver.h +++ b/support/test-driver.h @@ -35,6 +35,7 @@ struct test_config int expected_status; /* Expected exit status. */ int expected_signal; /* If non-zero, expect termination by signal. */ char no_mallopt; /* Boolean flag to disable mallopt. */ + const char *optstring; /* Short command line options. */ }; enum -- cgit 1.4.1