mirror of https://github.com/python/cpython
Added new global flag variable Py_InteractiveFlag and new function
Py_FdIsInteractive(). The flag is supposed to be set by the -i command line option. The function is supposed to be called instead of isatty(). This is used for Lee Busby's wish #1, to have an option that pretends stdin is interactive even when it really isn't.
This commit is contained in:
parent
115eb64ff6
commit
7433b12a5c
|
@ -79,6 +79,7 @@ static void initsigs PROTO((void));
|
|||
int debugging; /* Needed by parser.c */
|
||||
int verbose; /* Needed by import.c */
|
||||
int suppress_print; /* Needed by ceval.c */
|
||||
int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */
|
||||
|
||||
/* Initialize all */
|
||||
|
||||
|
@ -133,7 +134,7 @@ run(fp, filename)
|
|||
{
|
||||
if (filename == NULL)
|
||||
filename = "???";
|
||||
if (isatty((int)fileno(fp)))
|
||||
if (Py_FdIsInteractive(fp, filename))
|
||||
return run_tty_loop(fp, filename);
|
||||
else
|
||||
return run_script(fp, filename);
|
||||
|
@ -753,3 +754,23 @@ isatty(fd)
|
|||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The file descriptor fd is considered ``interactive'' if either
|
||||
* a) isatty(fd) is TRUE, or
|
||||
* b) the -i flag was given, and the filename associated with
|
||||
* the descriptor is NULL or "<stdin>" or "???".
|
||||
*/
|
||||
int
|
||||
Py_FdIsInteractive(fp, filename)
|
||||
FILE *fp;
|
||||
char *filename;
|
||||
{
|
||||
if (isatty((int)fileno(fp)))
|
||||
return 1;
|
||||
if (!Py_InteractiveFlag)
|
||||
return 0;
|
||||
return (filename == NULL) ||
|
||||
(strcmp(filename, "<stdin>") == 0) ||
|
||||
(strcmp(filename, "???") == 0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue