changeset 9098:5e4654f5522d

win32mbcs: look up modules using sys.modules (issue1729) globals()[module] doesn't work for modules inside of packages, such as os.path.
author Brodie Rao <me+hg@dackz.net>
date Wed, 08 Jul 2009 09:48:48 -0400
parents 431462bd8478
children 3d456bf32f18
files hgext/win32mbcs.py
diffstat 1 files changed, 5 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/win32mbcs.py	Thu Jul 09 17:10:07 2009 -0500
+++ b/hgext/win32mbcs.py	Wed Jul 08 09:48:48 2009 -0400
@@ -38,7 +38,7 @@
 setting or HGENCODING.
 '''
 
-import os
+import os, sys
 from mercurial.i18n import _
 from mercurial import util, encoding
 
@@ -79,10 +79,8 @@
                          " %s encoding\n") % (encoding.encoding))
 
 def wrapname(name):
-    idx = name.rfind('.')
-    module = name[:idx]
-    name = name[idx+1:]
-    module = globals()[module]
+    module, name = name.rsplit('.', 1)
+    module = sys.modules[module]
     func = getattr(module, name)
     def f(*args):
         return wrapper(func, args)
@@ -97,7 +95,8 @@
 #       they use result of os.path.split()
 funcs = '''os.path.join os.path.split os.path.splitext
  os.path.splitunc os.path.normpath os.path.normcase os.makedirs
- util.endswithsep util.splitpath util.checkcase util.fspath'''
+ mercurial.util.endswithsep mercurial.util.splitpath mercurial.util.checkcase
+ mercurial.util.fspath'''
 
 # codec and alias names of sjis and big5 to be faked.
 problematic_encodings = '''big5 big5-tw csbig5 big5hkscs big5-hkscs