annotate Python/getopt.c @ 9808:0bfaff11c573 legacy-trunk

Ty Sarna writes: The following patches (relative to 1.5.2b1) enable Python dynamic loading to work on NetBSD platforms that use ELF (presnetly mips and alpha systems). They automaticly determine wether the system is ELF or a.out rather than using astatic list of platforms so that when other NetBSD platforms move to ELF, python will continue to work without change.
author Guido van Rossum <guido@python.org>
date Thu, 07 Jan 1999 21:50:41 +0000
parents 4e15d175eed0
children 3b981eacad7b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
1 /*---------------------------------------------------------------------------*
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
2 * <RCS keywords>
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
3 *
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
4 * C++ Library
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
5 *
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
6 * Copyright 1992-1994, David Gottner
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
7 *
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
8 * All Rights Reserved
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
9 *
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
10 * Permission to use, copy, modify, and distribute this software and its
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
11 * documentation for any purpose and without fee is hereby granted,
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
12 * provided that the above copyright notice, this permission notice and
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
13 * the following disclaimer notice appear unmodified in all copies.
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
14 *
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
15 * I DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL I
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
17 * BE LIABLE FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
18 * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
19 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
20 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
21 *
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
22 * Nevertheless, I would like to know about bugs in this library or
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
23 * suggestions for improvment. Send bug reports and feedback to
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
24 * davegottner@delphi.com.
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
25 *---------------------------------------------------------------------------*/
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
26
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 #include <stdio.h>
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 #include <string.h>
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
29
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
30 #define bool int
5313
e8996884e8e1 (Jack:) Don't define TRUE and FALSE if already defined.
Guido van Rossum <guido@python.org>
parents: 2200
diff changeset
31 #ifndef TRUE
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
32 #define TRUE 1
5313
e8996884e8e1 (Jack:) Don't define TRUE and FALSE if already defined.
Guido van Rossum <guido@python.org>
parents: 2200
diff changeset
33 #endif
e8996884e8e1 (Jack:) Don't define TRUE and FALSE if already defined.
Guido van Rossum <guido@python.org>
parents: 2200
diff changeset
34 #ifndef FALSE
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
35 #define FALSE 0
5313
e8996884e8e1 (Jack:) Don't define TRUE and FALSE if already defined.
Guido van Rossum <guido@python.org>
parents: 2200
diff changeset
36 #endif
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
37
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 bool opterr = TRUE; /* generate error messages */
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 int optind = 1; /* index into argv array */
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 char * optarg = NULL; /* optional argument */
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
41
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
42
9645
4e15d175eed0 Patch by Chris Herborth:
Guido van Rossum <guido@python.org>
parents: 6364
diff changeset
43 #ifndef __BEOS__
2200
5ae922cfe404 don't use function prototypes
Guido van Rossum <guido@python.org>
parents: 1598
diff changeset
44 int getopt(argc,argv,optstring)
5ae922cfe404 don't use function prototypes
Guido van Rossum <guido@python.org>
parents: 1598
diff changeset
45 int argc;
5ae922cfe404 don't use function prototypes
Guido van Rossum <guido@python.org>
parents: 1598
diff changeset
46 char *argv[];
5ae922cfe404 don't use function prototypes
Guido van Rossum <guido@python.org>
parents: 1598
diff changeset
47 char optstring[];
9645
4e15d175eed0 Patch by Chris Herborth:
Guido van Rossum <guido@python.org>
parents: 6364
diff changeset
48 #else
4e15d175eed0 Patch by Chris Herborth:
Guido van Rossum <guido@python.org>
parents: 6364
diff changeset
49 int getopt( int argc, char *const *argv, const char *optstring )
4e15d175eed0 Patch by Chris Herborth:
Guido van Rossum <guido@python.org>
parents: 6364
diff changeset
50 #endif
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 {
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
52 static char *opt_ptr = "";
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
53 register char *ptr;
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
54 int option;
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
55
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
56 if (*opt_ptr == '\0') {
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
57
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
58 if (optind >= argc || argv[optind][0] != '-')
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
59 return -1;
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
60
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
61 else if (strcmp(argv[optind], "--") == 0) {
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
62 ++optind;
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
63 return -1;
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
64 }
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
65
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
66 opt_ptr = &argv[optind++][1];
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
67 }
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
68
6364
f39bee3ff22b Fix a bug in this code that made it do the wrong thing when an option
Guido van Rossum <guido@python.org>
parents: 5313
diff changeset
69 if ( (option = *opt_ptr++) == '\0')
f39bee3ff22b Fix a bug in this code that made it do the wrong thing when an option
Guido van Rossum <guido@python.org>
parents: 5313
diff changeset
70 return -1;
f39bee3ff22b Fix a bug in this code that made it do the wrong thing when an option
Guido van Rossum <guido@python.org>
parents: 5313
diff changeset
71
f39bee3ff22b Fix a bug in this code that made it do the wrong thing when an option
Guido van Rossum <guido@python.org>
parents: 5313
diff changeset
72 if ((ptr = strchr(optstring, option)) == NULL) {
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
73 if (opterr)
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
74 fprintf(stderr, "Unknown option: -%c\n", option);
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
75
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
76 return '?';
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
77 }
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
78
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
79 if (*(ptr + 1) == ':') {
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
80 if (*opt_ptr != '\0') {
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
81 optarg = opt_ptr;
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
82 opt_ptr = "";
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
83 }
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
84
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
85 else {
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
86 if (optind >= argc) {
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
87 if (opterr)
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
88 fprintf(stderr,
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
89 "Argument expected for the -%c option\n", option);
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
90 return '?';
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
91 }
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
92
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
93 optarg = argv[optind++];
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
94 }
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
95 }
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
96
1598
ecbadb818847 New version handles -o<string> same as -o <string>
Guido van Rossum <guido@python.org>
parents: 1585
diff changeset
97 return option;
1585
7c75f60468f8 A getopt.c for your amusement
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 }