diff --git a/hgext/win32mbcs.py b/hgext/win32mbcs.py --- a/hgext/win32mbcs.py +++ b/hgext/win32mbcs.py @@ -182,7 +182,8 @@ def extsetup(ui): if pycompat.osname == 'nt': for f in winfuncs.split(): wrapname(f, wrapper) - wrapname("mercurial.osutil.listdir", wrapperforlistdir) + wrapname("mercurial.util.listdir", wrapperforlistdir) + wrapname("mercurial.windows.listdir", wrapperforlistdir) # wrap functions to be called with local byte string arguments for f in rfuncs.split(): wrapname(f, reversewrapper) diff --git a/mercurial/chgserver.py b/mercurial/chgserver.py --- a/mercurial/chgserver.py +++ b/mercurial/chgserver.py @@ -54,7 +54,6 @@ from . import ( encoding, error, extensions, - osutil, pycompat, util, ) @@ -313,7 +312,7 @@ class chgcmdserver(commandserver.server) # tell client to sendmsg() with 1-byte payload, which makes it # distinctive from "attachio\n" command consumed by client.read() self.clientsock.sendall(struct.pack('>cI', 'I', 1)) - clientfds = osutil.recvfds(self.clientsock.fileno()) + clientfds = util.recvfds(self.clientsock.fileno()) _log('received fds: %r\n' % clientfds) ui = self.ui @@ -458,12 +457,12 @@ class chgcmdserver(commandserver.server) 'setenv': setenv, 'setumask': setumask}) - if util.safehasattr(osutil, 'setprocname'): + if util.safehasattr(util, 'setprocname'): def setprocname(self): """Change process title""" name = self._readstr() _log('setprocname: %r\n' % name) - osutil.setprocname(name) + util.setprocname(name) capabilities['setprocname'] = setprocname def _tempaddress(address): diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -18,7 +18,6 @@ from . import ( encoding, error, match as matchmod, - osutil, parsers, pathutil, pycompat, @@ -988,7 +987,7 @@ class dirstate(object): matchalways = match.always() matchtdir = match.traversedir dmap = self._map - listdir = osutil.listdir + listdir = util.listdir lstat = os.lstat dirkind = stat.S_IFDIR regkind = stat.S_IFREG diff --git a/mercurial/rcutil.py b/mercurial/rcutil.py --- a/mercurial/rcutil.py +++ b/mercurial/rcutil.py @@ -11,7 +11,6 @@ import os from . import ( encoding, - osutil, pycompat, util, ) @@ -30,7 +29,7 @@ def _expandrcpath(path): p = util.expandpath(path) if os.path.isdir(p): join = os.path.join - return [join(p, f) for f, k in osutil.listdir(p) if f.endswith('.rc')] + return [join(p, f) for f, k in util.listdir(p) if f.endswith('.rc')] return [p] def envrcitems(env=None): diff --git a/mercurial/scmposix.py b/mercurial/scmposix.py --- a/mercurial/scmposix.py +++ b/mercurial/scmposix.py @@ -8,8 +8,8 @@ import sys from . import ( encoding, - osutil, pycompat, + util, ) # BSD 'more' escapes ANSI color sequences by default. This can be disabled by @@ -23,7 +23,7 @@ def _rcfiles(path): rcdir = os.path.join(path, 'hgrc.d') try: rcs.extend([os.path.join(rcdir, f) - for f, kind in osutil.listdir(rcdir) + for f, kind in util.listdir(rcdir) if f.endswith(".rc")]) except OSError: pass diff --git a/mercurial/scmwindows.py b/mercurial/scmwindows.py --- a/mercurial/scmwindows.py +++ b/mercurial/scmwindows.py @@ -4,7 +4,6 @@ import os from . import ( encoding, - osutil, pycompat, util, win32, @@ -29,7 +28,7 @@ def systemrcpath(): # Use hgrc.d found in directory with hg.exe progrcd = os.path.join(os.path.dirname(filename), 'hgrc.d') if os.path.isdir(progrcd): - for f, kind in osutil.listdir(progrcd): + for f, kind in util.listdir(progrcd): if f.endswith('.rc'): rcpath.append(os.path.join(progrcd, f)) # else look for a system rcpath in the registry @@ -42,7 +41,7 @@ def systemrcpath(): if p.lower().endswith('mercurial.ini'): rcpath.append(p) elif os.path.isdir(p): - for f, kind in osutil.listdir(p): + for f, kind in util.listdir(p): if f.endswith('.rc'): rcpath.append(os.path.join(p, f)) return rcpath diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -106,6 +106,7 @@ groupname = platform.groupname hidewindow = platform.hidewindow isexec = platform.isexec isowner = platform.isowner +listdir = osutil.listdir localpath = platform.localpath lookupreg = platform.lookupreg makedir = platform.makedir @@ -143,6 +144,15 @@ umask = platform.umask unlink = platform.unlink username = platform.username +try: + recvfds = osutil.recvfds +except AttributeError: + pass +try: + setprocname = osutil.setprocname +except AttributeError: + pass + # Python compatibility _notset = object() @@ -1165,7 +1175,7 @@ def copyfiles(src, dst, hardlink=None, p os.stat(os.path.dirname(dst)).st_dev) topic = gettopic() os.mkdir(dst) - for name, kind in osutil.listdir(src): + for name, kind in listdir(src): srcname = os.path.join(src, name) dstname = os.path.join(dst, name) def nprog(t, pos): diff --git a/mercurial/vfs.py b/mercurial/vfs.py --- a/mercurial/vfs.py +++ b/mercurial/vfs.py @@ -17,7 +17,6 @@ import threading from .i18n import _ from . import ( error, - osutil, pathutil, pycompat, util, @@ -163,7 +162,7 @@ class abstractvfs(object): return fd, fname def readdir(self, path=None, stat=None, skip=None): - return osutil.listdir(self.join(path), stat, skip) + return util.listdir(self.join(path), stat, skip) def readlock(self, path): return util.readlock(self.join(path)) diff --git a/mercurial/windows.py b/mercurial/windows.py --- a/mercurial/windows.py +++ b/mercurial/windows.py @@ -136,6 +136,9 @@ def posixfile(name, mode='r', buffering= # convert to a friendlier exception raise IOError(err.errno, '%s: %s' % (name, err.strerror)) +# may be wrapped by win32mbcs extension +listdir = osutil.listdir + class winstdout(object): '''stdout on windows misbehaves if sent through a pipe''' @@ -349,7 +352,7 @@ def statfiles(files): if cache is None: try: dmap = dict([(normcase(n), s) - for n, k, s in osutil.listdir(dir, True) + for n, k, s in listdir(dir, True) if getkind(s.st_mode) in _wantedkinds]) except OSError as err: # Python >= 2.5 returns ENOENT and adds winerror field @@ -376,7 +379,7 @@ def groupname(gid=None): def removedirs(name): """special version of os.removedirs that does not remove symlinked directories or junction points if they actually contain files""" - if osutil.listdir(name): + if listdir(name): return os.rmdir(name) head, tail = os.path.split(name) @@ -384,7 +387,7 @@ def removedirs(name): head, tail = os.path.split(head) while head and tail: try: - if osutil.listdir(head): + if listdir(head): return os.rmdir(head) except (ValueError, OSError):