From efae75f64868361e5e25d0094a127c4b0c52d62d Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Sat, 17 Jun 2017 10:25:43 -0700 Subject: 41242: zstrbcmp(...) removed in favor of zstrcmp(..., SORTIT_IGNORING_BACKSLASHES) This should make sorting consistent in completion listings vs. elsewhere. --- ChangeLog | 5 +++++ Src/Zle/compcore.c | 4 +++- Src/Zle/zle_tricky.c | 47 ----------------------------------------------- 3 files changed, 8 insertions(+), 48 deletions(-) diff --git a/ChangeLog b/ChangeLog index cb71790b0..bfd370fcc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-06-17 Barton E. Schaefer + + * 41242: Src/Zle/compcore.c, Src/Zle/zle_tricky.c: zstrbcmp(...) + removed in favor of zstrcmp(..., SORTIT_IGNORING_BACKSLASHES) + 2017-06-16 Barton E. Schaefer * Wieland Hoffmann: 41265: Functions/Zle/insert-files: quote diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c index d1cf7a08a..52b0c173f 100644 --- a/Src/Zle/compcore.c +++ b/Src/Zle/compcore.c @@ -3135,7 +3135,9 @@ matchcmp(Cmatch *a, Cmatch *b) if ((*b)->disp && !((*b)->flags & CMF_MORDER)) return 1; - return zstrbcmp((*a)->str, (*b)->str); + return zstrcmp((*a)->str, (*b)->str, (SORTIT_IGNORING_BACKSLASHES| + (isset(NUMERICGLOBSORT) ? + SORTIT_NUMERICALLY : 0))); } /* This tests whether two matches are equal (would produce the same diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c index 3d8679119..5a9cccb6f 100644 --- a/Src/Zle/zle_tricky.c +++ b/Src/Zle/zle_tricky.c @@ -2407,53 +2407,6 @@ sfxlen(char *s, char *t) } #endif -/* This is zstrcmp with ignoring backslashes. */ - -/**/ -mod_export int -zstrbcmp(const char *a, const char *b) -{ - const char *astart = a; - - while (*a && *b) { - if (*a == '\\') - a++; - if (*b == '\\') - b++; - if (*a != *b || !*a) - break; - a++; - b++; - } - if (isset(NUMERICGLOBSORT) && (idigit(*a) || idigit(*b))) { - for (; a > astart && idigit(a[-1]); a--, b--); - if (idigit(*a) && idigit(*b)) { - while (*a == '0') - a++; - while (*b == '0') - b++; - for (; idigit(*a) && *a == *b; a++, b++); - if (idigit(*a) || idigit(*b)) { - int cmp = (int) STOUC(*a) - (int) STOUC(*b); - - while (idigit(*a) && idigit(*b)) - a++, b++; - if (idigit(*a) && !idigit(*b)) - return 1; - if (idigit(*b) && !idigit(*a)) - return -1; - - return cmp; - } - } - } -#ifndef HAVE_STRCOLL - return (int)(*a - *b); -#else - return strcoll(a,b); -#endif -} - /* This is used to print the strings (e.g. explanations). * * It returns the number of lines printed. */ -- cgit 1.4.1