diff options
-rw-r--r-- | lib.c | 5 | ||||
-rw-r--r-- | txr.1 | 14 |
2 files changed, 14 insertions, 5 deletions
@@ -4467,7 +4467,10 @@ val cmp_str(val astr, val bstr) case TYPE_PAIR(STR, STR): case TYPE_PAIR(LIT, STR): case TYPE_PAIR(STR, LIT): - return num(wcscmp(c_str(astr), c_str(bstr))); + { + int cmp = wcscmp(c_str(astr), c_str(bstr)); + return if3(cmp < 0, negone, if3(cmp > 0, one, zero)); + } case TYPE_PAIR(LSTR, LIT): case TYPE_PAIR(LSTR, STR): case TYPE_PAIR(LIT, LSTR): @@ -23695,12 +23695,12 @@ that length. .desc The .code cmp-str -function returns a negative integer if +function returns -1 if .meta left-string is lexicographically prior to -.metn right-string , -and a positive integer -if the reverse situation is the case. Otherwise the strings are equal +.metn right-string . +If the reverse relationship holds, it returns 1. +Otherwise the strings are equal and zero is returned. If either or both of the strings are lazy, then they are only forced to the @@ -23712,6 +23712,12 @@ The lexicographic ordering is naive, based on the character code point values in Unicode taken as integers, without regard for locale-specific collation orders. +Note: in \*(TX 232 and earlier versions, +.code cmp-str +conforms to a weaker requirements: any negative integer value +may be returned rather than -1, and any positive integer value +can be returned instead of 1. + .coNP Functions @, str= @, str< @, str> @ str>= and @ str<= .synb .mets (str= < left-string << right-string ) |