diff options
| author | Paul Eggert | 2022-03-19 12:35:04 -0700 |
|---|---|---|
| committer | Paul Eggert | 2022-03-19 12:48:52 -0700 |
| commit | c3c5e50ba484eb849b9476ea9dba96a1a669be82 (patch) | |
| tree | a66a1b408c89a05998aab7626687a8dec4d413a4 /src | |
| parent | a5cbd983767c5b3e18e7b039795d036262b41958 (diff) | |
| download | emacs-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.c | 34 | ||||
| -rw-r--r-- | src/lisp.h | 1 |
2 files changed, 3 insertions, 32 deletions
| @@ -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. */ | ||
| 493 | int | ||
| 494 | string_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 | ||
| 521 | DEFUN ("string-collate-lessp", Fstring_collate_lessp, Sstring_collate_lessp, 2, 4, 0, | 493 | DEFUN ("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, | |||
| 3927 | extern Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object); | 3927 | extern Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object); |
| 3928 | extern Lisp_Object merge_c (Lisp_Object, Lisp_Object, bool (*) (Lisp_Object, Lisp_Object)); | 3928 | extern Lisp_Object merge_c (Lisp_Object, Lisp_Object, bool (*) (Lisp_Object, Lisp_Object)); |
| 3929 | extern Lisp_Object do_yes_or_no_p (Lisp_Object); | 3929 | extern Lisp_Object do_yes_or_no_p (Lisp_Object); |
| 3930 | extern int string_version_cmp (Lisp_Object, Lisp_Object); | ||
| 3931 | extern Lisp_Object concat2 (Lisp_Object, Lisp_Object); | 3930 | extern Lisp_Object concat2 (Lisp_Object, Lisp_Object); |
| 3932 | extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object); | 3931 | extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object); |
| 3933 | extern bool equal_no_quit (Lisp_Object, Lisp_Object); | 3932 | extern bool equal_no_quit (Lisp_Object, Lisp_Object); |