]> granicus.if.org Git - python/commitdiff
Added new global flag variable Py_InteractiveFlag and new function
authorGuido van Rossum <guido@python.org>
Fri, 14 Feb 1997 19:45:36 +0000 (19:45 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 14 Feb 1997 19:45:36 +0000 (19:45 +0000)
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.

Python/pythonrun.c

index 7cdcf46cebbff3db02f5cb844cff3523c654ecb9..6fbe4eca4a91d2bf6d1b3b6f11ed343d43f5858d 100644 (file)
@@ -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);
+}