--- a/mercurial/windows.py Mon Feb 14 11:12:31 2011 +0100
+++ b/mercurial/windows.py Mon Feb 14 11:12:35 2011 +0100
@@ -73,6 +73,38 @@
def openhardlinks():
return not _is_win_9x()
+_HKEY_LOCAL_MACHINE = 0x80000002L
+
+def system_rcpath_win32():
+ '''return default os-specific hgrc search path'''
+ rcpath = []
+ filename = executable_path()
+ # Use mercurial.ini found in directory with hg.exe
+ progrc = os.path.join(os.path.dirname(filename), 'mercurial.ini')
+ if os.path.isfile(progrc):
+ rcpath.append(progrc)
+ return rcpath
+ # 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):
+ if f.endswith('.rc'):
+ rcpath.append(os.path.join(progrcd, f))
+ return rcpath
+ # else look for a system rcpath in the registry
+ value = lookup_reg('SOFTWARE\\Mercurial', None, _HKEY_LOCAL_MACHINE)
+ if not isinstance(value, str) or not value:
+ return rcpath
+ value = value.replace('/', os.sep)
+ for p in value.split(os.pathsep):
+ if p.lower().endswith('mercurial.ini'):
+ rcpath.append(p)
+ elif os.path.isdir(p):
+ for f, kind in osutil.listdir(p):
+ if f.endswith('.rc'):
+ rcpath.append(os.path.join(p, f))
+ return rcpath
+
def system_rcpath():
try:
return system_rcpath_win32()