| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | /*---------------------------------------------------------------------------*
 | 
					
						
							|  |  |  |  * <RCS keywords> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * C++ Library | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright 1992-1994, David Gottner | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *                    All Rights Reserved | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Permission to use, copy, modify, and distribute this software and its  | 
					
						
							|  |  |  |  * documentation for any purpose and without fee is hereby granted,  | 
					
						
							|  |  |  |  * provided that the above copyright notice, this permission notice and | 
					
						
							|  |  |  |  * the following disclaimer notice appear unmodified in all copies. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * I DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL | 
					
						
							|  |  |  |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL I | 
					
						
							|  |  |  |  * BE LIABLE FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY | 
					
						
							|  |  |  |  * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER | 
					
						
							|  |  |  |  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT | 
					
						
							|  |  |  |  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Nevertheless, I would like to know about bugs in this library or | 
					
						
							|  |  |  |  * suggestions for improvment.  Send bug reports and feedback to | 
					
						
							|  |  |  |  * davegottner@delphi.com. | 
					
						
							|  |  |  |  *---------------------------------------------------------------------------*/ | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <stdio.h>
 | 
					
						
							|  |  |  | #include <string.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | #define bool	int
 | 
					
						
							| 
									
										
										
										
											1997-04-11 19:19:46 +00:00
										 |  |  | #ifndef TRUE
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | #define TRUE	1
 | 
					
						
							| 
									
										
										
										
											1997-04-11 19:19:46 +00:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | #ifndef FALSE
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | #define FALSE	0
 | 
					
						
							| 
									
										
										
										
											1997-04-11 19:19:46 +00:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | bool    opterr = TRUE;          /* generate error messages */ | 
					
						
							|  |  |  | int     optind = 1;             /* index into argv array   */ | 
					
						
							|  |  |  | char *  optarg = NULL;          /* optional argument       */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-01-20 16:54:36 +00:00
										 |  |  | int getopt(argc,argv,optstring) | 
					
						
							|  |  |  | int argc;  | 
					
						
							|  |  |  | char *argv[];  | 
					
						
							|  |  |  | char optstring[]; | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 	static   char *opt_ptr = ""; | 
					
						
							|  |  |  | 	register char *ptr; | 
					
						
							|  |  |  | 			 int   option; | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 	if (*opt_ptr == '\0') { | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 		if (optind >= argc || argv[optind][0] != '-') | 
					
						
							|  |  |  | 			return -1; | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 		else if (strcmp(argv[optind], "--") == 0) { | 
					
						
							|  |  |  | 			++optind; | 
					
						
							|  |  |  | 			return -1; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 		opt_ptr = &argv[optind++][1];  | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 	if ((ptr = strchr(optstring, option = *opt_ptr++)) == NULL) { | 
					
						
							|  |  |  | 		if (opterr) | 
					
						
							|  |  |  | 			fprintf(stderr, "Unknown option: -%c\n", option); | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 		return '?'; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 	if (*(ptr + 1) == ':') { | 
					
						
							|  |  |  | 		if (*opt_ptr != '\0') { | 
					
						
							|  |  |  | 			optarg  = opt_ptr; | 
					
						
							|  |  |  | 			opt_ptr = ""; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 		else { | 
					
						
							|  |  |  | 			if (optind >= argc) { | 
					
						
							|  |  |  | 				if (opterr) | 
					
						
							|  |  |  | 					fprintf(stderr, | 
					
						
							|  |  |  | 			    "Argument expected for the -%c option\n", option); | 
					
						
							|  |  |  | 				return '?'; | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 			optarg = argv[optind++]; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-04-28 12:33:58 +00:00
										 |  |  | 	return option; | 
					
						
							| 
									
										
										
										
											1994-04-14 14:08:22 +00:00
										 |  |  | } |