summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2002-01-23 22:15:14 (GMT)
committerSteven Knight <knight@baldmt.com>2002-01-23 22:15:14 (GMT)
commit97226af46815c7789635c7e3aaf9d7fac96473be (patch)
tree7c7e4f85e0b8675ed1cb6c0708e09f82d1814ab6
parentcb0829ad927a55c4d79125e6ced5e975544a05a6 (diff)
downloadSCons-97226af46815c7789635c7e3aaf9d7fac96473be.zip
SCons-97226af46815c7789635c7e3aaf9d7fac96473be.tar.gz
SCons-97226af46815c7789635c7e3aaf9d7fac96473be.tar.bz2
Fix binary file signatures on Win32 (Crain).
-rw-r--r--src/engine/SCons/Node/FS.py2
-rw-r--r--src/engine/SCons/Node/FSTests.py7
2 files changed, 8 insertions, 1 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index 96ce148..e21e193 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -487,7 +487,7 @@ class File(Entry):
def get_contents(self):
if not self.exists():
return ''
- return open(str(self), "r").read()
+ return open(str(self), "rb").read()
def get_timestamp(self):
if self.exists():
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index 1ac5be8..dc3c559 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -414,6 +414,13 @@ class FSTestCase(unittest.TestCase):
f1.build()
assert not f1.cached_exists()
+ # For some reason, in Win32, the \x1a character terminates
+ # the reading of files in text mode. This tests that
+ # get_contents() returns the binary contents.
+ test.write("binary_file", "Foo\x1aBar")
+ f1 = SCons.Node.FS.default_fs.File(test.workpath("binary_file"))
+ assert f1.get_contents() == "Foo\x1aBar", f1.get_contents()
+
#XXX test current() for directories
#XXX test sconsign() for directories