Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.1.1, 2.1.2, and tip

stable paths: further fixes related to #853

Where's that brown paper bag?

Changeset 4cd691d19f12

Parent c366991c4330

by Steve Borho

Changes to one file · Browse files at 4cd691d19f12 Showing diff from parent c366991c4330 Diff from another changeset...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
 # paths.py - TortoiseHg path utilities  #  # Copyright 2009 Steve Borho <steve@borho.org>  #  # This software may be used and distributed according to the terms of the  # GNU General Public License version 2, incorporated herein by reference.    try:   from config import icon_path, bin_path, license_path, locale_path  except ImportError:   icon_path, bin_path, license_path, locale_path = None, None, None, None    import os, sys    def find_root(path=None):   p = path or os.getcwd()   while not os.path.isdir(os.path.join(p, ".hg")):   oldp = p   p = os.path.dirname(p)   if p == oldp:   return None   if not os.access(p, os.R_OK):   return None   return p    def get_tortoise_icon(icon):   "Find a tortoisehg icon"   icopath = os.path.join(get_icon_path(), icon)   if os.path.isfile(icopath):   return icopath   else:   print 'icon not found', icon   return None    def get_icon_path():   global icon_path   return icon_path or os.path.join(get_prog_root(), 'icons')    def get_license_path():   global license_path   return license_path or os.path.join(get_prog_root(), 'COPYING.txt')    def get_locale_path():   global locale_path   return locale_path or os.path.join(get_prog_root(), 'locale')    if os.name == 'nt':   import _winreg   import win32net   import win32api   import win32file     def find_in_path(pgmname):   "return first executable found in search path"   global bin_path   ospath = os.environ['PATH'].split(os.pathsep)   ospath.insert(0, bin_path or get_prog_root())   pathext = os.environ.get('PATHEXT', '.COM;.EXE;.BAT;.CMD')   pathext = pathext.lower().split(os.pathsep)   for path in ospath:   ppath = os.path.join(path, pgmname)   for ext in pathext:   if os.path.exists(ppath + ext):   return ppath + ext   return None     def get_prog_root():   if getattr(sys, 'frozen', False):   try:   return _winreg.QueryValue(_winreg.HKEY_LOCAL_MACHINE,   r"Software\TortoiseHg")   except:   pass   return os.path.dirname(os.path.dirname(os.path.dirname(__file__)))     def is_on_fixed_drive(path):   if hasattr(os.path, 'splitunc'): - unc, rest = os.path.splitunc(drive) + unc, rest = os.path.splitunc(path)   if unc:   # All UNC paths (\\host\mount) are considered not-fixed   return False   drive, remain = os.path.splitdrive(path)   if drive:   return win32file.GetDriveType(drive) == win32file.DRIVE_FIXED   else:   return False     USE_OK = 0 # network drive status     def netdrive_status(drive):   """   return True if a network drive is accessible (connected, ...),   or False if <drive> is not a network drive   """   if hasattr(os.path, 'splitunc'):   unc, rest = os.path.splitunc(drive)   if unc: # All UNC paths (\\host\mount) are considered nonlocal   return True   letter = os.path.splitdrive(drive)[0]   _drives, total, _ = win32net.NetUseEnum(None, 1, 0)   for drv in _drives:   if drv['local'] == letter:   info = win32net.NetUseGetInfo(None, letter, 1)   return info['status'] == USE_OK   return False    else: # Not Windows     def find_in_path(pgmname):   """ return first executable found in search path """   global bin_path   ospath = os.environ['PATH'].split(os.pathsep)   ospath.insert(0, bin_path or get_prog_root())   for path in ospath:   ppath = os.path.join(path, pgmname)   if os.access(ppath, os.X_OK):   return ppath   return None     def get_prog_root():   path = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))   return path     def netdrive_status(drive):   """   return True if a network drive is accessible (connected, ...),   or False if <drive> is not a network drive   """   return False     def is_on_fixed_drive(path):   return True