We quite clearly agreed to a total freeze while Andrei and Dmitry
merge the unicode stuff.
It's a *huge* patch, so let's please respect the time they are
investing into this and keep our f***ing hands off the repos until
they're done.

--Wez.

On 8/9/05, Marcus Boerger <[EMAIL PROTECTED]> wrote:
> Hello Wez,
> 
>   this is 6.0 but Andrei should claim cvs lock though :-)
> 
> marcus
> 
> Tuesday, August 9, 2005, 10:59:51 PM, you wrote:
> 
> > Err, aren't we in a feature freeze?
> 
> > --Wez.
> 
> > On 8/9/05, Johannes Schlüter <[EMAIL PROTECTED]> wrote:
> >> johannes                Tue Aug  9 16:49:19 2005 EDT
> >>
> >>   Added files:
> >>     /php-src/ext/standard/tests/strings stristr.phpt
> >>
> >>   Modified files:
> >>     /php-src    NEWS
> >>     /php-src/ext/standard       string.c
> >>     /php-src/ext/standard/tests/strings strstr.phpt
> >>   Log:
> >>   - Added option to strstr() and stristr() to get a particular haystack 
> >> component
> >>
> >> http://cvs.php.net/diff.php/php-src/NEWS?r1=1.2030&r2=1.2031&ty=u
> >> Index: php-src/NEWS
> >> diff -u php-src/NEWS:1.2030 php-src/NEWS:1.2031
> >> --- php-src/NEWS:1.2030 Tue Aug  9 11:07:18 2005
> >> +++ php-src/NEWS        Tue Aug  9 16:49:12 2005
> >> @@ -6,6 +6,8 @@
> >>    . Added CURLINFO_HEADER_OUT to facilitate request retrieval.
> >>  - Added an optional parameter to parse_url() to allow retrieval of 
> >> distinct URL
> >>    components. (Ilia)
> >> +- Added an optional parameter to strstr() and stristr() for retrieval of 
> >> either
> >> +  the part of haystack before or after first occurence of needle. 
> >> (Johannes)
> >>
> >>  ?? ??? 2005, PHP 5.1
> >>  - Upgraded PCRE library to version 6.2. (Andrei)
> >> http://cvs.php.net/diff.php/php-src/ext/standard/string.c?r1=1.445&r2=1.446&ty=u
> >> Index: php-src/ext/standard/string.c
> >> diff -u php-src/ext/standard/string.c:1.445
> >> php-src/ext/standard/string.c:1.446
> >> --- php-src/ext/standard/string.c:1.445 Wed Aug  3 10:08:13 2005
> >> +++ php-src/ext/standard/string.c       Tue Aug  9 16:49:18 2005
> >> @@ -18,7 +18,7 @@
> >>
> >> +----------------------------------------------------------------------+
> >>   */
> >>
> >> -/* $Id: string.c,v 1.445 2005/08/03 14:08:13 sniper Exp $ */
> >> +/* $Id: string.c,v 1.446 2005/08/09 20:49:18 johannes Exp $ */
> >>
> >>  /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */
> >>
> >> @@ -1433,52 +1433,60 @@
> >>  }
> >>  /* }}} */
> >>
> >> -/* {{{ proto string stristr(string haystack, string needle)
> >> +/* {{{ proto string stristr(string haystack, string needle[, bool part])
> >>     Finds first occurrence of a string within another, case insensitive */
> >>  PHP_FUNCTION(stristr)
> >>  {
> >> -       zval **haystack, **needle;
> >> +       char *haystack;
> >> +       long haystack_len;
> >> +       zval *needle;
> >> +       zend_bool part = 0;
> >>         char *found = NULL;
> >>         int  found_offset;
> >>         char *haystack_orig;
> >>         char needle_char[2];
> >>
> >> -       if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &haystack, 
> >> &needle) == FAILURE) {
> >> -               WRONG_PARAM_COUNT;
> >> +       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|b",
> >> &haystack, &haystack_len, &needle, &part) == FAILURE) {
> >> +               return;
> >>         }
> >>
> >> -       SEPARATE_ZVAL(haystack);
> >> -       SEPARATE_ZVAL(needle);
> >> -
> >> -       convert_to_string_ex(haystack);
> >> +       SEPARATE_ZVAL(&needle);
> >>
> >> -       haystack_orig = estrndup(Z_STRVAL_PP(haystack), 
> >> Z_STRLEN_PP(haystack));
> >> +       haystack_orig = estrndup(haystack, haystack_len);
> >>
> >> -       if (Z_TYPE_PP(needle) == IS_STRING) {
> >> -               if (!Z_STRLEN_PP(needle)) {
> >> +       if (Z_TYPE_P(needle) == IS_STRING) {
> >> +               if (!Z_STRLEN_P(needle)) {
> >>                         php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty 
> >> delimiter.");
> >>                         efree(haystack_orig);
> >>                         RETURN_FALSE;
> >>                 }
> >>
> >> -               found = php_stristr(Z_STRVAL_PP(haystack),
> >> -                                                       
> >> Z_STRVAL_PP(needle),
> >> -                                                       
> >> Z_STRLEN_PP(haystack),
> >> -                                                       
> >> Z_STRLEN_PP(needle));
> >> +               found = php_stristr(haystack,
> >> +                                                       Z_STRVAL_P(needle),
> >> +                                                       haystack_len,
> >> +                                                       
> >> Z_STRLEN_P(needle));
> >>         } else {
> >> -               convert_to_long_ex(needle);
> >> -               needle_char[0] = (char) Z_LVAL_PP(needle);
> >> +               convert_to_long_ex(&needle);
> >> +               needle_char[0] = (char) Z_LVAL_P(needle);
> >>                 needle_char[1] = 0;
> >>
> >> -               found = php_stristr(Z_STRVAL_PP(haystack),
> >> +               found = php_stristr(haystack,
> >>                                                         needle_char,
> >> -                                                       
> >> Z_STRLEN_PP(haystack),
> >> +                                                       haystack_len,
> >>                                                         1);
> >>         }
> >>
> >>         if (found) {
> >> -               found_offset = found - Z_STRVAL_PP(haystack);
> >> -               RETVAL_STRINGL(haystack_orig + found_offset,
> >> Z_STRLEN_PP(haystack) - found_offset, 1);
> >> +               found_offset = found - haystack;
> >> +               if (part) {
> >> +                       char *ret;
> >> +                       ret = emalloc(found_offset + 1);
> >> +                       strncpy(ret, haystack_orig, found_offset);
> >> +                       ret[found_offset] = '\0';
> >> +                       RETVAL_STRINGL(ret , found_offset, 0);
> >> +               } else {
> >> +                       RETVAL_STRINGL(haystack_orig + found_offset, 
> >> haystack_len - found_offset, 1);
> >> +               }
> >>         } else {
> >>                 RETVAL_FALSE;
> >>         }
> >> @@ -1487,45 +1495,54 @@
> >>  }
> >>  /* }}} */
> >>
> >> -/* {{{ proto string strstr(string haystack, string needle)
> >> +/* {{{ proto string strstr(string haystack, string needle[, bool part])
> >>     Finds first occurrence of a string within another */
> >>  PHP_FUNCTION(strstr)
> >>  {
> >> -       zval **haystack, **needle;
> >> +       char *haystack;
> >> +       long haystack_len;
> >> +       zval *needle;
> >> +       zend_bool part = 0;
> >>         char *found = NULL;
> >>         char needle_char[2];
> >>         long found_offset;
> >> -
> >> -       if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &haystack, 
> >> &needle) == FAILURE) {
> >> -               WRONG_PARAM_COUNT;
> >> -       }
> >>
> >> -       convert_to_string_ex(haystack);
> >> +       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|b",
> >> &haystack, &haystack_len, &needle, &part) == FAILURE) {
> >> +               return;
> >> +       }
> >>
> >> -       if (Z_TYPE_PP(needle) == IS_STRING) {
> >> -               if (!Z_STRLEN_PP(needle)) {
> >> +       if (Z_TYPE_P(needle) == IS_STRING) {
> >> +               if (!Z_STRLEN_P(needle)) {
> >>                         php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty 
> >> delimiter.");
> >>                         RETURN_FALSE;
> >>                 }
> >>
> >> -               found = php_memnstr(Z_STRVAL_PP(haystack),
> >> -                                   Z_STRVAL_PP(needle),
> >> -                                   Z_STRLEN_PP(needle),
> >> -                                   Z_STRVAL_PP(haystack) + 
> >> Z_STRLEN_PP(haystack));
> >> +               found = php_memnstr(haystack,
> >> +                                   Z_STRVAL_P(needle),
> >> +                                   Z_STRLEN_P(needle),
> >> +                                   haystack + haystack_len);
> >>         } else {
> >> -               convert_to_long_ex(needle);
> >> -               needle_char[0] = (char) Z_LVAL_PP(needle);
> >> +               convert_to_long_ex(&needle);
> >> +               needle_char[0] = (char) Z_LVAL_P(needle);
> >>                 needle_char[1] = 0;
> >>
> >> -               found = php_memnstr(Z_STRVAL_PP(haystack),
> >> +               found = php_memnstr(haystack,
> >>                                                         needle_char,
> >>                                                         1,
> >> -                                   Z_STRVAL_PP(haystack) + 
> >> Z_STRLEN_PP(haystack));
> >> +                                   haystack + haystack_len);
> >>         }
> >>
> >>         if (found) {
> >> -               found_offset = found - Z_STRVAL_PP(haystack);
> >> -               RETURN_STRINGL(found, Z_STRLEN_PP(haystack) - 
> >> found_offset, 1);
> >> +               found_offset = found - haystack;
> >> +               if (part) {
> >> +                       char *ret;
> >> +                       ret = emalloc(found_offset + 1);
> >> +                       strncpy(ret, haystack, found_offset);
> >> +                       ret[found_offset] = '\0';
> >> +                       RETURN_STRINGL(ret , found_offset, 0);
> >> +               } else {
> >> +                       RETURN_STRINGL(found, haystack_len - found_offset, 
> >> 1);
> >> +               }
> >>         } else {
> >>                 RETURN_FALSE;
> >>         }
> >> http://cvs.php.net/diff.php/php-src/ext/standard/tests/strings/strstr.phpt?r1=1.2&r2=1.3&ty=u
> >> Index: php-src/ext/standard/tests/strings/strstr.phpt
> >> diff -u php-src/ext/standard/tests/strings/strstr.phpt:1.2
> >> php-src/ext/standard/tests/strings/strstr.phpt:1.3
> >> --- php-src/ext/standard/tests/strings/strstr.phpt:1.2  Wed May 19 
> >> 04:45:23 2004
> >> +++ php-src/ext/standard/tests/strings/strstr.phpt      Tue Aug  9 
> >> 16:49:19 2005
> >> @@ -14,6 +14,8 @@
> >>         var_dump(@strstr("a", ""));
> >>         var_dump(@strstr("", "a"));
> >>         var_dump(md5(@strstr("\\\\a\\", "\\a")));
> >> +       var_dump(strstr("test string", " ", false));
> >> +       var_dump(strstr("test string", " ", true));
> >>  ?>
> >>  --EXPECT--
> >>  string(11) "test string"
> >> @@ -28,3 +30,5 @@
> >>  bool(false)
> >>  bool(false)
> >>  string(32) "6ec19f52f0766c463f3bb240f4396913"
> >> +string(7) " string"
> >> +string(4) "test"
> >>
> >> http://cvs.php.net/co.php/php-src/ext/standard/tests/strings/stristr.phpt?r=1.1&p=1
> >> Index: php-src/ext/standard/tests/strings/stristr.phpt
> >> +++ php-src/ext/standard/tests/strings/stristr.phpt
> >> --TEST--
> >> stristr() function
> >> --FILE--
> >> <?php
> >>         var_dump(stristr("tEsT sTrInG", "tEsT"));
> >>         var_dump(stristr("tEsT sTrInG", "stRiNg"));
> >>         var_dump(stristr("tEsT sTrInG", "stRiN"));
> >>         var_dump(stristr("tEsT sTrInG", "t S"));
> >>         var_dump(stristr("tEsT sTrInG", "g"));
> >>         var_dump(md5(stristr("te".chr(0)."st", chr(0))));
> >>         var_dump(@stristr("", ""));
> >>         var_dump(@stristr("a", ""));
> >>         var_dump(@stristr("", "a"));
> >>         var_dump(md5(@stristr("\\\\a\\", "\\a")));
> >>         var_dump(stristr("tEsT sTrInG", " ", false));
> >>         var_dump(stristr("tEsT sTrInG", " ", true));
> >> ?>
> >> --EXPECT--
> >> string(11) "tEsT sTrInG"
> >> string(6) "sTrInG"
> >> string(6) "sTrInG"
> >> string(8) "T sTrInG"
> >> string(1) "G"
> >> string(32) "7272696018bdeb2c9a3f8d01fc2a9273"
> >> bool(false)
> >> bool(false)
> >> bool(false)
> >> string(32) "6ec19f52f0766c463f3bb240f4396913"
> >> string(7) " sTrInG"
> >> string(4) "tEsT"
> >>
> >> --
> >> PHP CVS Mailing List (http://www.php.net/)
> >> To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> >>
> 
> 
> 
> Best regards,
>  Marcus
> 
>

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

Reply via email to