--- gforth/prim 2006/01/28 17:55:31 1.186 +++ gforth/prim 2006/02/04 22:09:11 1.188 @@ -719,6 +719,15 @@ c2 = toupper(c1); : dup [char] a - [ char z char a - 1 + ] Literal u< bl and - ; +capscompare ( c_addr1 u1 c_addr2 u2 -- n ) string +""Compare two strings lexicographically. If they are equal, @i{n} is 0; if +the first string is smaller, @i{n} is -1; if the first string is larger, @i{n} +is 1. Currently this is based on the machine's character +comparison. In the future, this may change to consider the current +locale and its collation order."" +/* close ' to keep fontify happy */ +n = capscompare(c_addr1, u1, c_addr2, u2); + /string ( c_addr1 u1 n -- c_addr2 u2 ) string slash_string ""Adjust the string specified by @i{c-addr1, u1} to remove @i{n} characters from the start of the string."" @@ -873,7 +882,7 @@ division by 2 (note that @code{/} not ne n2 = n1>>1; : dup MINI and IF 1 ELSE 0 THEN - [ bits/byte cell * 1- ] literal + [ bits/char cell * 1- ] literal 0 DO 2* swap dup 2* >r MINI and IF 1 ELSE 0 THEN or r> swap LOOP nip ;