# HG changeset patch # User FUJIWARA Katsunori # Date 2012-10-09 07:17:55 # Node ID aad3bce98f7676529e5650a612bee129b37c191b # Parent 6d218e47cf9b450b5b98ed99a61890bc8afb0927 store: invoke "osutil.listdir()" via vfs This patch invokes "osutil.listdir()" via vfs object. The function added newly to "abstractvfs" is named not as "listdir()" but as "readdir()", because: - "os.listdir()" seems to be more familiar as "listdir()" than "osutil.listdir()" - "osutil.listdir()" returns also type of each files like "readdir()" POSIX API: even though "d_type" field of "dirent" structure is defined mainly only on BSD/Linux This patch invokes "osutil.listdir()" via "rawvfs" object to avoid filename encoding, because the path passed to "osutil.listdir()" shouldn't be encoded. This patch also omits importing "osutil" module, because it is no longer used. diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -219,6 +219,9 @@ class abstractvfs(object): def mkdir(self, path=None): return os.mkdir(self.join(path)) + def readdir(self, path=None, stat=None, skip=None): + return osutil.listdir(self.join(path), stat, skip) + def stat(self, path=None): return os.stat(self.join(path)) diff --git a/mercurial/store.py b/mercurial/store.py --- a/mercurial/store.py +++ b/mercurial/store.py @@ -6,7 +6,7 @@ # GNU General Public License version 2 or any later version. from i18n import _ -import osutil, scmutil, util, parsers +import scmutil, util, parsers import os, stat, errno _sha = util.sha1 @@ -311,9 +311,10 @@ class basicstore(object): l = [] if self.rawvfs.isdir(path): visit = [path] + readdir = self.rawvfs.readdir while visit: p = visit.pop() - for f, kind, st in osutil.listdir(p, stat=True): + for f, kind, st in readdir(p, stat=True): fp = p + '/' + f if kind == stat.S_IFREG and f[-2:] in ('.d', '.i'): n = util.pconvert(fp[striplen:])