You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.4 KiB
83 lines
2.4 KiB
/*---------------------------------------------------------------------------* |
|
* <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> |
|
|
|
int _PyOS_opterr = 1; /* generate error messages */ |
|
int _PyOS_optind = 1; /* index into argv array */ |
|
char *_PyOS_optarg = NULL; /* optional argument */ |
|
|
|
int _PyOS_GetOpt(int argc, char **argv, char *optstring) |
|
{ |
|
static char *opt_ptr = ""; |
|
char *ptr; |
|
int option; |
|
|
|
if (*opt_ptr == '\0') { |
|
|
|
if (_PyOS_optind >= argc || argv[_PyOS_optind][0] != '-' || |
|
argv[_PyOS_optind][1] == '\0' /* lone dash */ ) |
|
return -1; |
|
|
|
else if (strcmp(argv[_PyOS_optind], "--") == 0) { |
|
++_PyOS_optind; |
|
return -1; |
|
} |
|
|
|
opt_ptr = &argv[_PyOS_optind++][1]; |
|
} |
|
|
|
if ( (option = *opt_ptr++) == '\0') |
|
return -1; |
|
|
|
if ((ptr = strchr(optstring, option)) == NULL) { |
|
if (_PyOS_opterr) |
|
fprintf(stderr, "Unknown option: -%c\n", option); |
|
|
|
return '?'; |
|
} |
|
|
|
if (*(ptr + 1) == ':') { |
|
if (*opt_ptr != '\0') { |
|
_PyOS_optarg = opt_ptr; |
|
opt_ptr = ""; |
|
} |
|
|
|
else { |
|
if (_PyOS_optind >= argc) { |
|
if (_PyOS_opterr) |
|
fprintf(stderr, |
|
"Argument expected for the -%c option\n", option); |
|
return '?'; |
|
} |
|
|
|
_PyOS_optarg = argv[_PyOS_optind++]; |
|
} |
|
} |
|
|
|
return option; |
|
}
|
|
|