From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12829 invoked from network); 11 May 1999 12:23:25 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 11 May 1999 12:23:25 -0000 Received: (qmail 23842 invoked by alias); 11 May 1999 12:23:00 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6257 Received: (qmail 23829 invoked from network); 11 May 1999 12:22:59 -0000 Message-Id: <9905111158.AA34596@ibmth.df.unipi.it> To: zsh-workers@sunsite.auc.dk (Zsh hackers list) Subject: PATCH: tty pgrp problem again Date: Tue, 11 May 1999 13:58:21 +0200 From: Peter Stephenson The last patch I sent didn't handle this case (this is the most difficult one I've come across, not coincidentally compinstall uses it): % cat tst cat /dev/null | while read; do; done read % . ./tst % where the second read again can't read from the tty. The only thing for it seems to be to trust the STAT_CURSH flag on the job, which says the last stage of the pipeline was run in the current shell, and hence must be in the foreground whatever the job number, which can get jiggled about if there are different structures like the while-loop above running in the current shell. This should work, since that's what it's there for. But maybe there are pathological cases [the whole @!$!!! shell, if you ask me sometimes]. This goes on top of the other one. (I can't actually swear to understanding why thisjob isn't the job that's terminating, but it's to do with the pipeline code.) --- Src/jobs.c.job Tue May 11 13:28:59 1999 +++ Src/jobs.c Tue May 11 13:41:21 1999 @@ -183,13 +183,11 @@ * and let it handle its own traps, but always allow the test * for the pgrp. */ - if (job == thisjob) { - if (jn->stat & STAT_CURSH) - inforeground = 1; - else { - lastval = val; - inforeground = 2; - } + if (jn->stat & STAT_CURSH) + inforeground = 1; + else if (job == thisjob) { + lastval = val; + inforeground = 2; } } -- Peter Stephenson Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy