From 3b2aedbdc58c3466469abf4f3fbfc123195ff1f9 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Fri, 15 Sep 2000 18:40:42 +0000 Subject: 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. --- Modules/main.c | 40 ++++++++++++++++++++++++++++++++-------- 1 file 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 directory (or %c).\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) { -- cgit v0.12