summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Heimes <christian@cheimes.de>2008-04-12 13:03:03 (GMT)
committerChristian Heimes <christian@cheimes.de>2008-04-12 13:03:03 (GMT)
commit7a98d2730c42fc41fd28d622b46dd334e8a2a21d (patch)
tree311675264c619da17ac7b7c097af9d2a46cb7ead
parentd3ed4921644853d5dd29ed94c848a5cdedef59ef (diff)
downloadcpython-7a98d2730c42fc41fd28d622b46dd334e8a2a21d.zip
cpython-7a98d2730c42fc41fd28d622b46dd334e8a2a21d.tar.gz
cpython-7a98d2730c42fc41fd28d622b46dd334e8a2a21d.tar.bz2
Applied patch #2617 from Frank Wierzbicki wit some extras from me
-J and -X are now reserved for Jython and non-standard arguments (e.g. IronPython). I've added some extra comments to make sure the reservation don't get missed in the future.
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/main.c6
-rw-r--r--Python/getopt.c13
3 files changed, 20 insertions, 2 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 878305d..4319351 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 3?
Core and builtins
-----------------
+- Patch #2617: Reserved -J and -X arguments for Jython, IronPython and other
+ implementations of Python.
+
Extensions Modules
------------------
diff --git a/Modules/main.c b/Modules/main.c
index a919740..8e02fe4 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -40,7 +40,7 @@ static char **orig_argv;
static int orig_argc;
/* command line options */
-#define BASE_OPTS "3bBc:dEhim:OQ:StuUvVW:xX?"
+#define BASE_OPTS "3bBc:dEhiJm:OQ:StuUvVW:xX?"
#ifndef RISCOS
#define PROGRAM_OPTS BASE_OPTS
@@ -349,6 +349,8 @@ Py_Main(int argc, char **argv)
Py_InteractiveFlag++;
break;
+ /* case 'J': reserved for Jython */
+
case 'O':
Py_OptimizeFlag++;
break;
@@ -388,6 +390,8 @@ Py_Main(int argc, char **argv)
skipfirstline = 1;
break;
+ /* case 'X': reserved for non-standard arguments */
+
case 'U':
Py_UnicodeFlag++;
break;
diff --git a/Python/getopt.c b/Python/getopt.c
index 659efcf..acdd5d7 100644
--- a/Python/getopt.c
+++ b/Python/getopt.c
@@ -80,7 +80,18 @@ int _PyOS_GetOpt(int argc, char **argv, char *optstring)
if ( (option = *opt_ptr++) == '\0')
return -1;
-
+
+ if (option == 'J') {
+ fprintf(stderr, "-J is reserved for Jython\n");
+ return '_';
+ }
+
+ if (option == 'X') {
+ fprintf(stderr,
+ "-X is reserved for non-standard arguments\n");
+ return '_';
+ }
+
if ((ptr = strchr(optstring, option)) == NULL) {
if (_PyOS_opterr)
fprintf(stderr, "Unknown option: -%c\n", option);