From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 845 invoked from network); 20 Oct 2000 07:59:07 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 20 Oct 2000 07:59:07 -0000 Received: (qmail 19883 invoked by alias); 20 Oct 2000 07:59:00 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 13048 Received: (qmail 19874 invoked from network); 20 Oct 2000 07:58:59 -0000 From: "Bart Schaefer" Message-Id: <1001020075755.ZM8068@candle.brasslantern.com> Date: Fri, 20 Oct 2000 07:57:55 +0000 In-Reply-To: <14831.50805.334555.712481@phl.itasoftware.com> Comments: In reply to greg@itasoftware.com (Greg Klanderman) "script using vared to read commands - history bug" (Oct 20, 12:13am) References: <14831.50805.334555.712481@phl.itasoftware.com> X-Mailer: Z-Mail (5.0.0 30July97) To: greg@itasoftware.com, zsh-workers@sunsite.auc.dk (Zsh list) Subject: Re: script using vared to read commands - history bug MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Oct 20, 12:13am, Greg Klanderman wrote: } } If I run the following script: } } #!/bin/zsh } } prompt="%B%%%b " } while cmd="" && vared -h -p "$prompt" cmd ; do } echo " -- got: $cmd" } print -s - "$cmd" } done } } it works as intended, except that the most recent } command never appears in the history. What's up? What's up is that the history code doesn't really expect to be invoked from a non-interactive shell, even though `vared -h' will let you get away with it, so nothing is properly initialized until the second time you write something to the history, and thereafter it's always off by one. If the first thing you do at the prompt in this script is type ctrl-p, zsh 3.1.9 will core dump. (3.0.8 doesn't seem to have that part of the problem.) If there's a straightforward solution to this, I don't know enough about the history mechanism to find it quickly. There are a number of places in zle_hist.c that never check to see whether quietgethist() returns 0 (which is what produces the core dump), but it's not merely that the history is empty, because you don't get a core dump at the first prompt from `zsh -f'. -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net