1static void do_prepare (void);
2#define PREPARE(argc, argv) do_prepare ()
3static int do_test (void);
4#define TEST_FUNCTION do_test ()
5#include "../test-skeleton.c"
6
7
8static char *fname;
9
10
11static void
12do_prepare (void)
13{
14 if (create_temp_file (base: "tst-getopt_long1", filename: &fname) < 0)
15 {
16 printf (format: "cannot create temp file: %m\n");
17 exit (1);
18 }
19}
20
21
22static const struct option opts[] =
23 {
24 { "one", no_argument, NULL, '1' },
25 { "two", no_argument, NULL, '2' },
26 { "one-one", no_argument, NULL, '3' },
27 { "four", no_argument, NULL, '4' },
28 { "onto", no_argument, NULL, '5' },
29 { NULL, 0, NULL, 0 }
30 };
31
32
33static int
34do_test (void)
35{
36 if (freopen (filename: fname, modes: "w+", stderr) == NULL)
37 {
38 printf (format: "freopen failed: %m\n");
39 return 1;
40 }
41
42 char *argv[] = { (char *) "program", (char *) "--on" };
43 int argc = 2;
44
45 int c = getopt_long (argc: argc, argv: argv, shortopts: "12345", longopts: opts, NULL);
46 printf (format: "return value: %c\n", c);
47
48 rewind (stderr);
49 char *line = NULL;
50 size_t len = 0;
51 if (getline (lineptr: &line, n: &len, stderr) < 0)
52 {
53 printf (format: "cannot read stderr redirect: %m\n");
54 return 1;
55 }
56 printf (format: "message = \"%s\"\n", line);
57
58 static const char expected[] = "\
59program: option '--on' is ambiguous; possibilities: '--one' '--one-one' '--onto'\n";
60
61 return c != '?' || strcmp (line, expected) != 0;
62}
63

source code of glibc/posix/tst-getopt_long1.c