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

stable paths: add is_on_fixed_drive method

Changeset e63813991225

Parent a033dc7d63cd

by Steve Borho

Changes to one file · Browse files at e63813991225 Showing diff from parent a033dc7d63cd 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
 
 
 
 
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
133
 # 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 - USE_OK = 0 # network drive status + 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) + 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 +