mirror of
https://github.com/python/cpython.git
synced 2025-08-24 18:55:00 +00:00
Merge back to main trunk
This commit is contained in:
parent
013142a95f
commit
1d5735e846
37 changed files with 681 additions and 831 deletions
|
@ -1,5 +1,5 @@
|
|||
/***********************************************************
|
||||
Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum,
|
||||
Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
|
||||
Amsterdam, The Netherlands.
|
||||
|
||||
All Rights Reserved
|
||||
|
@ -26,9 +26,9 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
|
||||
#include "allobjects.h"
|
||||
|
||||
extern int debugging; /* Defined in parser.c */
|
||||
extern int verbose; /* Defined in import.c */
|
||||
extern int killprint; /* Defined in ceval.c */
|
||||
extern int debugging; /* Needed in parser.c, declared in pythonrun.c */
|
||||
extern int verbose; /* Needed in import.c, declared in pythonrun.c */
|
||||
extern int suppress_print; /* Needed in ceval.c, declared in pythonrun.c */
|
||||
|
||||
/* Interface to getopt(): */
|
||||
extern int optind;
|
||||
|
@ -37,7 +37,11 @@ extern int getopt(); /* PROTO((int, char **, char *)); -- not standardized */
|
|||
|
||||
extern char *getenv();
|
||||
|
||||
main(argc, argv)
|
||||
extern char *getversion();
|
||||
extern char *getcopyright();
|
||||
|
||||
int
|
||||
realmain(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
|
@ -48,19 +52,20 @@ main(argc, argv)
|
|||
FILE *fp = stdin;
|
||||
char *p;
|
||||
int inspect = 0;
|
||||
int unbuffered = 0;
|
||||
|
||||
if ((p = getenv("PYTHONDEBUG")) && *p != '\0')
|
||||
debugging = 1;
|
||||
if ((p = getenv("PYTHONSUPPRESS")) && *p != '\0')
|
||||
suppress_print = 1;
|
||||
if ((p = getenv("PYTHONVERBOSE")) && *p != '\0')
|
||||
verbose = 1;
|
||||
if ((p = getenv("PYTHONINSPECT")) && *p != '\0')
|
||||
inspect = 1;
|
||||
if ((p = getenv("PYTHONKILLPRINT")) && *p != '\0')
|
||||
killprint = 1;
|
||||
|
||||
initargs(&argc, &argv);
|
||||
if ((p = getenv("PYTHONUNBUFFERED")) && *p != '\0')
|
||||
unbuffered = 1;
|
||||
|
||||
while ((c = getopt(argc, argv, "c:dikv")) != EOF) {
|
||||
while ((c = getopt(argc, argv, "c:disuv")) != EOF) {
|
||||
if (c == 'c') {
|
||||
/* -c is the last option; following arguments
|
||||
that look like options are left for the
|
||||
|
@ -82,8 +87,12 @@ main(argc, argv)
|
|||
inspect++;
|
||||
break;
|
||||
|
||||
case 'k':
|
||||
killprint++;
|
||||
case 's':
|
||||
suppress_print++;
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
unbuffered++;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
|
@ -94,16 +103,21 @@ main(argc, argv)
|
|||
|
||||
default:
|
||||
fprintf(stderr,
|
||||
"usage: %s [-d] [-i] [-k] [-v] [-c cmd | file | -] [arg] ...\n",
|
||||
"usage: %s [-d] [-i] [-s] [-u ] [-v] [-c cmd | file | -] [arg] ...\n",
|
||||
argv[0]);
|
||||
fprintf(stderr, "\
|
||||
\n\
|
||||
Options and arguments (and corresponding environment variables):\n\
|
||||
-d : debug output from parser (also PYTHONDEBUG=x)\n\
|
||||
-i : inspect interactively after running script (also PYTHONINSPECT=x)\n\
|
||||
-k : kill printing expression statement (also PYTHONKILLPRINT=x)\n\
|
||||
-s : suppress the printing of top level expressions (also PYTHONSUPPRESS=x)\n\
|
||||
-u : unbuffered stdout and stderr (also PYTHONUNBUFFERED=x)\n\
|
||||
-v : verbose (trace import statements) (also PYTHONVERBOSE=x)\n\
|
||||
-c cmd : program passed in as string (terminates option list)\n\
|
||||
");
|
||||
/* ANSI does not allow strings > 512 chars
|
||||
and MPW doesn't like it either -- so split it! */
|
||||
fprintf(stderr, "\
|
||||
file : program read from script file\n\
|
||||
- : program read from stdin (default; interactive mode if a tty)\n\
|
||||
arg ...: arguments passed to program in sys.argv[1:]\n\
|
||||
|
@ -118,9 +132,25 @@ PYTHONPATH : colon-separated list of directories prefixed to the\n\
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (unbuffered) {
|
||||
#ifndef MPW
|
||||
setbuf(stdout, (char *)NULL);
|
||||
setbuf(stderr, (char *)NULL);
|
||||
#else
|
||||
/* On MPW (3.2) unbuffered seems to hang */
|
||||
setvbuf(stdout, (char *)NULL, _IOLBF, BUFSIZ);
|
||||
setvbuf(stderr, (char *)NULL, _IOLBF, BUFSIZ);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (command == NULL && optind < argc && strcmp(argv[optind], "-") != 0)
|
||||
filename = argv[optind];
|
||||
|
||||
if (verbose ||
|
||||
command == NULL && filename == NULL && isatty((int)fileno(fp)))
|
||||
fprintf(stderr, "Python %s\n%s\n",
|
||||
getversion(), getcopyright());
|
||||
|
||||
if (filename != NULL) {
|
||||
if ((fp = fopen(filename, "r")) == NULL) {
|
||||
|
@ -146,15 +176,22 @@ PYTHONPATH : colon-separated list of directories prefixed to the\n\
|
|||
else {
|
||||
if (filename == NULL && isatty((int)fileno(fp))) {
|
||||
char *startup = getenv("PYTHONSTARTUP");
|
||||
#ifdef macintosh
|
||||
if (startup == NULL)
|
||||
startup = "PythonStartup";
|
||||
#endif
|
||||
if (startup != NULL && startup[0] != '\0') {
|
||||
FILE *fp = fopen(startup, "r");
|
||||
if (fp != NULL) {
|
||||
(void) run_script(fp, startup);
|
||||
err_clear();
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
sts = run(fp, filename == NULL ? "<stdin>" : filename) != 0;
|
||||
if (filename != NULL)
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
if (inspect && isatty((int)fileno(stdin)) &&
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue