Subject: CVS commit: src/usr.bin/make
To: None <source-changes@NetBSD.org>
From: David Laight <dsl@netbsd.org>
List: source-changes
Date: 09/23/2006 20:51:28
Module Name:	src
Committed By:	dsl
Date:		Sat Sep 23 20:51:28 UTC 2006

Modified Files:
	src/usr.bin/make: job.c job.h make.c

Log Message:
Complete revamp of the way make handles job control signals.
- Send each type of signal to its own handler.
- Only call JobFinish when a process exits, in particular don't 'fake up'
  'exitstatus' for jobs being continued, nor call it for suspends.
- When a job is stopped, use an entire variable to remember the fact, so
  we know we need to send a SIGCONT.  Don't change any other state.
- In order to report '*** [job3] Suspended' before we suspend ourselves we
  have to call waitpid() from the signal handler - where we don't want to
  process job termination events. Save the exit status and process later.
The code now handles:
- jobs that suspend themselves
- jobs exiting while suspended
- jobs that don't actually suspend at all
Hoewever it still does printfs() from the signal handler, and I haven't yet
stopped it thrashing the signal mask.


To generate a diff of this commit:
cvs rdiff -r1.115 -r1.116 src/usr.bin/make/job.c
cvs rdiff -r1.29 -r1.30 src/usr.bin/make/job.h
cvs rdiff -r1.62 -r1.63 src/usr.bin/make/make.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.