(reap_children): Call delete_child_targets for non-signal error if
authorRoland McGrath <roland@redhat.com>
Thu, 29 Sep 1994 04:14:20 +0000 (04:14 +0000)
committerRoland McGrath <roland@redhat.com>
Thu, 29 Sep 1994 04:14:20 +0000 (04:14 +0000)
.DELETE_ON_ERROR is a target.

job.c

diff --git a/job.c b/job.c
index c9d2896..4337935 100644 (file)
--- a/job.c
+++ b/job.c
@@ -379,9 +379,15 @@ reap_children (block, err)
            {
              /* The commands failed.  Write an error message,
                 delete non-precious targets, and abort.  */
+             static int delete_on_error = -1;
              child_error (c->file->name, exit_code, exit_sig, coredump, 0);
              c->file->update_status = 1;
-             if (exit_sig != 0)
+             if (delete_on_error == -1)
+               {
+                 struct file *f = lookup_file (".DELETE_ON_ERROR");
+                 delete_on_error = f != 0 && f->is_target;
+               }
+             if (exit_sig != 0 || delete_on_error)
                delete_child_targets (c);
            }
          else