summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2017-06-17 10:25:43 -0700
committerBarton E. Schaefer <schaefer@zsh.org>2017-06-17 10:25:43 -0700
commitefae75f64868361e5e25d0094a127c4b0c52d62d (patch)
treed5cf94801a41678cd3a66c00da4e32100745b423
parentcf72c2d288b3d8763055d6553c91277048be0fcc (diff)
downloadzsh-efae75f64868361e5e25d0094a127c4b0c52d62d.tar.gz
zsh-efae75f64868361e5e25d0094a127c4b0c52d62d.zip
41242: zstrbcmp(...) removed in favor of zstrcmp(..., SORTIT_IGNORING_BACKSLASHES)
This should make sorting consistent in completion listings vs. elsewhere.
-rw-r--r--ChangeLog5
-rw-r--r--Src/Zle/compcore.c4
-rw-r--r--Src/Zle/zle_tricky.c47
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 <schaefer@zsh.org>
+
+ * 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 <schaefer@zsh.org>
* 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. */