cvs: php4 /ext/standard php_string.h string.c
| From: | Jani Taskinen | 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 */