summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2006-03-09 05:58:11 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2006-03-09 05:58:11 (GMT)
commit72c2c062d71c499863ff6e260525faaea4a53dbb (patch)
treea93e5551c95aff7b117588fa91465a9b15558d45
parent8ff212034e3386916f1a35ff3b0c955aa1ea2b4a (diff)
downloadcpython-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.py15
-rw-r--r--Modules/main.c3
-rw-r--r--Python/sysmodule.c5
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);
}
}