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.
This commit is contained in:
Adhemerval Zanella 2017-05-24 09:17:34 -03:00
parent 70fe2eb794
commit 244361ebae
4 changed files with 20 additions and 1 deletions

View file

@ -1,3 +1,11 @@
2017-06-15 Adhemerval Zanella <adhemerval.zanella@linaro.org>
* 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 <hongjiu.lu@intel.com>
* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add

View file

@ -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 '?':

View file

@ -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 <support/test-driver.h>
@ -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);
}

View file

@ -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