summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Tool/msvc.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-08-13 15:33:43 (GMT)
committerSteven Knight <knight@baldmt.com>2005-08-13 15:33:43 (GMT)
commitb48f4cb7b1bc00ca606bd71191fcddcc99be53f6 (patch)
tree681c616530aecc39d192ff2270578a7c58430621 /src/engine/SCons/Tool/msvc.py
parent52fcda2435759339de636e5d5abad71b0f5372ad (diff)
downloadSCons-b48f4cb7b1bc00ca606bd71191fcddcc99be53f6.zip
SCons-b48f4cb7b1bc00ca606bd71191fcddcc99be53f6.tar.gz
SCons-b48f4cb7b1bc00ca606bd71191fcddcc99be53f6.tar.bz2
Handle Visual Studio project and solution files in Unicode. (Chen Lee)
Diffstat (limited to 'src/engine/SCons/Tool/msvc.py')
-rw-r--r--src/engine/SCons/Tool/msvc.py23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/engine/SCons/Tool/msvc.py b/src/engine/SCons/Tool/msvc.py
index b47f331..1077931 100644
--- a/src/engine/SCons/Tool/msvc.py
+++ b/src/engine/SCons/Tool/msvc.py
@@ -71,10 +71,24 @@ def _parse_msvc7_overrides(version):
# now we parse the directories from this file, if it exists.
# We only look for entries after: [VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directories],
# since this file could contain a number of things...
- f = open(comps,'r')
- line = f.readline()
+ lines = None
+ try:
+ import codecs
+ except ImportError:
+ pass
+ else:
+ try:
+ f = codecs.open(comps, 'r', 'utf16')
+ encoder = codecs.getencoder('ascii')
+ except LookupError:
+ lines = codecs.open(comps, 'r', 'utf8').readlines()
+ else:
+ lines = map(lambda l, e=encoder: e(l)[0], f.readlines())
+ if lines is None:
+ lines = open(comps, 'r').readlines()
+
found = 0
- while line:
+ for line in lines:
line.strip()
if line.find(r'[VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directories]') >= 0:
found = 1
@@ -86,7 +100,6 @@ def _parse_msvc7_overrides(version):
(key, val) = kv
key = key.replace(' Dirs','')
dirs[key.upper()] = val
- line = f.readline()
f.close()
else:
# since the file didn't exist, we have only the defaults in
@@ -143,7 +156,7 @@ def _get_msvc7_path(path, version, platform):
rv = []
for entry in p.split(os.pathsep):
- entry = s.sub(repl,entry)
+ entry = s.sub(repl,entry).rstrip('\n\r')
rv.append(entry)
return string.join(rv,os.pathsep)