virtual_filepath_ex(path, &path_copy, NULL TSRMLS_CC);
#else
path_copy = path;
-#endif
+#endif
if (php_check_open_basedir(path_copy TSRMLS_CC)) {
return NULL;
if (opened_path && bz_file) {
*opened_path = estrdup(path_copy);
}
- path_copy = NULL;
+ if (path_copy)
+ efree(path_copy);
if (bz_file == NULL) {
/* that didn't work, so try and get something from the network/wrapper */
zval *bz;
long len = 1024;
php_stream *stream;
-
+ char *data;
+ size_t dlen;
+
if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &bz, &len)) {
RETURN_FALSE;
}
- php_stream_from_zval(stream, &bz);
+ php_stream_from_zval(stream, bz);
if ((len + 1) < 1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "length may not be negative");
RETURN_FALSE;
}
- Z_STRVAL_P(return_value) = emalloc(len + 1);
- Z_STRLEN_P(return_value) = php_stream_read(stream, Z_STRVAL_P(return_value), len);
+ data = emalloc(len + 1);
+ dlen = php_stream_read(stream, data, len);
- if (Z_STRLEN_P(return_value) < 0) {
- efree(Z_STRVAL_P(return_value));
+ if (dlen < 0) {
+ efree(data);
php_error_docref(NULL TSRMLS_CC, E_WARNING, "could not read valid bz2 data from stream");
RETURN_FALSE;
}
-
- Z_STRVAL_P(return_value)[Z_STRLEN_P(return_value)] = 0;
- Z_TYPE_P(return_value) = IS_STRING;
+
+ ZVAL_NEW_STR(return_value, STR_INIT(data, dlen, 0));
+ efree(data);
}
/* }}} */
Opens a new BZip2 stream */
static PHP_FUNCTION(bzopen)
{
- zval **file; /* The file to open */
+ zval *file; /* The file to open */
char *mode; /* The mode to open the stream with */
int mode_len;
BZFILE *bz; /* The compressed file stream */
php_stream *stream = NULL;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zs", &file, &mode, &mode_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zs", &file, &mode, &mode_len) == FAILURE) {
return;
}
}
/* If it's not a resource its a string containing the filename to open */
- if (Z_TYPE_PP(file) == IS_STRING) {
- if (Z_STRLEN_PP(file) == 0) {
+ if (Z_TYPE_P(file) == IS_STRING) {
+ if (Z_STRLEN_P(file) == 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "filename cannot be empty");
RETURN_FALSE;
}
- if (CHECK_ZVAL_NULL_PATH(*file)) {
+ if (CHECK_ZVAL_NULL_PATH(file)) {
RETURN_FALSE;
}
stream = php_stream_bz2open(NULL,
- Z_STRVAL_PP(file),
+ Z_STRVAL_P(file),
mode,
REPORT_ERRORS,
NULL);
- } else if (Z_TYPE_PP(file) == IS_RESOURCE) {
+ } else if (Z_TYPE_P(file) == IS_RESOURCE) {
/* If it is a resource, than its a stream resource */
php_socket_t fd;
int stream_mode_len;
} else {
/* Copy the buffer, we have perhaps allocate a lot more than we need,
so we erealloc() the buffer to the proper size */
- dest = erealloc(dest, dest_len + 1);
- dest[dest_len] = 0;
- RETURN_STRINGL(dest, dest_len, 0);
+ RETVAL_STRINGL(dest, dest_len);
+ efree(dest);
}
}
/* }}} */
size = (bzs.total_out_hi32 * (unsigned int) -1) + bzs.total_out_lo32;
dest = safe_erealloc(dest, 1, (size_t) size, 1);
dest[size] = '\0';
- RETVAL_STRINGL(dest, (int) size, 0);
+ RETVAL_STRINGL(dest, (int) size);
+ efree(dest);
} else { /* real error */
efree(dest);
RETVAL_LONG(error);
return;
}
- php_stream_from_zval(stream, &bzp);
+ php_stream_from_zval(stream, bzp);
if (!php_stream_is(stream, PHP_STREAM_IS_BZIP2)) {
RETURN_FALSE;
RETURN_LONG(errnum);
break;
case PHP_BZ_ERRSTR:
- RETURN_STRING((char*)errstr, 1);
+ RETURN_STRING((char*)errstr);
break;
case PHP_BZ_ERRBOTH:
array_init(return_value);
php_stream_filter_status_t exit_status = PSFS_FEED_ME;
bz_stream *streamp;
- if (!thisfilter || !thisfilter->abstract) {
+ if (!Z_PTR(thisfilter->abstract)) {
/* Should never happen */
return PSFS_ERR_FATAL;
}
- data = (php_bz2_filter_data *)(thisfilter->abstract);
+ data = (php_bz2_filter_data *)Z_PTR(thisfilter->abstract);
streamp = &(data->strm);
while (buckets_in->head) {
static void php_bz2_decompress_dtor(php_stream_filter *thisfilter TSRMLS_DC)
{
- if (thisfilter && thisfilter->abstract) {
- php_bz2_filter_data *data = thisfilter->abstract;
+ if (thisfilter && Z_PTR(thisfilter->abstract)) {
+ php_bz2_filter_data *data = Z_PTR(thisfilter->abstract);
if (data->status == PHP_BZ2_RUNNING) {
BZ2_bzDecompressEnd(&(data->strm));
}
int status;
php_stream_filter_status_t exit_status = PSFS_FEED_ME;
- if (!thisfilter || !thisfilter->abstract) {
+ if (!Z_PTR(thisfilter->abstract)) {
/* Should never happen */
return PSFS_ERR_FATAL;
}
- data = (php_bz2_filter_data *)(thisfilter->abstract);
+ data = (php_bz2_filter_data *)Z_PTR(thisfilter->abstract);
while (buckets_in->head) {
size_t bin = 0, desired;
static void php_bz2_compress_dtor(php_stream_filter *thisfilter TSRMLS_DC)
{
- if (thisfilter && thisfilter->abstract) {
- php_bz2_filter_data *data = thisfilter->abstract;
+ if (Z_PTR(thisfilter->abstract)) {
+ php_bz2_filter_data *data = Z_PTR(thisfilter->abstract);
BZ2_bzCompressEnd(&(data->strm));
pefree(data->inbuf, data->persistent);
pefree(data->outbuf, data->persistent);
data->expect_concatenated = 0;
if (filterparams) {
- zval **tmpzval = NULL;
+ zval *tmpzval = NULL;
if (Z_TYPE_P(filterparams) == IS_ARRAY || Z_TYPE_P(filterparams) == IS_OBJECT) {
-
- if (SUCCESS == zend_hash_find(HASH_OF(filterparams), "concatenated", sizeof("concatenated"), (void **) &tmpzval) ) {
- zval tmp, *tmp2;
-
- tmp = **tmpzval;
- zval_copy_ctor(&tmp);
- tmp2 = &tmp;
- convert_to_boolean_ex(&tmp2);
- data->expect_concatenated = Z_TMP(tmp) == IS_TRUE;
+ if ((tmpzval = zend_hash_str_find(HASH_OF(filterparams), "concatenated", sizeof("concatenated")-1))) {
+ data->expect_concatenated = zend_is_true(tmpzval TSRMLS_CC);
tmpzval = NULL;
}
- zend_hash_find(HASH_OF(filterparams), "small", sizeof("small"), (void **) &tmpzval);
+ tmpzval = zend_hash_str_find(HASH_OF(filterparams), "small", sizeof("small")-1);
} else {
- tmpzval = &filterparams;
+ tmpzval = filterparams;
}
if (tmpzval) {
- zval tmp, *tmp2;
-
- tmp = **tmpzval;
- zval_copy_ctor(&tmp);
- tmp2 = &tmp;
- convert_to_boolean_ex(&tmp2);
- data->small_footprint = Z_TYPE(tmp) == IS_TRUE;
+ data->small_footprint = zend_is_true(tmpzval TSRMLS_CC);
}
}
int workFactor = PHP_BZ2_FILTER_DEFAULT_WORKFACTOR;
if (filterparams) {
- zval **tmpzval;
+ zval *tmpzval;
if (Z_TYPE_P(filterparams) == IS_ARRAY || Z_TYPE_P(filterparams) == IS_OBJECT) {
- if (zend_hash_find(HASH_OF(filterparams), "blocks", sizeof("blocks"), (void**) &tmpzval) == SUCCESS) {
+ if ((tmpzval = zend_hash_str_find(HASH_OF(filterparams), "blocks", sizeof("blocks")-1))) {
/* How much memory to allocate (1 - 9) x 100kb */
zval tmp;
- tmp = **tmpzval;
+ tmp = *tmpzval;
zval_copy_ctor(&tmp);
convert_to_long(&tmp);
if (Z_LVAL(tmp) < 1 || Z_LVAL(tmp) > 9) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter given for number of blocks to allocate. (%ld)", Z_LVAL_PP(tmpzval));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter given for number of blocks to allocate. (%ld)", Z_LVAL_P(tmpzval));
} else {
blockSize100k = Z_LVAL(tmp);
}
}
- if (zend_hash_find(HASH_OF(filterparams), "work", sizeof("work"), (void**) &tmpzval) == SUCCESS) {
+ if ((tmpzval = zend_hash_str_find(HASH_OF(filterparams), "work", sizeof("work")-1))) {
/* Work Factor (0 - 250) */
zval tmp;
- tmp = **tmpzval;
+ tmp = *tmpzval;
zval_copy_ctor(&tmp);
convert_to_long(&tmp);
string(10) "DATA_ERROR"
int(-4)
-Warning: bzread(): %d is not a valid stream resource in %s on line %d
+Warning: bzread(): supplied resource is not a valid stream resource in %s on line %d
bool(false)
-Warning: bzerror(): %d is not a valid stream resource in %s on line %d
+Warning: bzerror(): supplied resource is not a valid stream resource in %s on line %d
bool(false)
-Warning: bzerrstr(): %d is not a valid stream resource in %s on line %d
+Warning: bzerrstr(): supplied resource is not a valid stream resource in %s on line %d
bool(false)
-Warning: bzerrno(): %d is not a valid stream resource in %s on line %d
+Warning: bzerrno(): supplied resource is not a valid stream resource in %s on line %d
bool(false)
Done