Commit 80be16cf authored by Robert Bradshaw's avatar Robert Bradshaw

Create new c file to play better with hard links (Trac #220)

parent c1fa679b
...@@ -10,22 +10,22 @@ def replace_suffix(path, newsuf): ...@@ -10,22 +10,22 @@ def replace_suffix(path, newsuf):
return base + newsuf return base + newsuf
def open_new_file(path): def open_new_file(path):
# Open and truncate existing file to if os.path.exists(path):
# preserve metadata on the Mac. # Make sure to create a new file here so we can
return open(path, "w+") # safely hard link the output files.
os.unlink(path)
return open(path, "w")
def castrate_file(path, st): def castrate_file(path, st):
# Remove junk contents from an output file after a # Remove junk contents from an output file after a
# failed compilation, but preserve metadata on Mac. # failed compilation.
# Also sets access and modification times back to # Also sets access and modification times back to
# those specified by st (a stat struct). # those specified by st (a stat struct).
try: try:
f = open(path, "r+") f = open_new_file(path)
except EnvironmentError: except EnvironmentError:
pass pass
else: else:
f.seek(0, 0)
f.truncate()
f.write( f.write(
"#error Do not use this file, it is the result of a failed Cython compilation.\n") "#error Do not use this file, it is the result of a failed Cython compilation.\n")
f.close() f.close()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment