From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29465 invoked from network); 18 Jul 1999 16:13:29 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 18 Jul 1999 16:13:29 -0000 Received: (qmail 21976 invoked by alias); 18 Jul 1999 16:13:20 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 7185 Received: (qmail 21969 invoked from network); 18 Jul 1999 16:13:17 -0000 Message-Id: <9907181542.AA28118@ibmth.df.unipi.it> To: zsh-workers@sunsite.auc.dk (Zsh hackers list) Subject: PATCH: 3.1.6-test-1: Don't use strcoll() with ranges Date: Sun, 18 Jul 1999 17:42:20 +0200 From: Peter Stephenson Bart's pointed out to me that there was some discussion about problems with using strcoll() inside character ranges: for one thing, [A-Z] in the de locale matches all characters, which is not good. So this just uses ASCII collation in this one case. You can also use [[:upper:]], of course; that seems to be safer without this patch. --- Src/glob.c.strcoll Thu Jun 24 18:04:31 1999 +++ Src/glob.c Sun Jul 18 17:37:35 1999 @@ -2926,7 +2926,10 @@ * and optional ^ have already been skipped. */ char *pat = *patptr; -#ifdef HAVE_STRCOLL + /* We don't use strcoll() for ranges, since it can have side + * effects. It's less necessary now we have [:posix:] ranges. + */ +#if 0 char l_buf[2], r_buf[2], ch_buf[2]; ch_buf[0] = ch; @@ -2944,7 +2947,7 @@ break; } else if (*pat == '-' && pat[-1] != rchar && pat[1] != Outbrack) { -#ifdef HAVE_STRCOLL +#if 0 l_buf[0] = PPAT(-1); r_buf[0] = PAT(1); if (strcoll(l_buf, ch_buf) <= 0 && -- Peter Stephenson Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy