You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
#
|
|
# Pyrex -- Things that don't belong
|
|
# anywhere else in particular
|
|
#
|
|
|
|
import os, sys
|
|
try:
|
|
from __builtin__ import set
|
|
except ImportError:
|
|
from sets import Set as set
|
|
|
|
def has_suffix(path, suffixes):
|
|
for suffix in suffixes:
|
|
if path.endswith(suffix):
|
|
return True
|
|
return False
|
|
|
|
def replace_suffix(path, newsuf):
|
|
base, _ = os.path.splitext(path)
|
|
return base + newsuf
|
|
|
|
def map_suffix(path, mapping, default):
|
|
base, suffix = os.path.splitext(path)
|
|
return base + mapping.get(suffix, default)
|
|
|
|
def open_new_file(path):
|
|
# Open and truncate existing file to
|
|
# preserve metadata on the Mac.
|
|
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.
|
|
# Also sets access and modification times earlier
|
|
# than those specified by st (a stat struct).
|
|
try:
|
|
f = open(path, "r+")
|
|
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 Pyrex compilation.\n")
|
|
f.close()
|
|
if st:
|
|
os.utime(path, (st.st_atime - 1, st.st_mtime - 1))
|
|
|
|
def modification_time(path):
|
|
st = os.stat(path)
|
|
return st.st_mtime
|
|
|
|
def file_newer_than(path, time):
|
|
ftime = modification_time(path)
|
|
return ftime > time
|