# HG changeset patch # User Patrick Mezard # Date 1178462453 -7200 # Node ID f97b89314fb35d40a4f7d957d18b2419b3e4a9e3 # Parent 47371e1c1db4d8e2622346c3faba72ec0383cf52 Move win32 find_in_files from util_win32 to util. diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -211,18 +211,6 @@ def filter(s, cmd): return fn(s, cmd[len(name):].lstrip()) return pipefilter(s, cmd) -def find_in_path(name, path, default=None): - '''find name in search path. path can be string (will be split - with os.pathsep), or iterable thing that returns strings. if name - found, return path to name. else return default.''' - if isinstance(path, str): - path = path.split(os.pathsep) - for p in path: - p_name = os.path.join(p, name) - if os.path.exists(p_name): - return p_name - return default - def binary(s): """return true if a string is binary data using diff's heuristic""" if s and '\0' in s[:4096]: @@ -920,6 +908,30 @@ if os.name == 'nt': # username and groupname functions above, too. def isowner(fp, st=None): return True + + def find_in_path(name, path, default=None): + '''find name in search path. path can be string (will be split + with os.pathsep), or iterable thing that returns strings. if name + found, return path to name. else return default. name is looked up + using cmd.exe rules, using PATHEXT.''' + if isinstance(path, str): + path = path.split(os.pathsep) + + pathext = os.environ.get('PATHEXT', '.COM;.EXE;.BAT;.CMD') + pathext = pathext.lower().split(os.pathsep) + isexec = os.path.splitext(name)[1].lower() in pathext + + for p in path: + p_name = os.path.join(p, name) + + if isexec and os.path.exists(p_name): + return p_name + + for ext in pathext: + p_name_ext = p_name + ext + if os.path.exists(p_name_ext): + return p_name_ext + return default try: # override functions with win32 versions if possible @@ -1058,6 +1070,18 @@ else: if st is None: st = fstat(fp) return st.st_uid == os.getuid() + + def find_in_path(name, path, default=None): + '''find name in search path. path can be string (will be split + with os.pathsep), or iterable thing that returns strings. if name + found, return path to name. else return default.''' + if isinstance(path, str): + path = path.split(os.pathsep) + for p in path: + p_name = os.path.join(p, name) + if os.path.exists(p_name): + return p_name + return default def _buildencodefun(): e = '_' diff --git a/mercurial/util_win32.py b/mercurial/util_win32.py --- a/mercurial/util_win32.py +++ b/mercurial/util_win32.py @@ -297,30 +297,5 @@ class posixfile_nt(object): win32file.SetEndOfFile(self.handle) except pywintypes.error, err: raise WinIOError(err) - -def find_in_path(name, path, default=None): - '''find name in search path. path can be string (will be split - with os.pathsep), or iterable thing that returns strings. if name - found, return path to name. else return default. name is looked up - using cmd.exe rules, using PATHEXT.''' - if isinstance(path, str): - path = path.split(os.pathsep) - - pathext = os.environ.get('PATHEXT', '.COM;.EXE;.BAT;.CMD') - pathext = pathext.lower().split(os.pathsep) - isexec = os.path.splitext(name)[1].lower() in pathext - - for p in path: - p_name = os.path.join(p, name) - - if isexec and os.path.exists(p_name): - return p_name - - for ext in pathext: - p_name_ext = p_name + ext - if os.path.exists(p_name_ext): - return p_name_ext - - return default getuser_fallback = win32api.GetUserName