PHP_FUNCTION(convert_uudecode);
PHP_FUNCTION(convert_uuencode);
-PHPAPI int php_uudecode(char *src, int src_len, char **dest);
-PHPAPI int php_uuencode(char *src, int src_len, char **dest);
+PHPAPI zend_string *php_uudecode(char *src, int src_len);
+PHPAPI zend_string *php_uuencode(char *src, int src_len);
#endif /* PHP_UUENCODE_H */
{
char *arg;
int arglen;
+ zend_string *result;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arglen) == FAILURE) {
return;
}
- arg = estrndup(arg, arglen);
- php_strtoupper(arg, arglen);
-//??? RETURN_STRINGL(arg, arglen, 0);
- RETURN_STRINGL(arg, arglen);
+ result = STR_INIT(arg, arglen, 0);
+ php_strtoupper(result->val, result->len);
+ RETURN_STR(result);
}
/* }}} */
{
char *str;
int arglen;
+ zend_string *result;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &arglen) == FAILURE) {
return;
}
- str = estrndup(str, arglen);
- php_strtolower(str, arglen);
-//??? RETURN_STRINGL(str, arglen, 0);
- RETURN_STRINGL(str, arglen);
+ result = STR_INIT(str, arglen, 0);
+ php_strtolower(result->val, result->len);
+ RETURN_STR(result);
}
/* }}} */
#define PHP_UU_DEC(c) (((c) - ' ') & 077)
-PHPAPI int php_uuencode(char *src, int src_len, char **dest) /* {{{ */
+PHPAPI zend_string *php_uuencode(char *src, int src_len) /* {{{ */
{
int len = 45;
char *p, *s, *e, *ee;
+ zend_string *dest;
/* encoded length is ~ 38% greater than the original */
- p = *dest = safe_emalloc((size_t) ceil(src_len * 1.38), 1, 46);
+ dest = STR_ALLOC((size_t)ceil(src_len * 1.38) + 46, 0);
+ p = dest->val;
s = src;
e = src + src_len;
*p++ = '\n';
*p = '\0';
- return (p - *dest);
+ dest = STR_REALLOC(dest, p - dest->val, 0);
+ return dest;
}
/* }}} */
-PHPAPI int php_uudecode(char *src, int src_len, char **dest) /* {{{ */
+PHPAPI zend_string *php_uudecode(char *src, int src_len) /* {{{ */
{
int len, total_len=0;
char *s, *e, *p, *ee;
+ zend_string *dest;
- p = *dest = safe_emalloc((size_t) ceil(src_len * 0.75), 1, 1);
+ dest = STR_ALLOC((size_t) ceil(src_len * 0.75), 0);
+ p = dest->val;
s = src;
e = src + src_len;
s++;
}
- if ((len = total_len > (p - *dest))) {
+ if ((len = total_len > (p - dest->val))) {
*p++ = PHP_UU_DEC(*s) << 2 | PHP_UU_DEC(*(s + 1)) >> 4;
if (len > 1) {
*p++ = PHP_UU_DEC(*(s + 1)) << 4 | PHP_UU_DEC(*(s + 2)) >> 2;
}
}
- *(*dest + total_len) = '\0';
+ dest->len = total_len;
+ dest->val[dest->len] = '\0';
- return total_len;
+ return dest;
err:
- efree(*dest);
- return -1;
+ STR_FREE(dest);
+
+ return NULL;
}
/* }}} */
uuencode a string */
PHP_FUNCTION(convert_uuencode)
{
- char *src, *dst;
- int src_len, dst_len;
+ char *src;
+ int src_len;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &src, &src_len) == FAILURE || src_len < 1) {
RETURN_FALSE;
}
- dst_len = php_uuencode(src, src_len, &dst);
-
-//??? RETURN_STRINGL(dst, dst_len, 0);
- RETURN_STRINGL(dst, dst_len);
+ RETURN_STR(php_uuencode(src, src_len));
}
/* }}} */
decode a uuencoded string */
PHP_FUNCTION(convert_uudecode)
{
- char *src, *dst;
- int src_len, dst_len;
+ char *src;
+ int src_len;
+ zend_string *dest;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &src, &src_len) == FAILURE || src_len < 1) {
RETURN_FALSE;
}
- dst_len = php_uudecode(src, src_len, &dst);
- if (dst_len < 0) {
+ if ((dest = php_uudecode(src, src_len)) == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "The given parameter is not a valid uuencoded string");
RETURN_FALSE;
}
-//??? RETURN_STRINGL(dst, dst_len, 0);
- RETURN_STRINGL(dst, dst_len);
+ RETURN_STR(dest);
}
/* }}} */