summaryrefslogtreecommitdiffstats
path: root/smbclient-stub.patch
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2022-02-07 16:59:35 +0100
committerRemi Collet <remi@php.net>2022-02-07 16:59:35 +0100
commite97d954577fe0036e8e3f8ba06a19ba04dc6aef0 (patch)
tree55d41ea6c725b770748311eb9d2246616073311f /smbclient-stub.patch
parentfa071d556d223882f4bf847701c8d51d3d8e735e (diff)
add fix from https://github.com/eduardok/libsmbclient-php/pull/94
Diffstat (limited to 'smbclient-stub.patch')
-rw-r--r--smbclient-stub.patch881
1 files changed, 881 insertions, 0 deletions
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 <remi@remirepo.net>
+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 @@
++<?php
++
++/**
++ * @generate-function-entries
++ * @generate-legacy-arginfo
++ */
++
++function smbclient_version(): string {}
++
++function smbclient_library_version(): string {}
++
++/**
++ * @return false|resource
++ */
++function smbclient_state_new() {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_state_init($state, string $workgroup=null, string $user=null, string $password=null): bool {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_state_errno($state): int {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_state_free($state): bool {}
++
++/**
++ * @param resource $state
++ * @return mixed
++ */
++function smbclient_option_get($state, int $option) {}
++
++/**
++ * @param resource $state
++ * @param mixed $value
++ * @return mixed
++ */
++function smbclient_option_set($state, int $option, $value) {}
++
++
++#if HAVE_SMBC_SETOPTIONPROTOCOLS
++/**
++ * @param resource $state
++ * @param mixed $value
++ * @return mixed
++ */
++function smbclient_client_protocols($state, string $minproto=null, string $maxproto=null): bool {}
++#endif
++
++/**
++ * @param resource $state
++ * @return false|resource
++ */
++function smbclient_opendir($state, string $path) {}
++
++/**
++ * @param resource $state
++ * @param resource $dir
++ */
++function smbclient_readdir($state, $dir): false|array {}
++
++/**
++ * @param resource $state
++ * @param resource $dir
++ */
++function smbclient_closedir($state, $dir): bool {}
++
++/**
++ * @param resource $state
++ * @return false|resource
++ */
++function smbclient_stat($state, string $path): false|array {}
++
++/**
++ * @param resource $state
++ * @param resource $file
++ */
++function smbclient_fstat($state, $file): false|array {}
++
++/**
++ * @param resource $state
++ * @return false|resource
++ */
++function smbclient_open($state, string $path, string $flags, int $mode=0666) {}
++
++/**
++ * @param resource $state
++ * @return false|resource
++ */
++function smbclient_creat($state, string $path, int $mode=0666) {}
++
++/**
++ * @param resource $state
++ * @param resource $file
++ */
++function smbclient_read($state, $file, int $count): false|string {}
++
++/**
++ * @param resource $state
++ * @param resource $file
++ */
++function smbclient_close($state, $file): bool {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_mkdir($state, string $path, int $mode=0666): bool {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_rmdir($state, string $path): bool {}
++
++/**
++ * @param resource $oldstate
++ * @param resource $newstate
++ */
++function smbclient_rename($oldstate, string $oldpath, $newstate, string $newpath): bool {}
++
++/**
++ * @param resource $state
++ * @param resource $file
++ */
++function smbclient_write($state, $file, string $buffer, int $count=0): false|int {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_unlink($state, string $path): bool {}
++
++/**
++ * @param resource $state
++ * @param resource $file
++ */
++function smbclient_lseek($state, $file, int $offset, int $whence): false|int {}
++
++/**
++ * @param resource $state
++ * @param resource $file
++ */
++function smbclient_ftruncate($state, $file, int $offset): bool {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_chmod($state, string $path, int $mode): bool {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_utimes($state, string $path, int $mtime=-1, int $atime=-1): bool {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_listxattr($state, string $path): false|array {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_getxattr($state, string $path, string $name): false|string {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_setxattr($state, string $path, string $name, string $value, int $flags=0): false|string {}
++
++/**
++ * @param resource $state
++ */
++function smbclient_removexattr($state, string $path, string $name): bool {}
++
++/**
++ * @param resource $state
++ * @return false|resource
++ */
++function smbclient_statvfs($state, string $path): false|array {}
++
++/**
++ * @param resource $state
++ * @param resource $file
++ */
++function smbclient_fstatvfs($state, $file): false|array {}
++
+diff --git a/smbclient_arginfo.h b/smbclient_arginfo.h
+new file mode 100644
+index 0000000..c5f091a
+--- /dev/null
++++ b/smbclient_arginfo.h
+@@ -0,0 +1,249 @@
++/* This is a generated file, edit the .stub.php file instead.
++ * Stub hash: 6abe27ac2cfb259cc835af1bafe32bb639c422b1 */
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_version, 0, 0, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++#define arginfo_smbclient_library_version arginfo_smbclient_version
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_state_new, 0, 0, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_state_init, 0, 1, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, workgroup, IS_STRING, 0, "null")
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, user, IS_STRING, 0, "null")
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, password, IS_STRING, 0, "null")
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_state_errno, 0, 1, IS_LONG, 0)
++ ZEND_ARG_INFO(0, state)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_state_free, 0, 1, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_option_get, 0, 0, 2)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_option_set, 0, 0, 3)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
++ ZEND_ARG_INFO(0, value)
++ZEND_END_ARG_INFO()
++
++#if HAVE_SMBC_SETOPTIONPROTOCOLS
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_client_protocols, 0, 1, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, minproto, IS_STRING, 0, "null")
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, maxproto, IS_STRING, 0, "null")
++ZEND_END_ARG_INFO()
++#endif
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_opendir, 0, 0, 2)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_smbclient_readdir, 0, 2, MAY_BE_FALSE|MAY_BE_ARRAY)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, dir)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_closedir, 0, 2, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, dir)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_smbclient_stat, 0, 2, MAY_BE_FALSE|MAY_BE_ARRAY)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_smbclient_fstat, 0, 2, MAY_BE_FALSE|MAY_BE_ARRAY)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, file)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_open, 0, 0, 3)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, flags, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "0666")
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_creat, 0, 0, 2)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "0666")
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_smbclient_read, 0, 3, MAY_BE_FALSE|MAY_BE_STRING)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, file)
++ ZEND_ARG_TYPE_INFO(0, count, IS_LONG, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_close, 0, 2, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, file)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_mkdir, 0, 2, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "0666")
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_rmdir, 0, 2, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_rename, 0, 4, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, oldstate)
++ ZEND_ARG_TYPE_INFO(0, oldpath, IS_STRING, 0)
++ ZEND_ARG_INFO(0, newstate)
++ ZEND_ARG_TYPE_INFO(0, newpath, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_smbclient_write, 0, 3, MAY_BE_FALSE|MAY_BE_LONG)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, file)
++ ZEND_ARG_TYPE_INFO(0, buffer, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, count, IS_LONG, 0, "0")
++ZEND_END_ARG_INFO()
++
++#define arginfo_smbclient_unlink arginfo_smbclient_rmdir
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_smbclient_lseek, 0, 4, MAY_BE_FALSE|MAY_BE_LONG)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, file)
++ ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
++ ZEND_ARG_TYPE_INFO(0, whence, IS_LONG, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_ftruncate, 0, 3, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, file)
++ ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_chmod, 0, 3, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_utimes, 0, 2, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mtime, IS_LONG, 0, "-1")
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, atime, IS_LONG, 0, "-1")
++ZEND_END_ARG_INFO()
++
++#define arginfo_smbclient_listxattr arginfo_smbclient_stat
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_smbclient_getxattr, 0, 3, MAY_BE_FALSE|MAY_BE_STRING)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_smbclient_setxattr, 0, 4, MAY_BE_FALSE|MAY_BE_STRING)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, value, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0")
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_smbclient_removexattr, 0, 3, _IS_BOOL, 0)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++#define arginfo_smbclient_statvfs arginfo_smbclient_stat
++
++#define arginfo_smbclient_fstatvfs arginfo_smbclient_fstat
++
++
++ZEND_FUNCTION(smbclient_version);
++ZEND_FUNCTION(smbclient_library_version);
++ZEND_FUNCTION(smbclient_state_new);
++ZEND_FUNCTION(smbclient_state_init);
++ZEND_FUNCTION(smbclient_state_errno);
++ZEND_FUNCTION(smbclient_state_free);
++ZEND_FUNCTION(smbclient_option_get);
++ZEND_FUNCTION(smbclient_option_set);
++#if HAVE_SMBC_SETOPTIONPROTOCOLS
++ZEND_FUNCTION(smbclient_client_protocols);
++#endif
++ZEND_FUNCTION(smbclient_opendir);
++ZEND_FUNCTION(smbclient_readdir);
++ZEND_FUNCTION(smbclient_closedir);
++ZEND_FUNCTION(smbclient_stat);
++ZEND_FUNCTION(smbclient_fstat);
++ZEND_FUNCTION(smbclient_open);
++ZEND_FUNCTION(smbclient_creat);
++ZEND_FUNCTION(smbclient_read);
++ZEND_FUNCTION(smbclient_close);
++ZEND_FUNCTION(smbclient_mkdir);
++ZEND_FUNCTION(smbclient_rmdir);
++ZEND_FUNCTION(smbclient_rename);
++ZEND_FUNCTION(smbclient_write);
++ZEND_FUNCTION(smbclient_unlink);
++ZEND_FUNCTION(smbclient_lseek);
++ZEND_FUNCTION(smbclient_ftruncate);
++ZEND_FUNCTION(smbclient_chmod);
++ZEND_FUNCTION(smbclient_utimes);
++ZEND_FUNCTION(smbclient_listxattr);
++ZEND_FUNCTION(smbclient_getxattr);
++ZEND_FUNCTION(smbclient_setxattr);
++ZEND_FUNCTION(smbclient_removexattr);
++ZEND_FUNCTION(smbclient_statvfs);
++ZEND_FUNCTION(smbclient_fstatvfs);
++
++
++static const zend_function_entry ext_functions[] = {
++ ZEND_FE(smbclient_version, arginfo_smbclient_version)
++ ZEND_FE(smbclient_library_version, arginfo_smbclient_library_version)
++ ZEND_FE(smbclient_state_new, arginfo_smbclient_state_new)
++ ZEND_FE(smbclient_state_init, arginfo_smbclient_state_init)
++ ZEND_FE(smbclient_state_errno, arginfo_smbclient_state_errno)
++ ZEND_FE(smbclient_state_free, arginfo_smbclient_state_free)
++ ZEND_FE(smbclient_option_get, arginfo_smbclient_option_get)
++ ZEND_FE(smbclient_option_set, arginfo_smbclient_option_set)
++#if HAVE_SMBC_SETOPTIONPROTOCOLS
++ ZEND_FE(smbclient_client_protocols, arginfo_smbclient_client_protocols)
++#endif
++ ZEND_FE(smbclient_opendir, arginfo_smbclient_opendir)
++ ZEND_FE(smbclient_readdir, arginfo_smbclient_readdir)
++ ZEND_FE(smbclient_closedir, arginfo_smbclient_closedir)
++ ZEND_FE(smbclient_stat, arginfo_smbclient_stat)
++ ZEND_FE(smbclient_fstat, arginfo_smbclient_fstat)
++ ZEND_FE(smbclient_open, arginfo_smbclient_open)
++ ZEND_FE(smbclient_creat, arginfo_smbclient_creat)
++ ZEND_FE(smbclient_read, arginfo_smbclient_read)
++ ZEND_FE(smbclient_close, arginfo_smbclient_close)
++ ZEND_FE(smbclient_mkdir, arginfo_smbclient_mkdir)
++ ZEND_FE(smbclient_rmdir, arginfo_smbclient_rmdir)
++ ZEND_FE(smbclient_rename, arginfo_smbclient_rename)
++ ZEND_FE(smbclient_write, arginfo_smbclient_write)
++ ZEND_FE(smbclient_unlink, arginfo_smbclient_unlink)
++ ZEND_FE(smbclient_lseek, arginfo_smbclient_lseek)
++ ZEND_FE(smbclient_ftruncate, arginfo_smbclient_ftruncate)
++ ZEND_FE(smbclient_chmod, arginfo_smbclient_chmod)
++ ZEND_FE(smbclient_utimes, arginfo_smbclient_utimes)
++ ZEND_FE(smbclient_listxattr, arginfo_smbclient_listxattr)
++ ZEND_FE(smbclient_getxattr, arginfo_smbclient_getxattr)
++ ZEND_FE(smbclient_setxattr, arginfo_smbclient_setxattr)
++ ZEND_FE(smbclient_removexattr, arginfo_smbclient_removexattr)
++ ZEND_FE(smbclient_statvfs, arginfo_smbclient_statvfs)
++ ZEND_FE(smbclient_fstatvfs, arginfo_smbclient_fstatvfs)
++ ZEND_FE_END
++};
+diff --git a/smbclient_legacy_arginfo.h b/smbclient_legacy_arginfo.h
+new file mode 100644
+index 0000000..dd58e7a
+--- /dev/null
++++ b/smbclient_legacy_arginfo.h
+@@ -0,0 +1,226 @@
++/* This is a generated file, edit the .stub.php file instead.
++ * Stub hash: 6abe27ac2cfb259cc835af1bafe32bb639c422b1 */
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_version, 0, 0, 0)
++ZEND_END_ARG_INFO()
++
++#define arginfo_smbclient_library_version arginfo_smbclient_version
++
++#define arginfo_smbclient_state_new arginfo_smbclient_version
++
++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_EX(arginfo_smbclient_state_errno, 0, 0, 1)
++ ZEND_ARG_INFO(0, state)
++ZEND_END_ARG_INFO()
++
++#define arginfo_smbclient_state_free arginfo_smbclient_state_errno
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_option_get, 0, 0, 2)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, option)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_option_set, 0, 0, 3)
++ 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_EX(arginfo_smbclient_opendir, 0, 0, 2)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, path)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_readdir, 0, 0, 2)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, dir)
++ZEND_END_ARG_INFO()
++
++#define arginfo_smbclient_closedir arginfo_smbclient_readdir
++
++#define arginfo_smbclient_stat arginfo_smbclient_opendir
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_fstat, 0, 0, 2)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, file)
++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_read, 0, 0, 3)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, file)
++ ZEND_ARG_INFO(0, count)
++ZEND_END_ARG_INFO()
++
++#define arginfo_smbclient_close arginfo_smbclient_fstat
++
++#define arginfo_smbclient_mkdir arginfo_smbclient_creat
++
++#define arginfo_smbclient_rmdir arginfo_smbclient_opendir
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_rename, 0, 0, 4)
++ ZEND_ARG_INFO(0, oldstate)
++ ZEND_ARG_INFO(0, oldpath)
++ ZEND_ARG_INFO(0, newstate)
++ ZEND_ARG_INFO(0, newpath)
++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()
++
++#define arginfo_smbclient_unlink arginfo_smbclient_opendir
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_lseek, 0, 0, 4)
++ 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_EX(arginfo_smbclient_ftruncate, 0, 0, 3)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, file)
++ ZEND_ARG_INFO(0, offset)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_chmod, 0, 0, 3)
++ 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_utimes, 0, 0, 2)
++ ZEND_ARG_INFO(0, state)
++ ZEND_ARG_INFO(0, path)
++ ZEND_ARG_INFO(0, mtime)
++ ZEND_ARG_INFO(0, atime)
++ZEND_END_ARG_INFO()
++
++#define arginfo_smbclient_listxattr arginfo_smbclient_opendir
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_smbclient_getxattr, 0, 0, 3)
++ 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()
++
++#define arginfo_smbclient_removexattr arginfo_smbclient_getxattr
++
++#define arginfo_smbclient_statvfs arginfo_smbclient_opendir
++
++#define arginfo_smbclient_fstatvfs arginfo_smbclient_fstat
++
++
++ZEND_FUNCTION(smbclient_version);
++ZEND_FUNCTION(smbclient_library_version);
++ZEND_FUNCTION(smbclient_state_new);
++ZEND_FUNCTION(smbclient_state_init);
++ZEND_FUNCTION(smbclient_state_errno);
++ZEND_FUNCTION(smbclient_state_free);
++ZEND_FUNCTION(smbclient_option_get);
++ZEND_FUNCTION(smbclient_option_set);
++#if HAVE_SMBC_SETOPTIONPROTOCOLS
++ZEND_FUNCTION(smbclient_client_protocols);
++#endif
++ZEND_FUNCTION(smbclient_opendir);
++ZEND_FUNCTION(smbclient_readdir);
++ZEND_FUNCTION(smbclient_closedir);
++ZEND_FUNCTION(smbclient_stat);
++ZEND_FUNCTION(smbclient_fstat);
++ZEND_FUNCTION(smbclient_open);
++ZEND_FUNCTION(smbclient_creat);
++ZEND_FUNCTION(smbclient_read);
++ZEND_FUNCTION(smbclient_close);
++ZEND_FUNCTION(smbclient_mkdir);
++ZEND_FUNCTION(smbclient_rmdir);
++ZEND_FUNCTION(smbclient_rename);
++ZEND_FUNCTION(smbclient_write);
++ZEND_FUNCTION(smbclient_unlink);
++ZEND_FUNCTION(smbclient_lseek);
++ZEND_FUNCTION(smbclient_ftruncate);
++ZEND_FUNCTION(smbclient_chmod);
++ZEND_FUNCTION(smbclient_utimes);
++ZEND_FUNCTION(smbclient_listxattr);
++ZEND_FUNCTION(smbclient_getxattr);
++ZEND_FUNCTION(smbclient_setxattr);
++ZEND_FUNCTION(smbclient_removexattr);
++ZEND_FUNCTION(smbclient_statvfs);
++ZEND_FUNCTION(smbclient_fstatvfs);
++
++
++static const zend_function_entry ext_functions[] = {
++ ZEND_FE(smbclient_version, arginfo_smbclient_version)
++ ZEND_FE(smbclient_library_version, arginfo_smbclient_library_version)
++ ZEND_FE(smbclient_state_new, arginfo_smbclient_state_new)
++ ZEND_FE(smbclient_state_init, arginfo_smbclient_state_init)
++ ZEND_FE(smbclient_state_errno, arginfo_smbclient_state_errno)
++ ZEND_FE(smbclient_state_free, arginfo_smbclient_state_free)
++ ZEND_FE(smbclient_option_get, arginfo_smbclient_option_get)
++ ZEND_FE(smbclient_option_set, arginfo_smbclient_option_set)
++#if HAVE_SMBC_SETOPTIONPROTOCOLS
++ ZEND_FE(smbclient_client_protocols, arginfo_smbclient_client_protocols)
++#endif
++ ZEND_FE(smbclient_opendir, arginfo_smbclient_opendir)
++ ZEND_FE(smbclient_readdir, arginfo_smbclient_readdir)
++ ZEND_FE(smbclient_closedir, arginfo_smbclient_closedir)
++ ZEND_FE(smbclient_stat, arginfo_smbclient_stat)
++ ZEND_FE(smbclient_fstat, arginfo_smbclient_fstat)
++ ZEND_FE(smbclient_open, arginfo_smbclient_open)
++ ZEND_FE(smbclient_creat, arginfo_smbclient_creat)
++ ZEND_FE(smbclient_read, arginfo_smbclient_read)
++ ZEND_FE(smbclient_close, arginfo_smbclient_close)
++ ZEND_FE(smbclient_mkdir, arginfo_smbclient_mkdir)
++ ZEND_FE(smbclient_rmdir, arginfo_smbclient_rmdir)
++ ZEND_FE(smbclient_rename, arginfo_smbclient_rename)
++ ZEND_FE(smbclient_write, arginfo_smbclient_write)
++ ZEND_FE(smbclient_unlink, arginfo_smbclient_unlink)
++ ZEND_FE(smbclient_lseek, arginfo_smbclient_lseek)
++ ZEND_FE(smbclient_ftruncate, arginfo_smbclient_ftruncate)
++ ZEND_FE(smbclient_chmod, arginfo_smbclient_chmod)
++ ZEND_FE(smbclient_utimes, arginfo_smbclient_utimes)
++ ZEND_FE(smbclient_listxattr, arginfo_smbclient_listxattr)
++ ZEND_FE(smbclient_getxattr, arginfo_smbclient_getxattr)
++ ZEND_FE(smbclient_setxattr, arginfo_smbclient_setxattr)
++ ZEND_FE(smbclient_removexattr, arginfo_smbclient_removexattr)
++ ZEND_FE(smbclient_statvfs, arginfo_smbclient_statvfs)
++ ZEND_FE(smbclient_fstatvfs, arginfo_smbclient_fstatvfs)
++ ZEND_FE_END
++};