diff options
author | Neal Norwitz <nnorwitz@gmail.com> | 2006-03-09 05:58:11 (GMT) |
---|---|---|
committer | Neal Norwitz <nnorwitz@gmail.com> | 2006-03-09 05:58:11 (GMT) |
commit | 72c2c062d71c499863ff6e260525faaea4a53dbb (patch) | |
tree | a93e5551c95aff7b117588fa91465a9b15558d45 | |
parent | 8ff212034e3386916f1a35ff3b0c955aa1ea2b4a (diff) | |
download | cpython-72c2c062d71c499863ff6e260525faaea4a53dbb.zip cpython-72c2c062d71c499863ff6e260525faaea4a53dbb.tar.gz cpython-72c2c062d71c499863ff6e260525faaea4a53dbb.tar.bz2 |
Try to be a bit more consistent on all platforms:
python .
python < .
both print a message, return non-zero and do not core dump.
-rw-r--r-- | Lib/test/test_cmd_line.py | 15 | ||||
-rw-r--r-- | Modules/main.c | 3 | ||||
-rw-r--r-- | Python/sysmodule.c | 5 |
3 files changed, 8 insertions, 15 deletions
diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py index 2d293c9..a4a656d 100644 --- a/Lib/test/test_cmd_line.py +++ b/Lib/test/test_cmd_line.py @@ -16,19 +16,8 @@ class CmdLineTest(unittest.TestCase): return subprocess.call([sys.executable, cmd_line], stderr=subprocess.PIPE) def test_directories(self): - if sys.platform == 'win32': - # Exit code for "python .", Error 13: permission denied = 2 - expected_exit_code = 2 - elif sys.platform.startswith('freebsd'): - # On FreeBSD, it more likely raise SyntaxError for binary - # directory data. - expected_exit_code = 1 - else: - # Linux has no problem with "python .", Exit code = 0 - expected_exit_code = 0 - self.assertEqual(self.exit_code('.'), expected_exit_code) - - self.assertTrue(self.exit_code('< .') != 0) + self.assertNotEqual(self.exit_code('.'), 0) + self.assertNotEqual(self.exit_code('< .'), 0) def verify_valid_flag(self, cmd_line): data = self.start_python(cmd_line) diff --git a/Modules/main.c b/Modules/main.c index f6fa48b..8e7c50b 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -364,7 +364,8 @@ Py_Main(int argc, char **argv) struct stat sb; if (fstat(fileno(fp), &sb) == 0 && S_ISDIR(sb.st_mode)) { - fprintf(stderr, "%s: warning '%s' is a directory\n", argv[0], filename); + fprintf(stderr, "%s: '%s' is a directory, cannot continue\n", argv[0], filename); + return 1; } } } diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 6eadd06..dfa6ac8 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1037,7 +1037,10 @@ _PySys_Init(void) struct stat sb; if (fstat(fileno(stdin), &sb) == 0 && S_ISDIR(sb.st_mode)) { - Py_FatalError("<stdin> is a directory"); + /* There's nothing more we can do. */ + /* Py_FatalError() will core dump, so just exit. */ + PySys_WriteStderr("Python error: <stdin> is a directory, cannot continue\n"); + exit(EXIT_FAILURE); } } |