|  | static void do_prepare (void); | 
|  | #define PREPARE(argc, argv) do_prepare () | 
|  | static int do_test (void); | 
|  | #define TEST_FUNCTION do_test () | 
|  | #include "../test-skeleton.c" | 
|  |  | 
|  |  | 
|  | static char *fname; | 
|  |  | 
|  |  | 
|  | static void | 
|  | do_prepare (void) | 
|  | { | 
|  | if (create_temp_file ("tst-getopt_long1", &fname) < 0) | 
|  | { | 
|  | printf ("cannot create temp file: %m\n"); | 
|  | exit (1); | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | static const struct option opts[] = | 
|  | { | 
|  | { "one", no_argument, NULL, '1' }, | 
|  | { "two", no_argument, NULL, '2' }, | 
|  | { "one-one", no_argument, NULL, '3' }, | 
|  | { "four", no_argument, NULL, '4' }, | 
|  | { "onto", no_argument, NULL, '5' }, | 
|  | { NULL, 0, NULL, 0 } | 
|  | }; | 
|  |  | 
|  |  | 
|  | static int | 
|  | do_test (void) | 
|  | { | 
|  | if (freopen (fname, "w+", stderr) == NULL) | 
|  | { | 
|  | printf ("freopen failed: %m\n"); | 
|  | return 1; | 
|  | } | 
|  |  | 
|  | char *argv[] = { (char *) "program", (char *) "--on" }; | 
|  | int argc = 2; | 
|  |  | 
|  | int c = getopt_long (argc, argv, "12345", opts, NULL); | 
|  | printf ("return value: %c\n", c); | 
|  |  | 
|  | rewind (stderr); | 
|  | char *line = NULL; | 
|  | size_t len = 0; | 
|  | if (getline (&line, &len, stderr) < 0) | 
|  | { | 
|  | printf ("cannot read stderr redirect: %m\n"); | 
|  | return 1; | 
|  | } | 
|  | printf ("message = \"%s\"\n", line); | 
|  |  | 
|  | static const char expected[] = "\ | 
|  | program: option '--on' is ambiguous; possibilities: '--one' '--onto' '--one-one'\n"; | 
|  |  | 
|  | return c != '?' || strcmp (line, expected) != 0; | 
|  | } |