/*---------------------------------------------------------------------------** <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.*---------------------------------------------------------------------------*//* Modified to support --help and --version, as well as /? on Windows* by Georg Brandl. */#include <Python.h>#include <stdio.h>#include <string.h>#include <wchar.h>#include "internal/pygetopt.h"#ifdef __cplusplusextern "C" {#endifint _PyOS_opterr = 1; /* generate error messages */int _PyOS_optind = 1; /* index into argv array */wchar_t *_PyOS_optarg = NULL; /* optional argument */static wchar_t *opt_ptr = L"";void _PyOS_ResetGetOpt(void){_PyOS_opterr = 1;_PyOS_optind = 1;_PyOS_optarg = NULL;opt_ptr = L"";}int _PyOS_GetOpt(int argc, wchar_t **argv, wchar_t *optstring,const _PyOS_LongOption *longopts, int *longindex){wchar_t *ptr;wchar_t option;if (*opt_ptr == '0円') {if (_PyOS_optind >= argc)return -1;#ifdef MS_WINDOWSelse if (wcscmp(argv[_PyOS_optind], L"/?") == 0) {++_PyOS_optind;return 'h';}#endifelse if (argv[_PyOS_optind][0] != L'-' ||argv[_PyOS_optind][1] == L'0円' /* lone dash */ )return -1;else if (wcscmp(argv[_PyOS_optind], L"--") == 0) {++_PyOS_optind;return -1;}else if (wcscmp(argv[_PyOS_optind], L"--help") == 0) {++_PyOS_optind;return 'h';}else if (wcscmp(argv[_PyOS_optind], L"--version") == 0) {++_PyOS_optind;return 'V';}opt_ptr = &argv[_PyOS_optind++][1];}if ((option = *opt_ptr++) == L'0円')return -1;if (option == L'-') {// Parse long option.if (*opt_ptr == L'0円') {fprintf(stderr, "expected long option\n");return -1;}*longindex = 0;const _PyOS_LongOption *opt;for (opt = &longopts[*longindex]; opt->name; opt = &longopts[++(*longindex)]) {if (!wcscmp(opt->name, opt_ptr))break;}if (!opt->name) {fprintf(stderr, "unknown option %ls\n", argv[_PyOS_optind - 1]);return '_';}opt_ptr = L"";if (!opt->has_arg) {return opt->val;}if (_PyOS_optind >= argc) {fprintf(stderr, "Argument expected for the %ls options\n",argv[_PyOS_optind - 1]);return '_';}_PyOS_optarg = argv[_PyOS_optind++];return opt->val;}if (option == 'J') {if (_PyOS_opterr)fprintf(stderr, "-J is reserved for Jython\n");return '_';}if ((ptr = wcschr(optstring, option)) == NULL) {if (_PyOS_opterr)fprintf(stderr, "Unknown option: -%c\n", (char)option);return '_';}if (*(ptr + 1) == L':') {if (*opt_ptr != L'0円') {_PyOS_optarg = opt_ptr;opt_ptr = L"";}else {if (_PyOS_optind >= argc) {if (_PyOS_opterr)fprintf(stderr,"Argument expected for the -%c option\n", (char)option);return '_';}_PyOS_optarg = argv[_PyOS_optind++];}}return option;}#ifdef __cplusplus}#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。