diff options
author | Barry Warsaw <barry@python.org> | 2000-09-15 18:40:42 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2000-09-15 18:40:42 (GMT) |
commit | 3b2aedbdc58c3466469abf4f3fbfc123195ff1f9 (patch) | |
tree | 31d0b404e1b052faf4dc8e64d99693074b39582e /Modules | |
parent | 645693783c47f143cab160105b6bd01935a55e8b (diff) | |
download | cpython-3b2aedbdc58c3466469abf4f3fbfc123195ff1f9.zip cpython-3b2aedbdc58c3466469abf4f3fbfc123195ff1f9.tar.gz cpython-3b2aedbdc58c3466469abf4f3fbfc123195ff1f9.tar.bz2 |
Py_Main(), usage(), usage_mid: Add -h and -V flags to print the usage
message and Python version number and exit immediately. Closes patch
#101496.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/main.c | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/Modules/main.c b/Modules/main.c index fa316cf..b4d7cdf 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -1,4 +1,3 @@ - /* Python interpreter main program */ #include "Python.h" @@ -51,6 +50,8 @@ static char *usage_mid = "\ -U : Unicode literals: treats '...' literals like u'...'\n\ -v : verbose (trace import statements) (also PYTHONVERBOSE=x)\n\ -x : skip first line of source, allowing use of non-Unix forms of #!cmd\n\ +-h : print this help message and exit\n\ +-V : print the Python version number and exit\n\ -c cmd : program passed in as string (terminates option list)\n\ file : program read from script file\n\ - : program read from stdin (default; interactive mode if a tty)\n\ @@ -66,6 +67,18 @@ PYTHONHOME : alternate <prefix> directory (or <prefix>%c<exec_prefix>).\n\ "; +static void +usage(int exitcode, char* program) +{ + fprintf(stderr, usage_line, program); + fprintf(stderr, usage_top); + fprintf(stderr, usage_mid); + fprintf(stderr, usage_bot, DELIM, DELIM, PYTHONHOMEHELP); + exit(exitcode); + /*NOTREACHED*/ +} + + /* Main program */ DL_EXPORT(int) @@ -81,6 +94,8 @@ Py_Main(int argc, char **argv) int unbuffered = 0; int skipfirstline = 0; int stdin_is_interactive = 0; + int help = 0; + int version = 0; orig_argc = argc; /* For Py_GetArgcArgv() */ orig_argv = argv; @@ -90,7 +105,7 @@ Py_Main(int argc, char **argv) if ((p = getenv("PYTHONUNBUFFERED")) && *p != '\0') unbuffered = 1; - while ((c = getopt(argc, argv, "c:diOStuUvxX")) != EOF) { + while ((c = getopt(argc, argv, "c:diOStuUvxXhV")) != EOF) { if (c == 'c') { /* -c is the last option; following arguments that look like options are left for the @@ -142,21 +157,30 @@ Py_Main(int argc, char **argv) case 'U': Py_UnicodeFlag++; break; + case 'h': + help++; + break; + case 'V': + version++; + break; /* This space reserved for other options */ default: - fprintf(stderr, usage_line, argv[0]); - fprintf(stderr, usage_top); - fprintf(stderr, usage_mid); - fprintf(stderr, usage_bot, - DELIM, DELIM, PYTHONHOMEHELP); - exit(2); + usage(2, argv[0]); /*NOTREACHED*/ } } + if (help) + usage(0, argv[0]); + + if (version) { + fprintf(stderr, "Python %s\n", PY_VERSION); + exit(0); + } + if (command == NULL && optind < argc && strcmp(argv[optind], "-") != 0) { |