From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from euclid.skiles.gatech.edu (list@euclid.skiles.gatech.edu [130.207.146.50]) by coral.primenet.com.au (8.7.5/8.7.3) with ESMTP id TAA00226 for ; Tue, 13 Aug 1996 19:32:08 +1000 (EST) Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id FAA09782; Tue, 13 Aug 1996 05:24:30 -0400 (EDT) Resent-Date: Tue, 13 Aug 1996 05:24:30 -0400 (EDT) Message-Id: <199608130922.CAA05976@bebop.clari.net> To: Zsh hackers list Subject: Re: hist_strip_spaces In-reply-to: wayne's message of Mon, 12 Aug 1996 14:13:49 -0700. <199608122113.OAA03985@bebop.clari.net> Date: Tue, 13 Aug 1996 02:22:41 -0700 From: Wayne Davison Resent-Message-ID: <"MwrN72.0.mO2.Dd44o"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/1955 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu One last(?) problem with my too-hurried patch -- it sometimes adds spaces between tokens that don't need them (like ';' and '>'). This diff takes care of it. ..wayne.. ---8<------8<------8<------8<---cut here--->8------>8------>8------>8--- Index: Src/hist.c @@ -652,12 +652,14 @@ void histstrip(Histent he) { - int i, len; + int i, len, needspace; int limit = he->nwords*2; char *str, *s; - for (i = 0, len = he->nwords-1; i < limit; i += 2) - len += he->words[i+1] - he->words[i]; + for (i = 0, len = 0; i < limit; i += 2) { + len += he->words[i+1] - he->words[i] + + (i > 0 && he->words[i] > he->words[i-1]); + } if (he->text[len] == '\0') return; @@ -665,13 +667,13 @@ for (i = 0, s = str; i < limit; i += 2) { len = he->words[i+1] - he->words[i]; - memcpy(s, he->text + he->words[i], len); + needspace = (i < limit-2 && he->words[i+2] > he->words[i+1]); + memcpy(s, he->text + he->words[i], len + needspace); he->words[i] = s - str; he->words[i+1] = he->words[i] + len; - s += len; - *s++ = ' '; + s += len + needspace; } - s[-1] = '\0'; + *s = '\0'; if (he->text != chline) zsfree(he->text); ---8<------8<------8<------8<---cut here--->8------>8------>8------>8---