From: Neal Norwitz <nnorwitz@gmail.com> Date: Thu, 9 Mar 2006 05:58:11 +0000 (+0000) Subject: Try to be a bit more consistent on all platforms: X-Git-Tag: v2.5a0~306 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=72c2c062d71c499863ff6e260525faaea4a53dbb;p=python Try to be a bit more consistent on all platforms: python . python < . both print a message, return non-zero and do not core dump. --- diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py index 2d293c90cb..a4a656d451 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 f6fa48bdd6..8e7c50b25f 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 6eadd06d9c..dfa6ac84d9 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); } }