Merged revisions 74476 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r74476 | gregory.p.smith | 2009-08-16 11:58:46 -0700 (Sun, 16 Aug 2009) | 9 lines

  Merged revisions 74475 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r74475 | gregory.p.smith | 2009-08-16 11:52:58 -0700 (Sun, 16 Aug 2009) | 2 lines

    Issue 6665: Fix fnmatch to properly match filenames with newlines in them.
  ........
................
diff --git a/Lib/fnmatch.py b/Lib/fnmatch.py
index 0397549..30c0a92 100644
--- a/Lib/fnmatch.py
+++ b/Lib/fnmatch.py
@@ -113,4 +113,4 @@
                 res = '%s[%s]' % (res, stuff)
         else:
             res = res + re.escape(c)
-    return res + "$"
+    return res + '\Z(?ms)'
diff --git a/Lib/test/test_fnmatch.py b/Lib/test/test_fnmatch.py
index 2f701ca..506c679 100644
--- a/Lib/test/test_fnmatch.py
+++ b/Lib/test/test_fnmatch.py
@@ -32,11 +32,18 @@
         check('a', 'b', 0)
 
         # these test that '\' is handled correctly in character sets;
-        # see SF bug #???
+        # see SF bug #409651
         check('\\', r'[\]')
         check('a', r'[!\]')
         check('\\', r'[!\]', 0)
 
+        # test that filenames with newlines in them are handled correctly.
+        # http://bugs.python.org/issue6665
+        check('foo\nbar', 'foo*')
+        check('foo\nbar\n', 'foo*')
+        check('\nfoo', 'foo*', False)
+        check('\n', '*')
+
     def test_mix_bytes_str(self):
         self.assertRaises(TypeError, fnmatch, 'test', b'*')
         self.assertRaises(TypeError, fnmatch, b'test', '*')
@@ -46,6 +53,8 @@
     def test_bytes(self):
         self.check_match(b'test', b'te*')
         self.check_match(b'test\xff', b'te*\xff')
+        self.check_match(b'foo\nbar', b'foo*')
+
 
 def test_main():
     support.run_unittest(FnmatchTestCase)
diff --git a/Misc/NEWS b/Misc/NEWS
index 03600de..dca9a00 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -37,6 +37,8 @@
 Library
 -------
 
+- Issue #6665: Fix fnmatch to properly match filenames with newlines in them.
+
 - Issue #7246 & Issue #7208: getpass now properly flushes input before
   reading from stdin so that existing input does not confuse it and
   lead to incorrect entry or an IOError.  It also properly flushes it