jnode = Lst_Find(stoppedJobs, JobCmpPid, &pid);
jnode = Lst_Find(&stoppedJobs, JobCmpPid, &pid);
Job_CatchChildren(block)    Boolean	  block;    	/* TRUE if should block on the wait. */{    int    	  pid;	    	/* pid of dead child */    register Job  *job;	    	/* job descriptor for dead child */    LstNode       jnode;    	/* list element for finding job */    int	  	  status;   	/* Exit/termination status */    /*     * Don't even bother if we know there's no one around.     */    if (nLocal == 0) {	return;    }    while ((pid = waitpid((pid_t) -1, &status,			  (block?0:WNOHANG)|WUNTRACED)) > 0)    {	if (DEBUG(JOB)) {	    (void) fprintf(stdout, "Process %d exited or stopped.\n", pid);	    (void) fflush(stdout);	}	jnode = Lst_Find(jobs, JobCmpPid, &pid);	if (jnode == NULL) {	    if (WIFSIGNALED(status) && (WTERMSIG(status) == SIGCONT)) {		jnode = Lst_Find(stoppedJobs, JobCmpPid, &pid);		if (jnode == NULL) {		    Error("Resumed child (%d) not in table", pid);		    continue;		}		job = (Job *)Lst_Datum(jnode);		(void) Lst_Remove(stoppedJobs, jnode);	    } else {		Error("Child (%d) not in table?", pid);		continue;	    }	} else {	    job = (Job *) Lst_Datum(jnode);	    Lst_Remove(jobs, jnode);	    nJobs -= 1;	    if (jobFull && DEBUG(JOB)) {		(void) fprintf(stdout, "Job queue is no longer full.\n");		(void) fflush(stdout);	    }	    jobFull = FALSE;#ifdef REMOTE	    if (!(job->flags & JOB_REMOTE)) {		if (DEBUG(JOB)) {		    (void) fprintf(stdout,				   "Job queue has one fewer local process.\n");		    (void) fflush(stdout);		}		nLocal -= 1;	    }#else	    nLocal -= 1;#endif	}	JobFinish(job, &status);    }}