aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2022-03-19 12:35:04 -0700
committerPaul Eggert2022-03-19 12:48:52 -0700
commitc3c5e50ba484eb849b9476ea9dba96a1a669be82 (patch)
treea66a1b408c89a05998aab7626687a8dec4d413a4 /src
parenta5cbd983767c5b3e18e7b039795d036262b41958 (diff)
downloademacs-c3c5e50ba484eb849b9476ea9dba96a1a669be82.tar.gz
emacs-c3c5e50ba484eb849b9476ea9dba96a1a669be82.zip
Use filenvercmp instead of doing it by hand
* src/fns.c (Fstring_version_lessp): Use filenvercmp, not string_version_cmp. (string_version_cmp): Remove; no longer used.
Diffstat (limited to 'src')
-rw-r--r--src/fns.c34
-rw-r--r--src/lisp.h1
2 files changed, 3 insertions, 32 deletions
diff --git a/src/fns.c b/src/fns.c
index 6e89fe3ca5f..4caf8448f1f 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -485,37 +485,9 @@ Symbols are also allowed; their print names are used instead. */)
485 string2 = SYMBOL_NAME (string2); 485 string2 = SYMBOL_NAME (string2);
486 CHECK_STRING (string1); 486 CHECK_STRING (string1);
487 CHECK_STRING (string2); 487 CHECK_STRING (string2);
488 return string_version_cmp (string1, string2) < 0 ? Qt : Qnil; 488 int cmp = filenvercmp (SSDATA (string1), SBYTES (string1),
489} 489 SSDATA (string2), SBYTES (string2));
490 490 return cmp < 0 ? Qt : Qnil;
491/* Return negative, 0, positive if STRING1 is <, =, > STRING2 as per
492 string-version-lessp. */
493int
494string_version_cmp (Lisp_Object string1, Lisp_Object string2)
495{
496 char *p1 = SSDATA (string1);
497 char *p2 = SSDATA (string2);
498 char *lim1 = p1 + SBYTES (string1);
499 char *lim2 = p2 + SBYTES (string2);
500 int cmp;
501
502 while ((cmp = filevercmp (p1, p2)) == 0)
503 {
504 /* If the strings are identical through their first null bytes,
505 skip past identical prefixes and try again. */
506 ptrdiff_t size = strlen (p1) + 1;
507 eassert (size == strlen (p2) + 1);
508 p1 += size;
509 p2 += size;
510 bool more1 = p1 <= lim1;
511 bool more2 = p2 <= lim2;
512 if (!more1)
513 return more2;
514 if (!more2)
515 return -1;
516 }
517
518 return cmp;
519} 491}
520 492
521DEFUN ("string-collate-lessp", Fstring_collate_lessp, Sstring_collate_lessp, 2, 4, 0, 493DEFUN ("string-collate-lessp", Fstring_collate_lessp, Sstring_collate_lessp, 2, 4, 0,
diff --git a/src/lisp.h b/src/lisp.h
index c5045d72ee5..bd3cdd5307e 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3927,7 +3927,6 @@ extern Lisp_Object substring_both (Lisp_Object, ptrdiff_t, ptrdiff_t,
3927extern Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object); 3927extern Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object);
3928extern Lisp_Object merge_c (Lisp_Object, Lisp_Object, bool (*) (Lisp_Object, Lisp_Object)); 3928extern Lisp_Object merge_c (Lisp_Object, Lisp_Object, bool (*) (Lisp_Object, Lisp_Object));
3929extern Lisp_Object do_yes_or_no_p (Lisp_Object); 3929extern Lisp_Object do_yes_or_no_p (Lisp_Object);
3930extern int string_version_cmp (Lisp_Object, Lisp_Object);
3931extern Lisp_Object concat2 (Lisp_Object, Lisp_Object); 3930extern Lisp_Object concat2 (Lisp_Object, Lisp_Object);
3932extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object); 3931extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object);
3933extern bool equal_no_quit (Lisp_Object, Lisp_Object); 3932extern bool equal_no_quit (Lisp_Object, Lisp_Object);