summary refs log tree commit diff
path: root/Src
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 /Src
parentcf72c2d288b3d8763055d6553c91277048be0fcc (diff)
downloadzsh-efae75f64868361e5e25d0094a127c4b0c52d62d.tar.gz
zsh-efae75f64868361e5e25d0094a127c4b0c52d62d.tar.xz
zsh-efae75f64868361e5e25d0094a127c4b0c52d62d.zip
41242: zstrbcmp(...) removed in favor of zstrcmp(..., SORTIT_IGNORING_BACKSLASHES)
This should make sorting consistent in completion listings vs. elsewhere.
Diffstat (limited to 'Src')
-rw-r--r--Src/Zle/compcore.c4
-rw-r--r--Src/Zle/zle_tricky.c47
2 files changed, 3 insertions, 48 deletions
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.       */