From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7754 invoked by alias); 12 Sep 2017 15:04:21 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 41688 Received: (qmail 1164 invoked by uid 1010); 12 Sep 2017 15:04:21 -0000 X-Qmail-Scanner-Diagnostics: from mailout1.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.11):SA:0(-6.9/5.0):. Processed in 1.427883 secs); 12 Sep 2017 15:04:21 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | X-AuditID: cbfec7f4-f79ab6d000003290-54-59b7f76d2ecf Date: Tue, 12 Sep 2017 16:04:09 +0100 From: Peter Stephenson To: zsh-workers@zsh.org Subject: Re: trap, eval and wait (was: [BUG] exec + builtin and traps) Message-id: <20170912160409.2ff01c0f@pwslap01u.europe.root.pri> In-reply-to: <20170912142145.GA10597@cventin.lip.ens-lyon.fr> Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrDIsWRmVeSWpSXmKPExsWy7djP87q537dHGjy+ampxsPkhkwOjx6qD H5gCGKO4bFJSczLLUov07RK4Mu51HmUv+M9T8WTJBcYGxjauLkZODgkBE4kLq64yQdhiEhfu rWfrYuTiEBJYyiix69JiRpCEkEAvk8TJy6kwDRcbVrJDFC1jlPhx7S0jhDONSaLh0XImCOcM o8TFbcuhMmcZJY7++sfaxcjBwSKgKtH5wxNkFJuAocTUTbPBVogIiEucXXueBaREWMBN4tXq WJAwr4C9xL8lC8BKOAVsJSade8UOYvML6Etc/fsJ6mx7iZlXzjBC1AtK/Jh8jwXEZhbQkdi2 7TE7hC0vsXnNW2aQcyQElrBJ3Ht3jxWi2UVi1s61UIOEJV4d38IOYctIXJ7czQJh9zNKPOn2 hWiewShx+swONoiEtUTf7YuMEBv4JCZtm84M8oCEAK9ER5sQhOkh8WZmHES1o8SEib+g4TOR RWLVkw8sExgVZiG5exaSu2chuXsBI/MqRpHU0uLc9NRiE73ixNzi0rx0veT83E2MwDRw+t/x LzsYFx+zOsQowMGoxMNrMGlbpBBrYllxZe4hRgkOZiUR3hOPtkcK8aYkVlalFuXHF5XmpBYf YpTmYFES57WNaosUEkhPLEnNTk0tSC2CyTJxcEo1MNaclJ/FxRpx6mBJVkHyqWvLPLfm1Mcm GSxZJZ/ptV5F8mXPvpKYxKjNsybutS4QOR2jc5150q3jOfxrNv4o++WfzaZ320l48VHt70fE 0gx3dcoV33UoC6vnyC2ImB8mukHfTPf+z4KaQqYJVVtrxW7ZC93Ii9tgovbu2dLTE/aUXb8d +T5ykxJLcUaioRZzUXEiABNi/wH/AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrHLMWRmVeSWpSXmKPExsVy+t/xa7q537dHGnydy2dxsPkhkwOjx6qD H5gCGKO4bFJSczLLUov07RK4Mu51HmUv+M9T8WTJBcYGxjauLkZODgkBE4mLDSvZIWwxiQv3 1rN1MXJxCAksYZRoWnsQypnBJPHt4ktWkCohgXOMEk+3BEIkzjJKzDl2l6mLkYODRUBVovOH J0gNm4ChxNRNsxlBbBEBcYmza8+zgJQIC7hJvFodCxLmFbCX+LdkAVgJp4CtxKRzr9ghRk5m kZi7ZBETSIJfQF/i6t9PTBDX2UvMvHKGEaJZUOLH5HssIDazgJbE5m1NrBC2vMTmNW+ZIe5U l7hxdzf7BEbhWUhaZiFpmYWkZQEj8ypGkdTS4tz03GIjveLE3OLSvHS95PzcTYzAUN527OeW HYxd74IPMQpwMCrx8Abc2h4pxJpYVlyZe4hRgoNZSYT3xCOgEG9KYmVValF+fFFpTmrxIUZp DhYlcd7ePasjhQTSE0tSs1NTC1KLYLJMHJxSDYyyIlOncT2ZUGb7/DPrguvZ2peVjj1/4hh5 MeBmbg7b7AlBL980eyza5/LZXlfmDvOcCnbGgLz/vycsEH5/WW59qoXTsiDm+7yhWZvbS5ve BM6TdJl6PE3/1cYn0zitrjd+NXDNkl+bwz75Jbt1FnuO9uIFV4yXWuyS4znM8vaQfsxVkcPT dB8qsRRnJBpqMRcVJwIAxbhbcGECAAA= X-CMS-MailID: 20170912150413eucas1p26fcd64376959a725a70d0c10a281c7b8 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUb?= =?UTF-8?B?7IK87ISx7KCE7J6QG1ByaW5jaXBhbCBFbmdpbmVlciwgU29mdHdhcmU=?= X-Global-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUbU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtQcmluY2lwYWwgRW5naW5lZXIsIFNvZnR3YXJl?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDA1Q0QwNTAwNTg=?= CMS-TYPE: 201P X-CMS-RootMailID: 20170912101045epcas2p4cae7e7df78ef035900f9c6099dc054fb X-RootMTR: 20170912101045epcas2p4cae7e7df78ef035900f9c6099dc054fb References: <20170912100257.GA32535@zira.vinc17.org> <20170912111906.397cffec@pwslap01u.europe.root.pri> <20170912103919.GA1794@zira.vinc17.org> <20170912115006.4d1b964d@pwslap01u.europe.root.pri> <20170912114220.GB1794@zira.vinc17.org> <20170912125139.4f698399@pwslap01u.europe.root.pri> <20170912120237.GA7326@zira.vinc17.org> <20170912131054.4f7c11a5@pwslap01u.europe.root.pri> <20170912142145.GA10597@cventin.lip.ens-lyon.fr> On Tue, 12 Sep 2017 16:21:45 +0200 Vincent Lefevre wrote: > trap 'echo foo' USR1 > ( sleep 1; kill -USR1 $$; sleep 1; echo child ) & > eval "wait && echo bar" > echo OK > sleep 2 > ------------------------------------------------------------ > > After 1 second, the following is printed: > > foo > bar > OK > > And after another second: > > child > > So, this means that the "wait" has ended due to the USR1 signal, not > by a process termination. But then, the fact that "wait" terminates > with the exit status 0 does not seem to be correct. There's a funny here (yes, I know, we're all amazed) --- wait is actually waiting for two jobs. One of them has the flags STAT_BUILTIN|STAT_CURSH|STAT_NOPRINT, and it turns out this is the second one it waits for and it returns status 0. The return status from wait only reflects the last job waited for --- I believe that much is standard. Quite possibly any of the above flags should mean wait ignores the job, but I've taken STAT_NOPRINT as the most logical to test here as it basically means "user is not interested in this". pws diff --git a/Src/jobs.c b/Src/jobs.c index 66dfb5a..226e7cf 100644 --- a/Src/jobs.c +++ b/Src/jobs.c @@ -2217,7 +2217,8 @@ bin_fg(char *name, char **argv, Options ops, int func) return 0; } else { /* Must be BIN_WAIT, so wait for all jobs */ for (job = 0; job <= maxjob; job++) - if (job != thisjob && jobtab[job].stat) + if (job != thisjob && jobtab[job].stat && + !(jobtab[job].stat & STAT_NOPRINT)) retval = zwaitjob(job, 1); unqueue_signals(); return retval;