From e97d954577fe0036e8e3f8ba06a19ba04dc6aef0 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 7 Feb 2022 16:59:35 +0100 Subject: add fix from https://github.com/eduardok/libsmbclient-php/pull/94 --- .gitignore | 2 +- REFLECTION | 111 ++++--- php-smbclient.spec | 16 +- smbclient-stub.patch | 881 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 964 insertions(+), 46 deletions(-) create mode 100644 smbclient-stub.patch diff --git a/.gitignore b/.gitignore index 0137d58..b127d9a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ clog -libsmbclient-php-phpunit.xml +smbclient-phpunit.xml package-*.xml *.tgz *.tar.bz2 diff --git a/REFLECTION b/REFLECTION index 87e281b..5742b34 100644 --- a/REFLECTION +++ b/REFLECTION @@ -38,11 +38,13 @@ Extension [ extension #120 smbclient version 1.0.6 ] { - Parameters [0] { } + - Return [ string ] } Function [ function smbclient_library_version ] { - Parameters [0] { } + - Return [ string ] } Function [ function smbclient_state_new ] { @@ -53,35 +55,38 @@ Extension [ extension #120 smbclient version 1.0.6 ] { - Parameters [4] { Parameter #0 [ $state ] - Parameter #1 [ $workgroup = ] - Parameter #2 [ $user = ] - Parameter #3 [ $password = ] + Parameter #1 [ string $workgroup = null ] + Parameter #2 [ string $user = null ] + Parameter #3 [ string $password = null ] } + - Return [ bool ] } Function [ function smbclient_state_errno ] { - Parameters [1] { Parameter #0 [ $state ] } + - Return [ int ] } Function [ function smbclient_state_free ] { - Parameters [1] { Parameter #0 [ $state ] } + - Return [ bool ] } Function [ function smbclient_option_get ] { - Parameters [2] { Parameter #0 [ $state ] - Parameter #1 [ $option ] + Parameter #1 [ int $option ] } } Function [ function smbclient_option_set ] { - Parameters [3] { Parameter #0 [ $state ] - Parameter #1 [ $option ] + Parameter #1 [ int $option ] Parameter #2 [ $value ] } } @@ -89,15 +94,16 @@ Extension [ extension #120 smbclient version 1.0.6 ] { - Parameters [3] { Parameter #0 [ $state ] - Parameter #1 [ $minproto = ] - Parameter #2 [ $maxproto = ] + Parameter #1 [ string $minproto = null ] + Parameter #2 [ string $maxproto = null ] } + - Return [ bool ] } Function [ function smbclient_opendir ] { - Parameters [2] { Parameter #0 [ $state ] - Parameter #1 [ $path ] + Parameter #1 [ string $path ] } } Function [ function smbclient_readdir ] { @@ -106,6 +112,7 @@ Extension [ extension #120 smbclient version 1.0.6 ] { Parameter #0 [ $state ] Parameter #1 [ $dir ] } + - Return [ array|false ] } Function [ function smbclient_closedir ] { @@ -113,13 +120,15 @@ Extension [ extension #120 smbclient version 1.0.6 ] { Parameter #0 [ $state ] Parameter #1 [ $dir ] } + - Return [ bool ] } Function [ function smbclient_stat ] { - Parameters [2] { Parameter #0 [ $state ] - Parameter #1 [ $path ] + Parameter #1 [ string $path ] } + - Return [ array|false ] } Function [ function smbclient_fstat ] { @@ -127,22 +136,23 @@ Extension [ extension #120 smbclient version 1.0.6 ] { Parameter #0 [ $state ] Parameter #1 [ $file ] } + - Return [ array|false ] } Function [ function smbclient_open ] { - Parameters [4] { Parameter #0 [ $state ] - Parameter #1 [ $path ] - Parameter #2 [ $flags ] - Parameter #3 [ $mode = ] + Parameter #1 [ string $path ] + Parameter #2 [ string $flags ] + Parameter #3 [ int $mode = 0666 ] } } Function [ function smbclient_creat ] { - Parameters [3] { Parameter #0 [ $state ] - Parameter #1 [ $path ] - Parameter #2 [ $mode = ] + Parameter #1 [ string $path ] + Parameter #2 [ int $mode = 0666 ] } } Function [ function smbclient_read ] { @@ -150,8 +160,9 @@ Extension [ extension #120 smbclient version 1.0.6 ] { - Parameters [3] { Parameter #0 [ $state ] Parameter #1 [ $file ] - Parameter #2 [ $count ] + Parameter #2 [ int $count ] } + - Return [ string|false ] } Function [ function smbclient_close ] { @@ -159,120 +170,135 @@ Extension [ extension #120 smbclient version 1.0.6 ] { Parameter #0 [ $state ] Parameter #1 [ $file ] } + - Return [ bool ] } Function [ function smbclient_mkdir ] { - Parameters [3] { Parameter #0 [ $state ] - Parameter #1 [ $path ] - Parameter #2 [ $mode = ] + Parameter #1 [ string $path ] + Parameter #2 [ int $mode = 0666 ] } + - Return [ bool ] } Function [ function smbclient_rmdir ] { - Parameters [2] { Parameter #0 [ $state ] - Parameter #1 [ $path ] + Parameter #1 [ string $path ] } + - Return [ bool ] } Function [ function smbclient_rename ] { - Parameters [4] { Parameter #0 [ $oldstate ] - Parameter #1 [ $oldpath ] - Parameter #2 [ $oldstate ] - Parameter #3 [ $oldpath ] + Parameter #1 [ string $oldpath ] + Parameter #2 [ $newstate ] + Parameter #3 [ string $newpath ] } + - Return [ bool ] } Function [ function smbclient_write ] { - Parameters [4] { Parameter #0 [ $state ] Parameter #1 [ $file ] - Parameter #2 [ $buffer ] - Parameter #3 [ $count = ] + Parameter #2 [ string $buffer ] + Parameter #3 [ int $count = 0 ] } + - Return [ int|false ] } Function [ function smbclient_unlink ] { - Parameters [2] { Parameter #0 [ $state ] - Parameter #1 [ $path ] + Parameter #1 [ string $path ] } + - Return [ bool ] } Function [ function smbclient_lseek ] { - Parameters [4] { Parameter #0 [ $state ] Parameter #1 [ $file ] - Parameter #2 [ $offset ] - Parameter #3 [ $whence ] + Parameter #2 [ int $offset ] + Parameter #3 [ int $whence ] } + - Return [ int|false ] } Function [ function smbclient_ftruncate ] { - Parameters [3] { Parameter #0 [ $state ] Parameter #1 [ $file ] - Parameter #2 [ $offset ] + Parameter #2 [ int $offset ] } + - Return [ bool ] } Function [ function smbclient_chmod ] { - Parameters [3] { Parameter #0 [ $state ] - Parameter #1 [ $path ] - Parameter #2 [ $mode = ] + Parameter #1 [ string $path ] + Parameter #2 [ int $mode ] } + - Return [ bool ] } Function [ function smbclient_utimes ] { - Parameters [4] { Parameter #0 [ $state ] - Parameter #1 [ $path ] - Parameter #2 [ $mtime ] - Parameter #3 [ $atime ] + Parameter #1 [ string $path ] + Parameter #2 [ int $mtime = -1 ] + Parameter #3 [ int $atime = -1 ] } + - Return [ bool ] } Function [ function smbclient_listxattr ] { - Parameters [2] { Parameter #0 [ $state ] - Parameter #1 [ $path ] + Parameter #1 [ string $path ] } + - Return [ array|false ] } Function [ function smbclient_getxattr ] { - Parameters [3] { Parameter #0 [ $state ] - Parameter #1 [ $path ] - Parameter #2 [ $name ] + Parameter #1 [ string $path ] + Parameter #2 [ string $name ] } + - Return [ string|false ] } Function [ function smbclient_setxattr ] { - Parameters [5] { Parameter #0 [ $state ] - Parameter #1 [ $path ] - Parameter #2 [ $name ] - Parameter #3 [ $value ] - Parameter #4 [ $flags = ] + Parameter #1 [ string $path ] + Parameter #2 [ string $name ] + Parameter #3 [ string $value ] + Parameter #4 [ int $flags = 0 ] } + - Return [ string|false ] } Function [ function smbclient_removexattr ] { - Parameters [3] { Parameter #0 [ $state ] - Parameter #1 [ $path ] - Parameter #2 [ $name ] + Parameter #1 [ string $path ] + Parameter #2 [ string $name ] } + - Return [ bool ] } Function [ function smbclient_statvfs ] { - Parameters [2] { Parameter #0 [ $state ] - Parameter #1 [ $path ] + Parameter #1 [ string $path ] } + - Return [ array|false ] } Function [ function smbclient_fstatvfs ] { @@ -280,6 +306,7 @@ Extension [ extension #120 smbclient version 1.0.6 ] { Parameter #0 [ $state ] Parameter #1 [ $file ] } + - Return [ array|false ] } } } diff --git a/php-smbclient.spec b/php-smbclient.spec index 4008a72..6a7fcde 100644 --- a/php-smbclient.spec +++ b/php-smbclient.spec @@ -1,6 +1,6 @@ # remirepo spec file for php-smbclient # -# Copyright (c) 2015-2020 Remi Collet +# Copyright (c) 2015-2022 Remi Collet # License: CC-BY-SA # http://creativecommons.org/licenses/by-sa/4.0/ # @@ -39,7 +39,7 @@ Version: 1.0.6 %if 0%{?gh_date} Release: 0.9.%{gh_date}git%{gh_short}%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} %else -Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} +Release: 6%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} %endif Summary: PHP wrapper for libsmbclient @@ -52,9 +52,11 @@ Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit Source0: https://pecl.php.net/get/%{pecl_name}-%{version}%{?prever}.tgz %endif %if %{with_tests} -Source2: %{gh_project}-phpunit.xml +Source2: %{pecl_name}-phpunit.xml %endif +Patch0: %{pecl_name}-stub.patch + BuildRequires: %{?dtsprefix}gcc BuildRequires: %{?scl_prefix}php-devel BuildRequires: %{?scl_prefix}php-pear @@ -101,6 +103,9 @@ Obsoletes: php74-pecl-%{pecl_name} <= %{version} %if "%{php_version}" > "8.0" Obsoletes: php80-pecl-%{pecl_name} <= %{version} %endif +%if "%{php_version}" > "8.1" +Obsoletes: php81-pecl-%{pecl_name} <= %{version} +%endif %endif @@ -127,6 +132,8 @@ sed -e 's/role="test"/role="src"/' \ -i package.xml cd NTS +%patch0 -p1 + # Check extension version ver=$(sed -n '/define PHP_SMBCLIENT_VERSION/{s/.* "//;s/".*$//;p}' php_smbclient.h) if test "$ver" != "%{version}%{?prever}%{?gh_date:-dev}"; then @@ -244,6 +251,9 @@ fi %changelog +* Mon Feb 7 2022 Remi Collet - 1.0.6-6 +- add fix from https://github.com/eduardok/libsmbclient-php/pull/94 + * Mon Mar 1 2021 Remi Collet - 1.0.6-1 - update to 1.0.6 diff --git a/smbclient-stub.patch b/smbclient-stub.patch new file mode 100644 index 0000000..571ad1f --- /dev/null +++ b/smbclient-stub.patch @@ -0,0 +1,881 @@ +From 4b17fed6363c109ef34baebce1e367acd97a3c13 Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Mon, 7 Feb 2022 16:43:42 +0100 +Subject: [PATCH] generate arginfo from stub - fix smbclient_rename parameters + name - fix smbclient_chmod, mode is required - fix smbclient_utimes: mtime + and atime are optional + +--- + package.xml | 3 + + smbclient.c | 164 +----------------------- + smbclient.stub.php | 189 ++++++++++++++++++++++++++++ + smbclient_arginfo.h | 249 +++++++++++++++++++++++++++++++++++++ + smbclient_legacy_arginfo.h | 226 +++++++++++++++++++++++++++++++++ + 5 files changed, 671 insertions(+), 160 deletions(-) + create mode 100644 smbclient.stub.php + create mode 100644 smbclient_arginfo.h + create mode 100644 smbclient_legacy_arginfo.h + +diff --git a/smbclient.c b/smbclient.c +index a63bad4..6b98693 100644 +--- a/smbclient.c ++++ b/smbclient.c +@@ -147,172 +147,16 @@ hide_password (char *url, int len) + astfill(second_colon + 1, at_sign - 1); + } + +-/* {{{ arginfo */ +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_void, 0) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_state_init, 0, 0, 1) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, workgroup) +- ZEND_ARG_INFO(0, user) +- ZEND_ARG_INFO(0, password) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_state, 0) +- ZEND_ARG_INFO(0, state) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_option_get, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, option) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_option_set, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, option) +- ZEND_ARG_INFO(0, value) +-ZEND_END_ARG_INFO() +- +-#if HAVE_SMBC_SETOPTIONPROTOCOLS +-ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_client_protocols, 0, 0, 1) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, minproto) +- ZEND_ARG_INFO(0, maxproto) +-ZEND_END_ARG_INFO() +-#endif +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_path, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, path) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_rename, 0) +- ZEND_ARG_INFO(0, oldstate) +- ZEND_ARG_INFO(0, oldpath) +- ZEND_ARG_INFO(0, oldstate) +- ZEND_ARG_INFO(0, oldpath) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_dir, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, dir) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_file, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, file) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_read, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, file) +- ZEND_ARG_INFO(0, count) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_open, 0, 0, 3) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, path) +- ZEND_ARG_INFO(0, flags) +- ZEND_ARG_INFO(0, mode) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_creat, 0, 0, 2) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, path) +- ZEND_ARG_INFO(0, mode) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_write, 0, 0, 3) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, file) +- ZEND_ARG_INFO(0, buffer) +- ZEND_ARG_INFO(0, count) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_lseek, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, file) +- ZEND_ARG_INFO(0, offset) +- ZEND_ARG_INFO(0, whence) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_ftruncate, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, file) +- ZEND_ARG_INFO(0, offset) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_utimes, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, path) +- ZEND_ARG_INFO(0, mtime) +- ZEND_ARG_INFO(0, atime) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO(arginfo_smbclient_getxattr, 0) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, path) +- ZEND_ARG_INFO(0, name) +-ZEND_END_ARG_INFO() +- +-ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_setxattr, 0, 0, 4) +- ZEND_ARG_INFO(0, state) +- ZEND_ARG_INFO(0, path) +- ZEND_ARG_INFO(0, name) +- ZEND_ARG_INFO(0, value) +- ZEND_ARG_INFO(0, flags) +-ZEND_END_ARG_INFO() +- +-/* }}} */ +- +-static zend_function_entry smbclient_functions[] = +-{ +- PHP_FE(smbclient_version, arginfo_smbclient_void) +- PHP_FE(smbclient_library_version, arginfo_smbclient_void) +- PHP_FE(smbclient_state_new, arginfo_smbclient_void) +- PHP_FE(smbclient_state_init, arginfo_smbclient_state_init) +- PHP_FE(smbclient_state_errno, arginfo_smbclient_state) +- PHP_FE(smbclient_state_free, arginfo_smbclient_state) +- PHP_FE(smbclient_option_get, arginfo_smbclient_option_get) +- PHP_FE(smbclient_option_set, arginfo_smbclient_option_set) +-#if HAVE_SMBC_SETOPTIONPROTOCOLS +- PHP_FE(smbclient_client_protocols, arginfo_smbclient_client_protocols) +-#endif +- PHP_FE(smbclient_opendir, arginfo_smbclient_path) +- PHP_FE(smbclient_readdir, arginfo_smbclient_dir) +- PHP_FE(smbclient_closedir, arginfo_smbclient_dir) +- PHP_FE(smbclient_stat, arginfo_smbclient_path) +- PHP_FE(smbclient_fstat, arginfo_smbclient_file) +- PHP_FE(smbclient_open, arginfo_smbclient_open) +- PHP_FE(smbclient_creat, arginfo_smbclient_creat) +- PHP_FE(smbclient_read, arginfo_smbclient_read) +- PHP_FE(smbclient_close, arginfo_smbclient_file) +- PHP_FE(smbclient_mkdir, arginfo_smbclient_creat) +- PHP_FE(smbclient_rmdir, arginfo_smbclient_path) +- PHP_FE(smbclient_rename, arginfo_smbclient_rename) +- PHP_FE(smbclient_write, arginfo_smbclient_write) +- PHP_FE(smbclient_unlink, arginfo_smbclient_path) +- PHP_FE(smbclient_lseek, arginfo_smbclient_lseek) +- PHP_FE(smbclient_ftruncate, arginfo_smbclient_ftruncate) +- PHP_FE(smbclient_chmod, arginfo_smbclient_creat) +- PHP_FE(smbclient_utimes, arginfo_smbclient_utimes) +- PHP_FE(smbclient_listxattr, arginfo_smbclient_path) +- PHP_FE(smbclient_getxattr, arginfo_smbclient_getxattr) +- PHP_FE(smbclient_setxattr, arginfo_smbclient_setxattr) +- PHP_FE(smbclient_removexattr, arginfo_smbclient_getxattr) +- PHP_FE(smbclient_statvfs, arginfo_smbclient_path) +- PHP_FE(smbclient_fstatvfs, arginfo_smbclient_file) +-#ifdef PHP_FE_END +- PHP_FE_END ++#if PHP_VERSION_ID < 80000 ++#include "smbclient_legacy_arginfo.h" + #else +- {NULL, NULL, NULL} ++#include "smbclient_arginfo.h" + #endif +-}; + + zend_module_entry smbclient_module_entry = + { STANDARD_MODULE_HEADER + , "smbclient" /* name */ +- , smbclient_functions /* functions */ ++ , ext_functions /* functions */ + , PHP_MINIT(smbclient) /* module_startup_func */ + , PHP_MSHUTDOWN(smbclient) /* module_shutdown_func */ + , PHP_RINIT(smbclient) /* request_startup_func */ +diff --git a/smbclient.stub.php b/smbclient.stub.php +new file mode 100644 +index 0000000..65f5fad +--- /dev/null ++++ b/smbclient.stub.php +@@ -0,0 +1,189 @@ ++