What's a "codept" ??

    --Jani

On Sat, 22 Oct 2005, Rolland Santimano wrote:


rolland         Sat Oct 22 01:52:55 2005 EDT

 Modified files:
   /php-src/ext/standard        string.c
 Log:
 - php_u_stristr: Code comments


http://cvs.php.net/diff.php/php-src/ext/standard/string.c?r1=1.499&r2=1.500&ty=u
Index: php-src/ext/standard/string.c
diff -u php-src/ext/standard/string.c:1.499 php-src/ext/standard/string.c:1.500
--- php-src/ext/standard/string.c:1.499 Thu Oct 20 15:25:52 2005
+++ php-src/ext/standard/string.c       Sat Oct 22 01:52:53 2005
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */

-/* $Id: string.c,v 1.499 2005/10/20 19:25:52 rolland Exp $ */
+/* $Id: string.c,v 1.500 2005/10/22 05:52:53 rolland Exp $ */

/* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */

@@ -1924,20 +1924,33 @@

        /* Have to do this by hand since lower-casing can change lengths
           by changing codepoints, and an offset within the lower-case &
-          upper-case strings might be different codepoints
+          upper-case strings might be different codepoints.
+
+          Find an occurrence of the first codept of 't' in 's', and
+          starting from this point, match the rest of the codepts of 't'
+          with those in 's'. Comparisons are performed against lower-case
+          equivalents of the codepoints being matched.
+
+          'i' & 'j' are indices used for extracting codepts 'ch1' &
+          'ch2'. 'last' is offset in 's' where the search for 't'
+          started, and indicates beginning of 't' in 's' for a successful
+          match.
        */
+
        i = 0;
        while (i <= (s_len-t_len)) {
                last = i;
                U16_NEXT(s, i, s_len, ch1);
-               U16_GET(t, 0, 0, t_len, ch2);
+               j = 0;
+               U16_NEXT(t, j, t_len, ch2);
                if (u_tolower(ch1) == u_tolower(ch2)) {
-                       j = 0;
-                       U16_FWD_1(t, j, t_len);
                        while (j < t_len) {
                                U16_NEXT(s, i, s_len, ch1);
                                U16_NEXT(t, j, t_len, ch2);
                                if (u_tolower(ch1) != u_tolower(ch2)) {
+                                       /* U16_NEXT() incr 'i' beyond 'ch1', 
re-adjust to
+                                          restart compare
+                                       */
                                        U16_BACK_1(s, 0, i);
                                        break;
                                }



--
Give me your money at @ <http://pecl.php.net/wishlist.php/sniper>
Donating money may make me happier and friendlier for a limited period!
Death to all 4 letter abbreviations starting with P!

--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to