chiark / gitweb /
Truncate files when writing them (!); fix message not to have spurious \; reset signa...
authorIan Jackson <ian@anarres>
Thu, 17 May 2007 13:33:39 +0000 (14:33 +0100)
committerIan Jackson <ian@anarres>
Thu, 17 May 2007 13:33:39 +0000 (14:33 +0100)
runner/adt-run
virt-subproc/VirtSubproc.py

index 9a4c686bc74befc560feedf8b8700c99aa135aa7..25529884af9a0676379b21d71749214b7ca95c3a 100755 (executable)
@@ -613,8 +613,9 @@ def parse_args():
                elif kindpath.endswith('/'):
                        kind = 'tree'
                        constructor = InputDir
-               else: parser.error("do not know how to handle filename \`%s';"
-                       " specify --source --binary or --build-tree")
+               else: parser.error("do not know how to handle filename `%s';"
+                       " specify --source --binary or --build-tree" %
+                       kindpath)
 
                what = '%s%s' % (kind,ix); ix += 1
 
index 6c17f52d538550a22e911943d4b9bcf3230e3d34..9f16c4b0ddb23db0c4b2dd8f1e69e664011891b8 100644 (file)
@@ -136,7 +136,7 @@ def down_python_script(gobody, functions=''):
                        "import os\n"
                        "def setfd(fd,fnamee,write,mode=0666):\n"
                        "       fname = urllib.unquote(fnamee)\n"
-                       "       if write: rw = os.O_WRONLY|os.O_CREAT\n"
+                       "       if write: rw = os.O_WRONLY|os.O_CREAT|os.O_TRUNC\n"
                        "       else: rw = os.O_RDONLY\n"
                        "       nfd = os.open(fname, rw, mode)\n"
                        "       if fd >= 0: os.dup2(nfd,fd)\n"
@@ -325,9 +325,16 @@ def command():
                r = fc.e
        print string.join(r)
 
+signal_list = [        signal.SIGHUP, signal.SIGTERM,
+               signal.SIGINT, signal.SIGPIPE ]
+
+def sethandlers(f):
+       for signum in signal_list: signal.signal(signum, f)
+
 def cleanup():
        global downtmp, cleaning
        debug("cleanup...");
+       sethandlers(signal.SIG_DFL)
        cleaning = True
        if downtmp: caller.hook_cleanup()
        cleaning = False
@@ -354,12 +361,7 @@ def error_cleanup():
 def prepare():
        global downtmp, cleaning
        downtmp = None
-       signal_list = [ signal.SIGHUP, signal.SIGTERM,
-                       signal.SIGINT, signal.SIGPIPE ]
-       def sethandlers(f):
-               for signum in signal_list: signal.signal(signum, f)
        def handler(sig, *any):
-               sethandlers(signal.SIG_DFL)
                cleanup()
                os.kill(os.getpid(), sig)
        sethandlers(handler)