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 @@ +