diff -r 0acc5626a578 Lib/test/test_cmd_line.py --- a/Lib/test/test_cmd_line.py Tue Oct 23 22:50:11 2012 +0100 +++ b/Lib/test/test_cmd_line.py Thu Oct 25 01:40:17 2012 +0300 @@ -358,6 +358,12 @@ self.assertEqual(rc, 0) self.assertIn(b'random is 1', out) + def test_unknown_options(self): + rc, out, err = assert_python_failure('-z', __cleanenv=True) + self.assertIn(b'Unknown option', err) + self.assertEqual(err.splitlines().count(b'Unknown option: -z'), 1) + self.assertEqual(b'', out) + def test_main(): test.support.run_unittest(CmdLineTest) test.support.reap_children() diff -r 0acc5626a578 Python/getopt.c --- a/Python/getopt.c Tue Oct 23 22:50:11 2012 +0100 +++ b/Python/getopt.c Thu Oct 25 01:40:17 2012 +0300 @@ -45,7 +45,7 @@ void _PyOS_ResetGetOpt(void) { - _PyOS_opterr = 1; + _PyOS_opterr = 0; /* prevent printing the error in 2nd loop in main.c */ _PyOS_optind = 1; _PyOS_optarg = NULL; opt_ptr = L""; @@ -90,7 +90,7 @@ opt_ptr = &argv[_PyOS_optind++][1]; } - if ( (option = *opt_ptr++) == L'\0') + if ((option = *opt_ptr++) == L'\0') return -1; if (option == 'J') { @@ -100,8 +100,7 @@ if ((ptr = wcschr(optstring, option)) == NULL) { if (_PyOS_opterr) - fprintf(stderr, "Unknown option: -%c\n", (char)option); - + fprintf(stderr, "Unknown option: -%c\n", (char)option); return '_'; }