mirror of git://sourceware.org/git/glibc.git
				
				
				
			
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
| 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[] = { "program", "--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;
 | |
| }
 |