From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4171 invoked from network); 5 Apr 2001 11:22:21 -0000 Received: from sunsite.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 5 Apr 2001 11:22:21 -0000 Received: (qmail 20810 invoked by alias); 5 Apr 2001 11:22:17 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 13907 Received: (qmail 20797 invoked from network); 5 Apr 2001 11:22:16 -0000 From: Sven Wischnowsky Date: Thu, 5 Apr 2001 13:22:12 +0200 (MET DST) Message-Id: <200104051122.NAA06140@beta.informatik.hu-berlin.de> To: zsh-workers@sunsite.dk Subject: PATCH: reverse string subscripting This is from the debian bug list: % a=abcd % echo $a[1,(r)d] didn't work, because it stopped one character too early trying to find the matching substring for `d'. Bye Sven Index: Src/params.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/params.c,v retrieving revision 1.32 diff -u -r1.32 params.c --- Src/params.c 2001/02/14 23:37:39 1.32 +++ Src/params.c 2001/04/05 11:21:51 @@ -1113,6 +1113,8 @@ if (beg < 0) beg += len; if (beg >= 0 && beg < len) { + char *de = d + len; + if (a2) { if (down) { if (!hasbeg) @@ -1128,7 +1130,7 @@ *t = sav; } } else - for (r = beg, t = d + beg; *t; r++, t++) { + for (r = beg, t = d + beg; t <= de; r++, t++) { sav = *t; *t = '\0'; if (pattry(pprog, d) && @@ -1148,7 +1150,7 @@ return r; } } else - for (r = beg + 1, t = d + beg; *t; r++, t++) + for (r = beg + 1, t = d + beg; t <= de; r++, t++) if (pattry(pprog, t) && !--num) return r; -- Sven Wischnowsky wischnow@informatik.hu-berlin.de