Donovan Baarda <abo@users.sourceforge.net>:
authorFred Drake <fdrake@acm.org>
Wed, 21 Mar 2001 18:05:48 +0000 (18:05 +0000)
committerFred Drake <fdrake@acm.org>
Wed, 21 Mar 2001 18:05:48 +0000 (18:05 +0000)
Patch to make "\" in a character group work properly.

This closes SF bug #409651.

Lib/fnmatch.py

index c40f50035dcf9f8583c2a6e56c94749f7f2ceaf3..182a9ef923f0338e4c0ac39a1df8095af600966c 100644 (file)
@@ -75,17 +75,13 @@ def translate(pat):
             if j >= n:
                 res = res + '\\['
             else:
-                stuff = pat[i:j]
+                stuff = pat[i:j].replace('\\','\\\\')
                 i = j+1
                 if stuff[0] == '!':
-                    stuff = '[^' + stuff[1:] + ']'
-                elif stuff == '^'*len(stuff):
-                    stuff = '\\^'
-                else:
-                    while stuff[0] == '^':
-                        stuff = stuff[1:] + stuff[0]
-                    stuff = '[' + stuff + ']'
-                res = res + stuff
+                    stuff = '^' + stuff[1:]
+                elif stuff[0] == '^':
+                    stuff = '\\' + stuff
+                res = '%s[%s]' % (res, stuff)
         else:
             res = res + re.escape(c)
     return res + "$"