summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/zlib/zlib.c140
-rw-r--r--ext/zlib/zlib.stub.php131
-rw-r--r--ext/zlib/zlib_arginfo.h116
3 files changed, 254 insertions, 133 deletions
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 1492cd45ca..8ccbcfee35 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -31,6 +31,7 @@
#include "ext/standard/file.h"
#include "ext/standard/php_string.h"
#include "php_zlib.h"
+#include "zlib_arginfo.h"
/*
* zlib include files can define the following preprocessor defines which rename
@@ -1252,147 +1253,20 @@ ZEND_TSRMLS_CACHE_DEFINE()
ZEND_GET_MODULE(php_zlib)
#endif
-/* {{{ arginfo */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_ob_gzhandler, 0, 0, 2)
- ZEND_ARG_INFO(0, data)
- ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_zlib_get_coding_type, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzfile, 0, 0, 1)
- ZEND_ARG_INFO(0, filename)
- ZEND_ARG_INFO(0, use_include_path)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzopen, 0, 0, 2)
- ZEND_ARG_INFO(0, filename)
- ZEND_ARG_INFO(0, mode)
- ZEND_ARG_INFO(0, use_include_path)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_readgzfile, 0, 0, 1)
- ZEND_ARG_INFO(0, filename)
- ZEND_ARG_INFO(0, use_include_path)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_zlib_encode, 0, 0, 2)
- ZEND_ARG_INFO(0, data)
- ZEND_ARG_INFO(0, encoding)
- ZEND_ARG_INFO(0, level)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_zlib_decode, 0, 0, 1)
- ZEND_ARG_INFO(0, data)
- ZEND_ARG_INFO(0, max_decoded_len)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzdeflate, 0, 0, 1)
- ZEND_ARG_INFO(0, data)
- ZEND_ARG_INFO(0, level)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzencode, 0, 0, 1)
- ZEND_ARG_INFO(0, data)
- ZEND_ARG_INFO(0, level)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzcompress, 0, 0, 1)
- ZEND_ARG_INFO(0, data)
- ZEND_ARG_INFO(0, level)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzinflate, 0, 0, 1)
- ZEND_ARG_INFO(0, data)
- ZEND_ARG_INFO(0, max_decoded_len)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzdecode, 0, 0, 1)
- ZEND_ARG_INFO(0, data)
- ZEND_ARG_INFO(0, max_decoded_len)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzuncompress, 0, 0, 1)
- ZEND_ARG_INFO(0, data)
- ZEND_ARG_INFO(0, max_decoded_len)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzputs, 0, 0, 2)
- ZEND_ARG_INFO(0, fp)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, length)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_gzpassthru, 0)
- ZEND_ARG_INFO(0, fp)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzseek, 0, 0, 2)
- ZEND_ARG_INFO(0, fp)
- ZEND_ARG_INFO(0, offset)
- ZEND_ARG_INFO(0, whence)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_gzread, 0)
- ZEND_ARG_INFO(0, fp)
- ZEND_ARG_INFO(0, length)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_gzgets, 0, 0, 1)
- ZEND_ARG_INFO(0, fp)
- ZEND_ARG_INFO(0, length)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_deflate_init, 0, 0, 1)
- ZEND_ARG_INFO(0, encoding)
- ZEND_ARG_INFO(0, level)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_deflate_add, 0, 0, 2)
- ZEND_ARG_INFO(0, resource)
- ZEND_ARG_INFO(0, add)
- ZEND_ARG_INFO(0, flush_behavior)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_inflate_init, 0, 0, 1)
- ZEND_ARG_INFO(0, encoding)
- ZEND_ARG_INFO(0, options)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_inflate_add, 0, 0, 2)
- ZEND_ARG_INFO(0, context)
- ZEND_ARG_INFO(0, encoded_data)
- ZEND_ARG_INFO(0, flush_mode)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_inflate_get_status, 0, 0, 1)
- ZEND_ARG_INFO(0, resource)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_inflate_get_read_len, 0, 0, 1)
- ZEND_ARG_INFO(0, resource)
-ZEND_END_ARG_INFO()
-
-/* }}} */
-
/* {{{ php_zlib_functions[] */
static const zend_function_entry php_zlib_functions[] = {
PHP_FE(readgzfile, arginfo_readgzfile)
- PHP_FALIAS(gzrewind, rewind, arginfo_gzpassthru)
- PHP_FALIAS(gzclose, fclose, arginfo_gzpassthru)
- PHP_FALIAS(gzeof, feof, arginfo_gzpassthru)
- PHP_FALIAS(gzgetc, fgetc, arginfo_gzpassthru)
+ PHP_FALIAS(gzrewind, rewind, arginfo_gzrewind)
+ PHP_FALIAS(gzclose, fclose, arginfo_gzclose)
+ PHP_FALIAS(gzeof, feof, arginfo_gzeof)
+ PHP_FALIAS(gzgetc, fgetc, arginfo_gzgetc)
PHP_FALIAS(gzgets, fgets, arginfo_gzgets)
PHP_FALIAS(gzread, fread, arginfo_gzread)
PHP_FE(gzopen, arginfo_gzopen)
PHP_FALIAS(gzpassthru, fpassthru, arginfo_gzpassthru)
PHP_FALIAS(gzseek, fseek, arginfo_gzseek)
- PHP_FALIAS(gztell, ftell, arginfo_gzpassthru)
- PHP_FALIAS(gzwrite, fwrite, arginfo_gzputs)
+ PHP_FALIAS(gztell, ftell, arginfo_gztell)
+ PHP_FALIAS(gzwrite, fwrite, arginfo_gzwrite)
PHP_FALIAS(gzputs, fwrite, arginfo_gzputs)
PHP_FE(gzfile, arginfo_gzfile)
PHP_FE(gzcompress, arginfo_gzcompress)
diff --git a/ext/zlib/zlib.stub.php b/ext/zlib/zlib.stub.php
new file mode 100644
index 0000000000..9b3fb04be4
--- /dev/null
+++ b/ext/zlib/zlib.stub.php
@@ -0,0 +1,131 @@
+<?php
+
+/** @return string|false */
+function ob_gzhandler(string $data, int $flags) {}
+
+/** @return string|false */
+function zlib_get_coding_type() {}
+
+/** @return array|false */
+function gzfile(string $filename, int $use_include_path = 0) {}
+
+/** @return resource|false */
+function gzopen(string $filename, string $mode, int $use_include_path = 0) {}
+
+/** @return int|false */
+function readgzfile(string $filename, int $use_include_path = 0) {}
+
+/** @return string|false */
+function zlib_encode(string $data, int $encoding, int $level = -1) {}
+
+/** @return string|false */
+function zlib_decode(string $data, int $max_decoded_len = 0) {}
+
+/** @return string|false */
+function gzdeflate(string $data, int $level = -1, int $encoding = ZLIB_ENCODING_RAW) {}
+
+/** @return string|false */
+function gzencode(string $data, int $level = -1, int $encoding = ZLIB_ENCODING_GZIP) {}
+
+/** @return string|false */
+function gzcompress(string $data, int $level = -1, int $encoding = ZLIB_ENCODING_DEFLATE) {}
+
+/** @return string|false */
+function gzinflate(string $data, int $max_decoded_len = 0) {}
+
+/** @return string|false */
+function gzdecode(string $data, int $max_decoded_len = 0) {}
+
+/** @return string|false */
+function gzuncompress(string $data, int $max_decoded_len = 0) {}
+
+/**
+ * @param resource $fp
+ *
+ * @return int|false
+ */
+function gzwrite($fp, string $str, int $length = UNKNOWN) {};
+
+/**
+ * @param resource $fp
+ *
+ * @return int|false
+ */
+function gzputs($fp, string $str, int $length = UNKNOWN) {};
+
+/** @param resource $fp */
+function gzrewind($fp): bool {};
+
+/** @param resource $fp */
+function gzclose($fp): bool {};
+
+/** @param resource $fp */
+function gzeof($fp): bool {};
+
+/**
+ * @param resource $fp
+ *
+ * @return string|false
+ */
+function gzgetc($fp) {};
+
+/** @param resource $fp */
+function gzpassthru($fp): int {};
+
+/** @param resource $fp */
+function gzseek($fp, int $offset, int $whence = SEEK_SET): int {};
+
+/**
+ * @param resource $fp
+ *
+ * @return int|false
+ */
+function gztell($fp) {};
+
+/**
+ * @param resource $fp
+ *
+ * @return string|false
+ */
+function gzread($fp, int $length) {};
+
+/**
+ * @param resource $fp
+ *
+ * @return string|false
+ */
+function gzgets($fp, int $length = 1024) {};
+
+/** @return resource|false */
+function deflate_init(int $encoding, array $options = []) {};
+
+/**
+ * @param resource $resource
+ *
+ * @return string|false
+ */
+function deflate_add($resource, string $add, int $flush_behavior = ZLIB_SYNC_FLUSH) {};
+
+/** @return resource|false */
+function inflate_init(int $encoding, array $options = []) {};
+
+/**
+ * @param resource $context
+ *
+ * @return string|false
+ */
+function inflate_add($context, string $encoded_data, int $flush_mode = ZLIB_SYNC_FLUSH) {};
+
+/**
+ * @param resource $resource
+ *
+ * @return int|false
+ */
+function inflate_get_status($resource) {};
+
+/**
+ * @param resource $resource
+ *
+ * @return int|false
+ */
+function inflate_get_read_len($resource) {};
diff --git a/ext/zlib/zlib_arginfo.h b/ext/zlib/zlib_arginfo.h
new file mode 100644
index 0000000000..46b9e74608
--- /dev/null
+++ b/ext/zlib/zlib_arginfo.h
@@ -0,0 +1,116 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ob_gzhandler, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_zlib_get_coding_type, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_gzfile, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, use_include_path, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_gzopen, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, mode, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, use_include_path, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_readgzfile arginfo_gzfile
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_zlib_encode, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, level, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_zlib_decode, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, max_decoded_len, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_gzdeflate, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, level, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_gzencode arginfo_gzdeflate
+
+#define arginfo_gzcompress arginfo_gzdeflate
+
+#define arginfo_gzinflate arginfo_zlib_decode
+
+#define arginfo_gzdecode arginfo_zlib_decode
+
+#define arginfo_gzuncompress arginfo_zlib_decode
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_gzwrite, 0, 0, 2)
+ ZEND_ARG_INFO(0, fp)
+ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_gzputs arginfo_gzwrite
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gzrewind, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, fp)
+ZEND_END_ARG_INFO()
+
+#define arginfo_gzclose arginfo_gzrewind
+
+#define arginfo_gzeof arginfo_gzrewind
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_gzgetc, 0, 0, 1)
+ ZEND_ARG_INFO(0, fp)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gzpassthru, 0, 1, IS_LONG, 0)
+ ZEND_ARG_INFO(0, fp)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gzseek, 0, 2, IS_LONG, 0)
+ ZEND_ARG_INFO(0, fp)
+ ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, whence, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_gztell arginfo_gzgetc
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_gzread, 0, 0, 2)
+ ZEND_ARG_INFO(0, fp)
+ ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_gzgets, 0, 0, 1)
+ ZEND_ARG_INFO(0, fp)
+ ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_deflate_init, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, options, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_deflate_add, 0, 0, 2)
+ ZEND_ARG_INFO(0, resource)
+ ZEND_ARG_TYPE_INFO(0, add, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, flush_behavior, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_inflate_init arginfo_deflate_init
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_inflate_add, 0, 0, 2)
+ ZEND_ARG_INFO(0, context)
+ ZEND_ARG_TYPE_INFO(0, encoded_data, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, flush_mode, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_inflate_get_status, 0, 0, 1)
+ ZEND_ARG_INFO(0, resource)
+ZEND_END_ARG_INFO()
+
+#define arginfo_inflate_get_read_len arginfo_inflate_get_status