From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from math.gatech.edu (euclid.skiles.gatech.edu [130.207.146.50]) by werple.net.au (8.7/8.7.1) with SMTP id SAA17815 for ; Fri, 24 Nov 1995 18:57:22 +1100 (EST) Received: by math.gatech.edu (5.x/SMI-SVR4) id AA02403; Fri, 24 Nov 1995 02:23:51 -0500 Resent-Date: Fri, 24 Nov 1995 08:24:11 +0100 Old-Return-Path: From: wischnow@hp832.informatik.hu-berlin.de Date: Fri, 24 Nov 1995 08:24:11 +0100 Message-Id: <9511240724.AA03273@beta.informatik.hu-berlin.de> To: zsh-workers@math.gatech.edu In-Reply-To: Peter Stephenson's message of Thu, 23 Nov 1995 11:12:47 +0100 Subject: Re: timing builtins etc. Resent-Message-Id: <"4n4JR.0.Sb.6CNjm"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/640 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu Peter Stephenson wrote: > > (Thought I'd sent this: it looks like I exited Emacs before MH > finished sending it.) > > I have been working on the bug that builtins and shell functions can't > be timed. I found a neat way of doing it which simply involved adding > the current process to the job list. This even supplied a more > natural way of fixing the previous bug that a builtin run at the end > of the pipeline lost its status to something before. It was all very > swish, and it works fine for builtins. > > Unfortunately it doesn't work for shell functions. The culprit is the > list_pipe code in exec.c, which randomly deletes the job from the > table and it gets used for other purposes later (you can't simply > hijack the new current job). So the code worked where the shell > function was inside a pipe, such as `echo foo | fn', but not on its > own. > > Unfortunately, too, the list_pipe code is horrendously complicated and > completely uncommented and I've never understood any of it. Can > anybody suggest anything? Does anybody know why it randomly deletes > jobs? Isn't there a neater way of fixing the original problem? > Well, I should be able to say something about, but it's a while back since I wrote it (one thing drives another thing out, you know...). I only remember that after most of the stuff I wrote there worked someone came up with an example of some compicated pipe that suddenly stopped working. That made me add the deletepipejob() thing and the first deletejob() in execpline(), but I don't remember the exact problem. I think it is clear that the whole exec.c/jobs.c stuff should be rewritten (not doing so was the real mistake I made), but who will do that (certainly not me ;-). > I'm tempted to pretend that the code is already in a pipeline when > `time' is used. I'm not quite sure yet what effect this will have. > Bye Sven -- Sven Wischnowsky wischnow@informatik.hu-berlin.de