From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6343 invoked from network); 18 Jun 1997 07:21:54 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 18 Jun 1997 07:21:54 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id DAA22669; Wed, 18 Jun 1997 03:06:56 -0400 (EDT) Resent-Date: Wed, 18 Jun 1997 03:06:56 -0400 (EDT) Date: Wed, 18 Jun 97 16:10:54 JST Message-Id: <9706180710.AA10798@oz.fantasy.otsl.oki.co.jp> To: zsh-workers@math.gatech.edu Subject: zsh-3.0.3: a problem in Src/jobs.c From: suzuki@otsl.oki.co.jp (SUZUKI Hisao) Organization: Oki Technosystems Laboratory, Inc., Nagoya, Japan Resent-Message-ID: <"db18q.0.8Y5.Faufp"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/3253 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu Jo napot kivanok! I found a problem in zsh-3.0.3/Src/jobs.c: when you invoke, say, "emacs with x-window" in background, and quit the emacs, then the tty setting is modified unexpectedly. This is inconvenient; at least, the behavior is not the same as those of ksh, csh nor older zsh. The following is the sample session: ares% stty speed 9600 baud; line = 0; intr = ^G; erase = ^H; -brkint ixoff -imaxbel -iexten -echoctl ares% emacs & [1] 6524 ares% [1] + done emacs ares% stty speed 9600 baud; line = 0; intr = ^G; quit = ; erase = ^H; susp = ; lnext = ; flush = ; -brkint inlcr ixoff -imaxbel -iexten -echoctl where "ares" is an i586 box with Linux-2.0.27/Slackware-3.1.0. I made a quick hack to fix it for the time being. The following is it. I am hoping the problem will be fixed soon. ---------------------------------------------------------------- *** zsh-3.0.3/Src/jobs.c.ORIG Tue Jun 3 05:11:27 1997 --- zsh-3.0.3/Src/jobs.c Wed Jun 18 05:17:02 1997 *************** *** 154,170 **** } } ! if (shout && !ttyfrozen && !jn->stty_in_env) ! gettyinfo(&shttyinfo); ! if (isset(MONITOR)) { ! pid_t pgrp = gettygrp(); /* get process group of tty */ ! ! /* is this job in the foreground of an interactive shell? */ ! if (mypgrp != pgrp && inforeground && ! (jn->gleader == pgrp || (pgrp > 1 && kill(-pgrp, 0) == -1))) { ! attachtty(mypgrp); ! adjustwinsize(); /* check window size and adjust if necessary */ } } --- 154,181 ---- } } ! { ! pid_t pgrp = -1; ! int is_foreground = 0; /* is this job in the foreground actually? */ ! if (shout && !ttyfrozen && !jn->stty_in_env) { ! pgrp = gettygrp(); /* get process group of tty */ ! is_foreground = (jn->gleader == pgrp || ! (pgrp > 1 && kill(-pgrp, 0) == -1)); ! if (is_foreground) ! gettyinfo(&shttyinfo); ! } ! if (isset(MONITOR)) { ! if (pgrp == -1) { ! pgrp = gettygrp(); ! is_foreground = (jn->gleader == pgrp || ! (pgrp > 1 && kill(-pgrp, 0) == -1)); ! } ! /* is this job in the foreground of an interactive shell? */ ! if (mypgrp != pgrp && inforeground && is_foreground) { ! attachtty(mypgrp); ! adjustwinsize(); /* check window size & adjust if necessary */ ! } } } ---------------------------------------------------------------- Regards, Hisao Suzuki