cvs: php4 /ext/bz2 bz2.c php_bz2.h
| From: | Wez Furlong | Date: | Thu, 04 Apr 2002 15:24:38 +0000 |
| Subject: | cvs: php4 /ext/bz2 bz2.c php_bz2.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-10862@lists.php.net to get a copy of this message | ||
wez Thu Apr 4 10:24:38 2002 EDT
Modified files:
/php4/ext/bz2 bz2.c php_bz2.h
Log:
Fix #16428 problems.
Renamed the bz2 wrapper to bzip2://
# Thanks for the test case Jani!
Index: php4/ext/bz2/bz2.c
diff -u php4/ext/bz2/bz2.c:1.44 php4/ext/bz2/bz2.c:1.45
--- php4/ext/bz2/bz2.c:1.44 Sun Mar 24 13:04:47 2002
+++ php4/ext/bz2/bz2.c Thu Apr 4 10:24:37 2002
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: bz2.c,v 1.44 2002/03/24 18:04:47 wez Exp $ */
+/* $Id: bz2.c,v 1.45 2002/04/04 15:24:37 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -30,6 +30,7 @@
/* PHP Includes */
#include "ext/standard/file.h"
#include "ext/standard/info.h"
+#include "ext/standard/php_string.h"
/* for fileno() */
#include <stdio.h>
@@ -44,7 +45,7 @@
function_entry bz2_functions[] = {
PHP_FE(bzopen, NULL)
- PHP_NAMED_FE(bzread, PHP_FN(fread), NULL)
+ PHP_FE(bzread, NULL)
PHP_NAMED_FE(bzwrite, PHP_FN(fwrite), NULL)
PHP_NAMED_FE(bzflush, PHP_FN(fflush), NULL)
PHP_NAMED_FE(bzclose, PHP_FN(fclose), NULL)
@@ -130,8 +131,9 @@
php_stream_ops php_stream_bz2io_ops = {
php_bz2iop_write, php_bz2iop_read,
php_bz2iop_close, php_bz2iop_flush,
+ "BZip2",
NULL, NULL,
- NULL, "BZip2"
+ NULL, NULL
};
/* {{{ Bzip2 stream openers */
@@ -158,18 +160,18 @@
STREAMS_DC TSRMLS_DC)
{
php_stream *retstream = NULL, *stream = NULL;
- char *path_copy;
- BZFILE *bz_file;
+ char *path_copy = NULL;
+ BZFILE *bz_file = NULL;
- if (strncasecmp("bz2://", path, 6) == 0)
- path += 6;
+ if (strncasecmp("bzip2://", path, 8) == 0)
+ path += 8;
#ifdef VIRTUAL_DIR
virtual_filepath(path, &path_copy TSRMLS_CC);
#else
path_copy = estrdup(path);
#endif
-
+
/* try and open it directly first */
bz_file = BZ2_bzopen(path_copy, mode);
@@ -222,7 +224,7 @@
PHP_MINIT_FUNCTION(bz2)
{
if(PG(allow_url_fopen))
- php_register_url_stream_wrapper("bz2", &php_stream_bzip2_wrapper TSRMLS_CC);
+ php_register_url_stream_wrapper("bzip2", &php_stream_bzip2_wrapper TSRMLS_CC);
return SUCCESS;
}
@@ -230,7 +232,7 @@
PHP_MSHUTDOWN_FUNCTION(bz2)
{
if (PG(allow_url_fopen))
- php_unregister_url_stream_wrapper("bz2" TSRMLS_CC);
+ php_unregister_url_stream_wrapper("bzip2" TSRMLS_CC);
return SUCCESS;
}
@@ -243,6 +245,38 @@
php_info_print_table_end();
}
+/* {{{ proto string bzread(int bz[, int length])
+ Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified */
+PHP_FUNCTION(bzread)
+{
+ zval *bz;
+ int len = 1024;
+ php_stream *stream;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &bz,
&len)) {
+ RETURN_FALSE;
+ }
+
+ ZEND_FETCH_RESOURCE(stream, php_stream *, &bz, -1, "File-Handle",
php_file_le_stream());
+
+ if (len < 0) {
+ zend_error(E_WARNING, "%s(): length may not be negative",
get_active_function_name(TSRMLS_C));
+ 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);
+ Z_STRVAL_P(return_value)[Z_STRLEN_P(return_value)] = 0;
+
+ if (PG(magic_quotes_runtime)) {
+ Z_STRVAL_P(return_value) = php_addslashes(Z_STRVAL_P(return_value),
+ Z_STRLEN_P(return_value), &Z_STRLEN_P(return_value), 1 TSRMLS_CC);
+ }
+ Z_TYPE_P(return_value) = IS_STRING;
+
+}
+/* }}} */
+
/* {{{ proto resource bzopen(string|int file|fp, string mode)
Opens a new BZip2 stream */
PHP_FUNCTION(bzopen)
@@ -251,7 +285,6 @@
**mode; /* The mode to open the stream with */
BZFILE *bz; /* The compressed file stream */
php_stream *stream = NULL;
- char *path;
if (ZEND_NUM_ARGS() != 2 ||
zend_get_parameters_ex(2, &file, &mode) == FAILURE) {
@@ -263,7 +296,7 @@
if (Z_TYPE_PP(file) != IS_RESOURCE) {
convert_to_string_ex(file);
stream = php_stream_bz2open(NULL,
- path,
+ Z_STRVAL_PP(file),
Z_STRVAL_PP(mode),
ENFORCE_SAFE_MODE|REPORT_ERRORS,
NULL);
Index: php4/ext/bz2/php_bz2.h
diff -u php4/ext/bz2/php_bz2.h:1.9 php4/ext/bz2/php_bz2.h:1.10
--- php4/ext/bz2/php_bz2.h:1.9 Sun Mar 24 13:04:48 2002
+++ php4/ext/bz2/php_bz2.h Thu Apr 4 10:24:38 2002
@@ -37,6 +37,7 @@
PHP_MSHUTDOWN_FUNCTION(bz2);
PHP_MINFO_FUNCTION(bz2);
PHP_FUNCTION(bzopen);
+PHP_FUNCTION(bzread);
PHP_FUNCTION(bzerrno);
PHP_FUNCTION(bzerrstr);
PHP_FUNCTION(bzerror);
@@ -51,7 +52,7 @@
PHPAPI php_stream *_php_stream_bz2open_from_BZFILE(BZFILE *bz, char *mode, php_stream *innerstream
STREAMS_DC TSRMLS_DC);
#define php_stream_bz2open_from_BZFILE(bz, mode, innerstream) _php_stream_bz2open_from_BZFILE((bz),
(mode), (innerstream) STREAMS_CC TSRMLS_CC)
-#define php_stream_bz2open(path, mode, options, opened_path,
wrappercontext) _php_stream_bz2open((path), (mode), (options), (opened_path), (wrappercontext)
STREAMS_CC TSRMLS_CC)
+#define php_stream_bz2open(wrapper, path, mode, options,
opened_path) _php_stream_bz2open((wrapper), (path), (mode), (options), (opened_path) STREAMS_CC
TSRMLS_CC)
php_stream_ops php_stream_bz2io_ops;
#define PHP_STREAM_IS_BZIP2 &php_stream_bz2io_ops