summaryrefslogtreecommitdiffstats
path: root/Lib/glob.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2008-10-02 18:55:37 (GMT)
committerGuido van Rossum <guido@python.org>2008-10-02 18:55:37 (GMT)
commitf0af3e30db9475ab68bcb1f1ce0b5581e214df76 (patch)
tree71efbc67686d96e8c8a81dd97c75c419adf36657 /Lib/glob.py
parentfefeca53eebe8665c08ac0c041639ada3c9f9446 (diff)
downloadcpython-f0af3e30db9475ab68bcb1f1ce0b5581e214df76.zip
cpython-f0af3e30db9475ab68bcb1f1ce0b5581e214df76.tar.gz
cpython-f0af3e30db9475ab68bcb1f1ce0b5581e214df76.tar.bz2
Issue #3187: Better support for "undecodable" filenames. Code by Victor
Stinner, with small tweaks by GvR.
Diffstat (limited to 'Lib/glob.py')
-rw-r--r--Lib/glob.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/Lib/glob.py b/Lib/glob.py
index cd6c302..9529f7e 100644
--- a/Lib/glob.py
+++ b/Lib/glob.py
@@ -27,7 +27,7 @@ def iglob(pathname):
return
dirname, basename = os.path.split(pathname)
if not dirname:
- for name in glob1(os.curdir, basename):
+ for name in glob1(None, basename):
yield name
return
if has_magic(dirname):
@@ -48,10 +48,10 @@ def iglob(pathname):
def glob1(dirname, pattern):
if not dirname:
- dirname = os.curdir
- if isinstance(pattern, str) and not isinstance(dirname, str):
- dirname = str(dirname, sys.getfilesystemencoding() or
- sys.getdefaultencoding())
+ if isinstance(pattern, bytes):
+ dirname = bytes(os.curdir, 'ASCII')
+ else:
+ dirname = os.curdir
try:
names = os.listdir(dirname)
except os.error:
@@ -73,6 +73,11 @@ def glob0(dirname, basename):
magic_check = re.compile('[*?[]')
+magic_check_bytes = re.compile(b'[*?[]')
def has_magic(s):
- return magic_check.search(s) is not None
+ if isinstance(s, bytes):
+ match = magic_check_bytes.search(s)
+ else:
+ match = magic_check.search(s)
+ return match is not None