ZEND_END_ARG_INFO()
#endif
/* }}} */
-/* {{{ dir.c */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_opendir, 0, 0, 1)
- ZEND_ARG_INFO(0, path)
- ZEND_ARG_INFO(0, context)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_dir, 0, 0, 1)
- ZEND_ARG_INFO(0, directory)
- ZEND_ARG_INFO(0, context)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_closedir, 0, 0, 0)
- ZEND_ARG_INFO(0, dir_handle)
-ZEND_END_ARG_INFO()
-
-#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC
-ZEND_BEGIN_ARG_INFO(arginfo_chroot, 0)
- ZEND_ARG_INFO(0, directory)
-ZEND_END_ARG_INFO()
-#endif
-
-ZEND_BEGIN_ARG_INFO(arginfo_chdir, 0)
- ZEND_ARG_INFO(0, directory)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_getcwd, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_rewinddir, 0, 0, 0)
- ZEND_ARG_INFO(0, dir_handle)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_readdir, 0, 0, 0)
- ZEND_ARG_INFO(0, dir_handle)
-ZEND_END_ARG_INFO()
-#ifdef HAVE_GLOB
-ZEND_BEGIN_ARG_INFO_EX(arginfo_glob, 0, 0, 1)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, flags)
-ZEND_END_ARG_INFO()
-#endif
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_scandir, 0, 0, 1)
- ZEND_ARG_INFO(0, dir)
- ZEND_ARG_INFO(0, sorting_order)
- ZEND_ARG_INFO(0, context)
-ZEND_END_ARG_INFO()
-/* }}} */
/* {{{ dns.c */
ZEND_BEGIN_ARG_INFO(arginfo_gethostbyaddr, 0)
ZEND_ARG_INFO(0, ip_address)
ZEND_BEGIN_ARG_INFO(arginfo_sys_get_temp_dir, 0)
ZEND_END_ARG_INFO()
/* }}} */
-/* {{{ filestat.c */
-ZEND_BEGIN_ARG_INFO(arginfo_disk_total_space, 0)
- ZEND_ARG_INFO(0, path)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_disk_free_space, 0)
- ZEND_ARG_INFO(0, path)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_chgrp, 0)
- ZEND_ARG_INFO(0, filename)
- ZEND_ARG_INFO(0, group)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_chown, 0)
- ZEND_ARG_INFO(0, filename)
- ZEND_ARG_INFO(0, user)
-ZEND_END_ARG_INFO()
-
-#if HAVE_LCHOWN
-ZEND_BEGIN_ARG_INFO(arginfo_lchgrp, 0)
- ZEND_ARG_INFO(0, filename)
- ZEND_ARG_INFO(0, group)
-ZEND_END_ARG_INFO()
-ZEND_BEGIN_ARG_INFO(arginfo_lchown, 0)
- ZEND_ARG_INFO(0, filename)
- ZEND_ARG_INFO(0, user)
-ZEND_END_ARG_INFO()
-#endif
-
-ZEND_BEGIN_ARG_INFO(arginfo_chmod, 0)
- ZEND_ARG_INFO(0, filename)
- ZEND_ARG_INFO(0, mode)
-ZEND_END_ARG_INFO()
-
-#if HAVE_UTIME
-ZEND_BEGIN_ARG_INFO_EX(arginfo_touch, 0, 0, 1)
- ZEND_ARG_INFO(0, filename)
- ZEND_ARG_INFO(0, time)
- ZEND_ARG_INFO(0, atime)
-ZEND_END_ARG_INFO()
-#endif
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_clearstatcache, 0, 0, 0)
- ZEND_ARG_INFO(0, clear_realpath_cache)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_realpath_cache_size, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_realpath_cache_get, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_fileperms, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_fileinode, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_filesize, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_fileowner, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_filegroup, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_fileatime, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_filemtime, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_filectime, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_filetype, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_is_writable, _IS_BOOL, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_is_readable, _IS_BOOL, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_is_executable, _IS_BOOL, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_is_file, _IS_BOOL, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_is_dir, _IS_BOOL, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_is_link, _IS_BOOL, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_file_exists, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_lstat, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_stat, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-/* }}} */
/* {{{ formatted_print.c */
ZEND_BEGIN_ARG_INFO_EX(arginfo_sprintf, 0, 0, 1)
ZEND_ARG_INFO(0, format)
function utf8_encode(string $data): string {}
function utf8_decode(string $data): string {}
+
+/* dir.c */
+
+class Directory
+{
+ /**
+ * @param resource $dir_handle
+ * @return void
+ */
+ public function close($dir_handle = UNKNOWN) {}
+
+ /**
+ * @param resource $dir_handle
+ * @return void
+ */
+ public function rewind($dir_handle = UNKNOWN) {}
+
+ /**
+ * @param resource $dir_handle
+ * @return string|false
+ */
+ public function read($dir_handle = UNKNOWN) { }
+}
+
+/**
+ * @param resource $context
+ * @return resource|false
+ */
+function opendir(string $path, $context = UNKNOWN) {}
+
+/**
+ * @param resource $context
+ * @return Directory|false
+ */
+function dir(string $path, $context = UNKNOWN) {}
+
+/** @param resource $dir_handle */
+function closedir($dir_handle = UNKNOWN): void {}
+
+function chdir(string $directory): bool {}
+
+#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC
+function chroot(string $directory): bool {}
+#endif
+
+/** @return string|false */
+function getcwd() {}
+
+/** @param resource $dir_handle */
+function rewinddir($dir_handle = UNKNOWN): void {}
+
+/** @return string|false */
+function readdir($dir_handle = UNKNOWN) {}
+
+/**
+ * @param resource $context
+ * @return array|false
+ */
+function scandir(string $directory, int $sorting_order = 0, $context = UNKNOWN) {}
+
+#ifdef HAVE_GLOB
+/** @return array|false */
+function glob(string $pattern, int $flags = 0) {}
+#endif
+
+/* filestat.c */
+
+/** @return int|false */
+function fileatime(string $filename) {}
+
+/** @return int|false */
+function filectime(string $filename) {}
+
+/** @return int|false */
+function filegroup(string $filename) {}
+
+/** @return int|false */
+function fileinode(string $filename) {}
+
+/** @return int|false */
+function filemtime(string $filename) {}
+
+/** @return int|false */
+function fileowner(string $filename) {}
+
+/** @return int|false */
+function fileperms(string $filename) {}
+
+/** @return int|false */
+function filesize(string $filename) {}
+
+/** @return string|false */
+function filetype(string $filename) {}
+
+function file_exists(string $filename): bool {}
+
+function is_writable(string $filename): bool {}
+
+function is_writeable(string $filename): bool {}
+
+function is_readable(string $filename): bool {}
+
+function is_executable(string $filename): bool {}
+
+function is_file(string $filename): bool {}
+
+function is_dir(string $filename): bool {}
+
+function is_link(string $filename): bool {}
+
+/** @return array|false */
+function stat(string $filename) {}
+
+/** @return array|false */
+function lstat(string $filename) {}
+
+function chown(string $filename, $user): bool {}
+
+function chgrp(string $filename, $group): bool {}
+
+#if HAVE_LCHOWN
+function lchown(string $filename, $user): bool {}
+
+function lchgrp(string $filename, $group): bool {}
+#endif
+
+function chmod(string $filename, int $mode): bool {}
+
+#if HAVE_UTIME
+function touch(string $filename, int $time = 0, int $atime = 0): bool {}
+#endif
+
+function clearstatcache(bool $clear_realpath_cache = false, string $filename = ""): void {}
+
+/** @return float|false */
+function disk_total_space(string $directory) {}
+
+/** @return float|false */
+function disk_free_space(string $directory) {}
+
+/** @return float|false */
+function diskfreespace(string $directory) {}
+
+function realpath_cache_get(): array {}
+
+function realpath_cache_size(): int {}
#define arginfo_utf8_encode arginfo_bin2hex
#define arginfo_utf8_decode arginfo_bin2hex
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Directory_close, 0, 0, 0)
+ ZEND_ARG_INFO(0, dir_handle)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_Directory_rewind arginfo_class_Directory_close
+
+#define arginfo_class_Directory_read arginfo_class_Directory_close
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_opendir, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
+ ZEND_ARG_INFO(0, context)
+ZEND_END_ARG_INFO()
+
+#define arginfo_dir arginfo_opendir
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_closedir, 0, 0, IS_VOID, 0)
+ ZEND_ARG_INFO(0, dir_handle)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chdir, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chroot, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#define arginfo_getcwd arginfo_ob_get_flush
+
+#define arginfo_rewinddir arginfo_closedir
+
+#define arginfo_readdir arginfo_class_Directory_close
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_scandir, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, sorting_order, IS_LONG, 0)
+ ZEND_ARG_INFO(0, context)
+ZEND_END_ARG_INFO()
+
+#if defined(HAVE_GLOB)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_glob, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, pattern, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_fileatime, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_filectime arginfo_fileatime
+
+#define arginfo_filegroup arginfo_fileatime
+
+#define arginfo_fileinode arginfo_fileatime
+
+#define arginfo_filemtime arginfo_fileatime
+
+#define arginfo_fileowner arginfo_fileatime
+
+#define arginfo_fileperms arginfo_fileatime
+
+#define arginfo_filesize arginfo_fileatime
+
+#define arginfo_filetype arginfo_fileatime
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_file_exists, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_is_writable arginfo_file_exists
+
+#define arginfo_is_writeable arginfo_file_exists
+
+#define arginfo_is_readable arginfo_file_exists
+
+#define arginfo_is_executable arginfo_file_exists
+
+#define arginfo_is_file arginfo_file_exists
+
+#define arginfo_is_dir arginfo_file_exists
+
+#define arginfo_is_link arginfo_file_exists
+
+#define arginfo_stat arginfo_fileatime
+
+#define arginfo_lstat arginfo_fileatime
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chown, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_INFO(0, user)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chgrp, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_INFO(0, group)
+ZEND_END_ARG_INFO()
+
+#if HAVE_LCHOWN
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lchown, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_INFO(0, user)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_LCHOWN
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_lchgrp, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_INFO(0, group)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chmod, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#if HAVE_UTIME
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_touch, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, time, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, atime, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_clearstatcache, 0, 0, IS_VOID, 0)
+ ZEND_ARG_TYPE_INFO(0, clear_realpath_cache, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_disk_total_space, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_disk_free_space arginfo_disk_total_space
+
+#define arginfo_diskfreespace arginfo_disk_total_space
+
+#define arginfo_realpath_cache_get arginfo_ob_list_handlers
+
+#define arginfo_realpath_cache_size arginfo_ob_get_level
#include "php_string.h"
#include "php_scandir.h"
#include "basic_functions.h"
+#include "basic_functions_arginfo.h"
#if HAVE_UNISTD_H
#include <unistd.h>
} \
}
-/* {{{ arginfo */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_dir, 0, 0, 0)
- ZEND_ARG_INFO(0, dir_handle)
-ZEND_END_ARG_INFO()
-/* }}} */
-
static const zend_function_entry php_dir_class_functions[] = {
- PHP_FALIAS(close, closedir, arginfo_dir)
- PHP_FALIAS(rewind, rewinddir, arginfo_dir)
- PHP_NAMED_FE(read, php_if_readdir, arginfo_dir)
+ PHP_FALIAS(close, closedir, arginfo_class_Directory_close)
+ PHP_FALIAS(rewind, rewinddir, arginfo_class_Directory_rewind)
+ PHP_NAMED_FE(read, php_if_readdir, arginfo_class_Directory_read)
PHP_FE_END
};