From 72c2c062d71c499863ff6e260525faaea4a53dbb Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Thu, 9 Mar 2006 05:58:11 +0000 Subject: Try to be a bit more consistent on all platforms: python . python < . both print a message, return non-zero and do not core dump. --- Lib/test/test_cmd_line.py | 15 ++------------- Modules/main.c | 3 ++- 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(" is a directory"); + /* There's nothing more we can do. */ + /* Py_FatalError() will core dump, so just exit. */ + PySys_WriteStderr("Python error: is a directory, cannot continue\n"); + exit(EXIT_FAILURE); } } -- cgit v0.12