mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			96 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*---------------------------------------------------------------------------*
 | 
						|
 * <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.
 | 
						|
 *---------------------------------------------------------------------------*/
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
#define bool	int
 | 
						|
#ifndef TRUE
 | 
						|
#define TRUE	1
 | 
						|
#endif
 | 
						|
#ifndef FALSE
 | 
						|
#define FALSE	0
 | 
						|
#endif
 | 
						|
 | 
						|
bool    opterr = TRUE;          /* generate error messages */
 | 
						|
int     optind = 1;             /* index into argv array   */
 | 
						|
char *  optarg = NULL;          /* optional argument       */
 | 
						|
 | 
						|
 | 
						|
#ifndef __BEOS__
 | 
						|
int getopt(int argc, char *argv[], char optstring[])
 | 
						|
#else
 | 
						|
int getopt(int argc, char *const *argv, const char *optstring)
 | 
						|
#endif
 | 
						|
{
 | 
						|
	static   char *opt_ptr = "";
 | 
						|
	register char *ptr;
 | 
						|
			 int   option;
 | 
						|
 | 
						|
	if (*opt_ptr == '\0') {
 | 
						|
 | 
						|
		if (optind >= argc || argv[optind][0] != '-' ||
 | 
						|
		    argv[optind][1] == '\0' /* lone dash */ )
 | 
						|
			return -1;
 | 
						|
 | 
						|
		else if (strcmp(argv[optind], "--") == 0) {
 | 
						|
			++optind;
 | 
						|
			return -1;
 | 
						|
		}
 | 
						|
 | 
						|
		opt_ptr = &argv[optind++][1]; 
 | 
						|
	}
 | 
						|
 | 
						|
	if ( (option = *opt_ptr++) == '\0')
 | 
						|
	  return -1;
 | 
						|
	
 | 
						|
	if ((ptr = strchr(optstring, option)) == NULL) {
 | 
						|
		if (opterr)
 | 
						|
			fprintf(stderr, "Unknown option: -%c\n", option);
 | 
						|
 | 
						|
		return '?';
 | 
						|
	}
 | 
						|
 | 
						|
	if (*(ptr + 1) == ':') {
 | 
						|
		if (*opt_ptr != '\0') {
 | 
						|
			optarg  = opt_ptr;
 | 
						|
			opt_ptr = "";
 | 
						|
		}
 | 
						|
 | 
						|
		else {
 | 
						|
			if (optind >= argc) {
 | 
						|
				if (opterr)
 | 
						|
					fprintf(stderr,
 | 
						|
			    "Argument expected for the -%c option\n", option);
 | 
						|
				return '?';
 | 
						|
			}
 | 
						|
 | 
						|
			optarg = argv[optind++];
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return option;
 | 
						|
}
 |