From: Robert Bradshaw Date: Thu, 26 Feb 2009 22:05:53 +0000 (-0800) Subject: Create new c file to play better with hard links (Trac #220) X-Git-Tag: 0.11.rc~32 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=80be16cfce7351790942c215195d90b2dff06b7d;p=cython.git Create new c file to play better with hard links (Trac #220) --- diff --git a/Cython/Utils.py b/Cython/Utils.py index 5da150b7..a54070b2 100644 --- a/Cython/Utils.py +++ b/Cython/Utils.py @@ -10,22 +10,22 @@ def replace_suffix(path, newsuf): return base + newsuf def open_new_file(path): - # Open and truncate existing file to - # preserve metadata on the Mac. - return open(path, "w+") + if os.path.exists(path): + # Make sure to create a new file here so we can + # safely hard link the output files. + os.unlink(path) + return open(path, "w") def castrate_file(path, st): # 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 # those specified by st (a stat struct). try: - f = open(path, "r+") + f = open_new_file(path) except EnvironmentError: pass else: - f.seek(0, 0) - f.truncate() f.write( "#error Do not use this file, it is the result of a failed Cython compilation.\n") f.close()