mirror of git://sourceware.org/git/glibc.git
				
				
				
			
		
			
				
	
	
		
			73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
| /* Example of Parsing Arguments with getopt.
 | |
|    Copyright (C) 1991-2024 Free Software Foundation, Inc.
 | |
| 
 | |
|    This program is free software; you can redistribute it and/or
 | |
|    modify it under the terms of the GNU General Public License
 | |
|    as published by the Free Software Foundation; either version 2
 | |
|    of the License, or (at your option) any later version.
 | |
| 
 | |
|    This program is distributed in the hope that it will be useful,
 | |
|    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|    GNU General Public License for more details.
 | |
| 
 | |
|    You should have received a copy of the GNU General Public License
 | |
|    along with this program; if not, see <https://www.gnu.org/licenses/>.
 | |
| */
 | |
| 
 | |
| /*@group*/
 | |
| #include <ctype.h>
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <unistd.h>
 | |
| 
 | |
| int
 | |
| main (int argc, char **argv)
 | |
| {
 | |
|   int aflag = 0;
 | |
|   int bflag = 0;
 | |
|   char *cvalue = NULL;
 | |
|   int index;
 | |
|   int c;
 | |
| 
 | |
|   opterr = 0;
 | |
| /*@end group*/
 | |
| 
 | |
| /*@group*/
 | |
|   while ((c = getopt (argc, argv, "abc:")) != -1)
 | |
|     switch (c)
 | |
|       {
 | |
|       case 'a':
 | |
|         aflag = 1;
 | |
|         break;
 | |
|       case 'b':
 | |
|         bflag = 1;
 | |
|         break;
 | |
|       case 'c':
 | |
|         cvalue = optarg;
 | |
|         break;
 | |
|       case '?':
 | |
|         if (optopt == 'c')
 | |
|           fprintf (stderr, "Option -%c requires an argument.\n", optopt);
 | |
|         else if (isprint (optopt))
 | |
|           fprintf (stderr, "Unknown option `-%c'.\n", optopt);
 | |
|         else
 | |
|           fprintf (stderr,
 | |
|                    "Unknown option character `\\x%x'.\n",
 | |
|                    optopt);
 | |
|         return 1;
 | |
|       default:
 | |
|         abort ();
 | |
|       }
 | |
| /*@end group*/
 | |
| 
 | |
| /*@group*/
 | |
|   printf ("aflag = %d, bflag = %d, cvalue = %s\n",
 | |
| 	  aflag, bflag, cvalue);
 | |
| 
 | |
|   for (index = optind; index < argc; index++)
 | |
|     printf ("Non-option argument %s\n", argv[index]);
 | |
|   return 0;
 | |
| }
 | |
| /*@end group*/
 |