cvs: php4 /ext/standard php_string.h string.c

From: Date: Sat, 13 Jul 2002 04:13:43 +0000
Subject: cvs: php4 /ext/standard php_string.h string.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-12809@lists.php.net to get a copy of this message
sniper Sat Jul 13 00:13:43 2002 EDT Modified files: /php4/ext/standard string.c php_string.h Log: - Made the trim functions use same base function. (less code :) - 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) Index: php4/ext/standard/string.c diff -u php4/ext/standard/string.c:1.276 php4/ext/standard/string.c:1.277 --- php4/ext/standard/string.c:1.276 Tue Jun 18 07:51:06 2002 +++ php4/ext/standard/string.c Sat Jul 13 00:13:43 2002 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: string.c,v 1.276 2002/06/18 11:51:06 sander Exp $ */ +/* $Id: string.c,v 1.277 2002/07/13 04:13:43 sniper Exp $ */ /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */ @@ -446,7 +446,7 @@ * 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 @@ } /* }}} */ -/* {{{ 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 @@ } } } - 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 @@ 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 @@ 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); } /* }}} */ Index: php4/ext/standard/php_string.h diff -u php4/ext/standard/php_string.h:1.57 php4/ext/standard/php_string.h:1.58 --- php4/ext/standard/php_string.h:1.57 Wed Jul 3 14:23:24 2002 +++ php4/ext/standard/php_string.h Sat Jul 13 00:13:43 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_string.h,v 1.57 2002/07/03 18:23:24 fmk Exp $ */ +/* $Id: php_string.h,v 1.58 2002/07/13 04:13:43 sniper Exp $ */ /* Synced with php 3.0 revision 1.43 1999-06-16 [ssb] */ @@ -117,12 +117,9 @@ 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 @@ #endif void register_string_constants(INIT_FUNC_ARGS); -int php_charmask(unsigned char *input, int len, char *mask TSRMLS_DC); #endif /* PHP_STRING_H */

« previous php.cvs (#12809) next »