diff options
author | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-08 22:46:49 +0300 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-11 10:42:16 +0300 |
commit | 5351b86b0768813c4c18bb61494c43b07bc00372 (patch) | |
tree | 2a212179ad24ebfa9050f0d7eeecd37fdff8eae8 /tools | |
parent | 829add1ee972bc3f68cc065c5e9b69b8a6e3fa5c (diff) |
Don't require response files to end with '.rsp'. Only autodelete response files that end with the suffix '.tmp'. Use the suffix '.tmp' for all internally utilized response files.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/response_file.py | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/tools/response_file.py b/tools/response_file.py index cb368d47..29756833 100644 --- a/tools/response_file.py +++ b/tools/response_file.py @@ -1,10 +1,11 @@ import tempfile, os, sys, shlex from tempfiles import try_delete -# Routes the given cmdline param list in args into a new .rsp file and returns the filename to it. +# Routes the given cmdline param list in args into a new response file and returns the filename to it. +# The response file has a suffix '.tmp' to signal that the process receiving the response file is free to delete it after it has consumed it. # The returned filename has '@' prepended to it already for convenience. def create_response_file(args, directory): - (response_fd, response_filename) = tempfile.mkstemp(prefix='emscripten_', suffix='.rsp', dir=directory, text=True) + (response_fd, response_filename) = tempfile.mkstemp(prefix='emscripten_', suffix='.tmp', dir=directory, text=True) response_fd = os.fdopen(response_fd, "w") #print >> sys.stderr, "Creating response file '%s'" % response_filename args = map(lambda p: p.replace(' ', '').replace('\\', '\\\\').replace('"', '\\"'), args) @@ -12,12 +13,11 @@ def create_response_file(args, directory): response_fd.close() return '@' + response_filename -# Reads and deletes a .rsp file, and returns the list of cmdline params found in the file. +# Reads a response file, and returns the list of cmdline params found in the file. +# If the response file ends with .tmp, it is automatically deleted after reading it. def read_and_delete_response_file(response_filename): - # Ensure safety so that this function can never accidentally delete any non-.rsp files if things go wrong! - if not (response_filename.startswith('@') and response_filename.endswith('.rsp')): - raise Exception("'%s' is not a valid response file name! Response file names must start with '@' and end in '.rsp'!" % response_filename) - response_filename = response_filename[1:] + if response_filename.startswith('@'): + response_filename = response_filename[1:] #print >> sys.stderr, "Using response file '%s'" % response_filename if not os.path.exists(response_filename): @@ -26,6 +26,9 @@ def read_and_delete_response_file(response_filename): response_fd = open(response_filename, 'r') args = response_fd.read() response_fd.close() - try_delete(response_filename) + # For conveniency, the receiver is allowed to immediately clean up response files ending with '.tmp' so that the + # caller doesn't have to do it. + if response_filename.endswith(".tmp"): + try_delete(response_filename) args = shlex.split(args) return args |