zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: tty pgrp problem again
@ 1999-05-11 11:58 Peter Stephenson
  1999-05-11 13:15 ` PATCH: tty pgrp problem again: third attempt Peter Stephenson
  0 siblings, 1 reply; 3+ messages in thread
From: Peter Stephenson @ 1999-05-11 11:58 UTC (permalink / raw)
  To: Zsh hackers list

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 <pws@ibmth.df.unipi.it>       Tel: +39 050 844536
WWW:  http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy


^ permalink raw reply	[flat|nested] 3+ messages in thread
* Re: PATCH: tty pgrp problem again: third attempt
@ 1999-05-11 15:53 Sven Wischnowsky
  0 siblings, 0 replies; 3+ messages in thread
From: Sven Wischnowsky @ 1999-05-11 15:53 UTC (permalink / raw)
  To: zsh-workers


Peter Stephenson wrote:

> Sven, you're the only person that ever understood the list_pipe stuff. Is
> there a better way of handling this?  Should it really go somewhere in
> execpline() or execpline2()?

Somehow I think, it would be safer in execpline[2](), but I don't
really remember all the list_pipe stuff and we had some patches from
others for it (and the jobbing and signal code) after I worked on that
part of the code, so I may be wrong.
But while playing a bit, I found at least one more bug. If you do:
`ls | if true; then sleep 10; cat; fi' and ^Z the sleep, then fg the
whole thing again, the shell doesn't get hold of the terminal again
after the cat finishes. If you bg before the fg, the cat doesn't get
control (and neither does the shell).

Maybe I'll look some more into this (but I'm sure you are currently
deeper into all this then I).

Bye
 Sven


--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~1999-05-11 15:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-05-11 11:58 PATCH: tty pgrp problem again Peter Stephenson
1999-05-11 13:15 ` PATCH: tty pgrp problem again: third attempt Peter Stephenson
1999-05-11 15:53 Sven Wischnowsky

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).