]> granicus.if.org Git - php/commitdiff
- Made the trim functions use same base function. (less code :)
authorfoobar <sniper@php.net>
Sat, 13 Jul 2002 04:13:43 +0000 (04:13 +0000)
committerfoobar <sniper@php.net>
Sat, 13 Jul 2002 04:13:43 +0000 (04:13 +0000)
- Renamed php_trim2 -> php_trim (not used anyplace else, yet)
- Made php_trim abit more usable for external use. (not necessary to use
  zvals with it anymore)

ext/standard/php_string.h
ext/standard/string.c

index d1ffddcb1762df3f710c3228ffead286ffdb0f94..eb6330c34b9bf216665cc0686494625202921898 100644 (file)
@@ -117,12 +117,9 @@ PHPAPI void php_dirname(char *str, int len);
 PHPAPI char *php_stristr(unsigned char *s, unsigned char *t, size_t s_len, size_t t_len);
 PHPAPI char *php_str_to_str(char *haystack, int length, char *needle,
                int needle_len, char *str, int str_len, int *_new_length);
-PHPAPI void php_trim(zval **str, zval *return_value, int mode TSRMLS_DC);
-PHPAPI void php_trim2(zval **str, zval **what, zval *return_value, int mode TSRMLS_DC);
+PHPAPI char *php_trim(char *c, int len, char *what, int what_len, zval *return_value, int mode TSRMLS_DC);
 PHPAPI void php_strip_tags(char *rbuf, int len, int *state, char *allow, int allow_len);
-
 PHPAPI int php_char_to_str(char *str, uint len, char from, char *to, int to_len, pval *result);
-
 PHPAPI void php_implode(zval *delim, zval *arr, zval *return_value);
 PHPAPI void php_explode(zval *delim, zval *str, zval *return_value, int limit);
 
@@ -155,6 +152,5 @@ PHPAPI char *php_strerror(int errnum);
 #endif
 
 void register_string_constants(INIT_FUNC_ARGS);
-int php_charmask(unsigned char *input, int len, char *mask TSRMLS_DC);
 
 #endif /* PHP_STRING_H */
index 0c4fabb710ba2f9d3dda83006ce058bb0bf2467d..933d0623118ddf12a0829915a671af701c6356c0 100644 (file)
@@ -446,7 +446,7 @@ PHP_FUNCTION(strcoll)
  * it needs to be incrementing.  
  * Returns: FAILURE/SUCCESS wether the input was correct (i.e. no range errors)
  */
-int php_charmask(unsigned char *input, int len, char *mask TSRMLS_DC)
+static inline int php_charmask(unsigned char *input, int len, char *mask TSRMLS_DC)
 {
        unsigned char *end;
        unsigned char c;
@@ -489,33 +489,20 @@ int php_charmask(unsigned char *input, int len, char *mask TSRMLS_DC)
 }
 /* }}} */
 
-/* {{{ php_trim
-       Compatibility function, ports old-API to new one. (DEPRECATED)
-*/
-void php_trim(zval **str, zval *return_value, int mode TSRMLS_DC)
-{
-       php_trim2(str, NULL, return_value, mode TSRMLS_CC);
-}
-/* }}} */
-
-/* {{{ php_trim2
+/* {{{ php_trim()
+ * mode 1 : trim left
+ * mode 2 : trim right
+ * mode 3 : trim left and right
+ * what indicates which chars are to be trimmed. NULL->default (' \t\n\r\v\0')
  */
-PHPAPI void php_trim2(zval **str, zval **what, zval *return_value, int mode TSRMLS_DC)
-/* mode 1 : trim left
-   mode 2 : trim right
-   mode 3 : trim left and right
-
-   what indicates which chars are to be trimmed. NULL->default (' \t\n\r\v\0')
-*/
+PHPAPI char *php_trim(char *c, int len, char *what, int what_len, zval *return_value, int mode TSRMLS_DC)
 {
        register int i;
-       int len = Z_STRLEN_PP(str);
        int trimmed = 0;
-       char *c = Z_STRVAL_PP(str);
        char mask[256];
 
        if (what) {
-               php_charmask(Z_STRVAL_PP(what), Z_STRLEN_PP(what), mask TSRMLS_CC);
+               php_charmask(what, what_len, mask TSRMLS_CC);
        } else {
                php_charmask(" \n\r\t\v\0", 6, mask TSRMLS_CC);
        }
@@ -540,32 +527,37 @@ PHPAPI void php_trim2(zval **str, zval **what, zval *return_value, int mode TSRM
                        }
                }
        }
-       RETVAL_STRINGL(c, len, 1);
-}
-/* }}} */
 
-/* {{{ proto string chop(string str [, string character_mask])
-   An alias for rtrim */
+       if (return_value) {
+               RETVAL_STRINGL(c, len, 1);
+       } else {
+               return estrndup(c, len);
+       }
+       return "";
+}
 /* }}} */
 
-/* {{{ proto string rtrim(string str [, string character_mask])
-   Removes trailing whitespace */
-PHP_FUNCTION(rtrim)
+/* {{{ php_do_trim
+ * Base for trim(), rtrim() and ltrim() functions.
+ */
+static void php_do_trim(INTERNAL_FUNCTION_PARAMETERS, int mode)
 {
        zval **str;
        zval **what = NULL;
        int    argc = ZEND_NUM_ARGS();
 
-       if (argc < 1 || argc > 2 ||
-           zend_get_parameters_ex(argc, &str, &what) == FAILURE) {
+       if (argc < 1 || argc > 2 || zend_get_parameters_ex(argc, &str, &what) == FAILURE) {
                WRONG_PARAM_COUNT;
        }
+
        convert_to_string_ex(str);
+
        if (argc > 1) {
                convert_to_string_ex(what);
+               php_trim(Z_STRVAL_PP(str), Z_STRLEN_PP(str), Z_STRVAL_PP(what), Z_STRLEN_PP(what), return_value, mode TSRMLS_CC);
+       } else {
+               php_trim(Z_STRVAL_PP(str), Z_STRLEN_PP(str), NULL, 0, return_value, mode TSRMLS_CC);
        }
-
-       php_trim2(str, what, return_value, 2 TSRMLS_CC);
 }
 /* }}} */
 
@@ -573,20 +565,15 @@ PHP_FUNCTION(rtrim)
    Strips whitespace from the beginning and end of a string */
 PHP_FUNCTION(trim)
 {
-       zval **str;
-       zval **what = NULL;
-       int    argc = ZEND_NUM_ARGS();
-
-       if (argc < 1 || argc > 2 ||
-           zend_get_parameters_ex(argc, &str, &what) == FAILURE) {
-               WRONG_PARAM_COUNT;
-       }
-       convert_to_string_ex(str);
-       if (argc > 1) {
-               convert_to_string_ex(what);
-       }
+       php_do_trim(INTERNAL_FUNCTION_PARAM_PASSTHRU, 3);
+}
+/* }}} */
 
-       php_trim2(str, what, return_value, 3 TSRMLS_CC);
+/* {{{ proto string rtrim(string str [, string character_mask])
+   Removes trailing whitespace */
+PHP_FUNCTION(rtrim)
+{
+       php_do_trim(INTERNAL_FUNCTION_PARAM_PASSTHRU, 2);
 }
 /* }}} */
 
@@ -594,20 +581,7 @@ PHP_FUNCTION(trim)
    Strips whitespace from the beginning of a string */
 PHP_FUNCTION(ltrim)
 {
-       zval **str;
-       zval **what = NULL;
-       int    argc = ZEND_NUM_ARGS();
-
-       if (argc < 1 || argc > 2 ||
-           zend_get_parameters_ex(argc, &str, &what) == FAILURE) {
-               WRONG_PARAM_COUNT;
-       }
-       convert_to_string_ex(str);
-       if (argc > 1) {
-               convert_to_string_ex(what);
-       }
-       
-       php_trim2(str, what, return_value, 1 TSRMLS_CC);
+       php_do_trim(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
 }
 /* }}} */