+++ /dev/null
-/*
- +----------------------------------------------------------------------+
- | PHP Version 4 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2003 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 2.02 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available at through the world-wide-web at |
- | http://www.php.net/license/2_02.txt. |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Sterling Hughes <sterling@php.net> |
- +----------------------------------------------------------------------+
- */
-
-#ifndef PHP_ZIP_H
-#define PHP_ZIP_H
-
-#if HAVE_ZZIPLIB
-
-#include <zziplib.h>
-
-extern zend_module_entry zip_module_entry;
-#define phpext_zip_ptr &zip_module_entry
-
-#define PHP_ZZIPLIB_API
-#ifdef PHP_WIN32
-#undef PHP_ZZIPLIB_API
-#ifdef ZIP_EXPORTS
-#define PHP_ZZIPLIB_API __declspec(dllexport)
-#else
-#define PHP_ZZIPLIB_API __declspec(dllimport)
-#endif
-#endif
-
-PHP_MINIT_FUNCTION(zip);
-PHP_MINFO_FUNCTION(zip);
-
-PHP_FUNCTION(zip_open);
-PHP_FUNCTION(zip_read);
-PHP_FUNCTION(zip_close);
-PHP_FUNCTION(zip_entry_name);
-PHP_FUNCTION(zip_entry_compressedsize);
-PHP_FUNCTION(zip_entry_filesize);
-PHP_FUNCTION(zip_entry_compressionmethod);
-PHP_FUNCTION(zip_entry_open);
-PHP_FUNCTION(zip_entry_read);
-PHP_FUNCTION(zip_entry_close);
-
-typedef struct {
- ZZIP_FILE *fp;
- ZZIP_DIRENT dirent;
-} php_zzip_dirent;
-
-#else
-#define phpext_zziplib_ptr NULL
-#endif
-
-#endif /* PHP_ZZIPLIB_H */
-
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- */
+++ /dev/null
-/*
- +----------------------------------------------------------------------+
- | PHP Version 4 |
- +----------------------------------------------------------------------+
- | Copyright (c) 1997-2003 The PHP Group |
- +----------------------------------------------------------------------+
- | This source file is subject to version 2.02 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available at through the world-wide-web at |
- | http://www.php.net/license/2_02.txt. |
- | If you did not receive a copy of the PHP license and are unable to |
- | obtain it through the world-wide-web, please send a note to |
- | license@php.net so we can mail you a copy immediately. |
- +----------------------------------------------------------------------+
- | Author: Sterling Hughes <sterling@php.net> |
- +----------------------------------------------------------------------+
- */
-
-/* $Id$ */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "php.h"
-#include "php_ini.h"
-#include "php_zip.h"
-
-#if HAVE_ZZIPLIB
-
-#include "ext/standard/info.h"
-#include <zziplib.h>
-
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
-
-static int le_zip_dir;
-#define le_zip_dir_name "Zip Directory"
-static int le_zip_entry;
-#define le_zip_entry_name "Zip Entry"
-
-/* {{{ zip_functions[]
- */
-function_entry zip_functions[] = {
- PHP_FE(zip_open, NULL)
- PHP_FE(zip_read, NULL)
- PHP_FE(zip_close, NULL)
- PHP_FE(zip_entry_name, NULL)
- PHP_FE(zip_entry_compressedsize, NULL)
- PHP_FE(zip_entry_filesize, NULL)
- PHP_FE(zip_entry_compressionmethod, NULL)
- PHP_FE(zip_entry_open, NULL)
- PHP_FE(zip_entry_read, NULL)
- PHP_FE(zip_entry_close, NULL)
- {NULL, NULL, NULL}
-};
-/* }}} */
-
-/* {{{ zip_module_entry
- */
-zend_module_entry zip_module_entry = {
- STANDARD_MODULE_HEADER,
- "zip",
- zip_functions,
- PHP_MINIT(zip),
- NULL,
- NULL,
- NULL,
- PHP_MINFO(zip),
- NO_VERSION_YET,
- STANDARD_MODULE_PROPERTIES
-};
-/* }}} */
-
-#ifdef COMPILE_DL_ZIP
-ZEND_GET_MODULE(zip)
-#endif
-
-/* {{{ php_zip_free_dir
- */
-static void php_zip_free_dir(zend_rsrc_list_entry *rsrc TSRMLS_DC)
-{
- ZZIP_DIR *z_dir = (ZZIP_DIR *) rsrc->ptr;
- zzip_closedir(z_dir);
-}
-/* }}} */
-
-/* {{{ php_zip_free_entry
- */
-static void php_zip_free_entry(zend_rsrc_list_entry *rsrc TSRMLS_DC)
-{
- php_zzip_dirent *entry = (php_zzip_dirent *) rsrc->ptr;
-
- if (entry->fp)
- zzip_close(entry->fp);
-
- efree(entry);
-}
-/* }}} */
-
-/* {{{ PHP_MINIT_FUNCTION
- */
-PHP_MINIT_FUNCTION(zip)
-{
- le_zip_dir = zend_register_list_destructors_ex(php_zip_free_dir, NULL, le_zip_dir_name, module_number);
- le_zip_entry = zend_register_list_destructors_ex(php_zip_free_entry, NULL, le_zip_entry_name, module_number);
-
- return SUCCESS;
-}
-/* }}} */
-
-/* {{{ PHP_MINFO_FUNCTION
- */
-PHP_MINFO_FUNCTION(zip)
-{
- php_info_print_table_start();
- php_info_print_table_row(2, "Zip support", "enabled");
- php_info_print_table_end();
-}
-/* }}} */
-
-/* {{{ proto resource zip_open(string filename)
- Open a new zip archive for reading */
-PHP_FUNCTION(zip_open)
-{
- char *filename;
- ZZIP_DIR *archive_p = NULL;
- int filename_len;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, &filename_len) == FAILURE) {
- return;
- }
-
- if (PG(safe_mode) && (!php_checkuid(filename, NULL, CHECKUID_ALLOW_FILE_NOT_EXISTS))) {
- RETURN_FALSE;
- }
-
- if (php_check_open_basedir(filename TSRMLS_CC)) {
- RETURN_FALSE;
- }
-
- archive_p = zzip_opendir(filename);
- if (archive_p == NULL) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot open zip archive %s", filename);
- RETURN_FALSE;
- }
-
- ZEND_REGISTER_RESOURCE(return_value, archive_p, le_zip_dir);
-}
-/* }}} */
-
-/* {{{ proto resource zip_read(resource zip)
- Returns the next file in the archive */
-PHP_FUNCTION(zip_read)
-{
- zval *zzip_dp;
- ZZIP_DIR *archive_p = NULL;
- php_zzip_dirent *entry = NULL;
- int ret;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zzip_dp) == FAILURE) {
- return;
- }
- ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, &zzip_dp, -1, le_zip_dir_name, le_zip_dir);
-
- entry = emalloc(sizeof(php_zzip_dirent));
- ret = zzip_dir_read(archive_p, &entry->dirent);
- if (ret == 0) {
- efree(entry);
- RETURN_FALSE;
- }
- entry->fp = NULL;
-
- ZEND_REGISTER_RESOURCE(return_value, entry, le_zip_entry);
-}
-/* }}} */
-
-/* {{{ proto void zip_close(resource zip)
- Close a Zip archive */
-PHP_FUNCTION(zip_close)
-{
- zval *zzip_dp;
- ZZIP_DIR *archive_p = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zzip_dp) == FAILURE) {
- return;
- }
- ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, &zzip_dp, -1, le_zip_dir_name, le_zip_dir);
-
- zend_list_delete(Z_LVAL_P(zzip_dp));
-}
-/* }}} */
-
-/* {{{ php_zzip_get_entry
- */
-static void php_zzip_get_entry(INTERNAL_FUNCTION_PARAMETERS, int opt)
-{
- zval *zzip_ent;
- php_zzip_dirent *entry = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zzip_ent) == FAILURE) {
- return;
- }
- ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, &zzip_ent, -1, le_zip_entry_name, le_zip_entry);
-
- switch (opt) {
- case 0:
- RETURN_STRING(entry->dirent.d_name, 1);
- break;
- case 1:
- RETURN_LONG(entry->dirent.d_csize);
- break;
- case 2:
- RETURN_LONG(entry->dirent.st_size);
- break;
- case 3:
- RETURN_STRING((char *) zzip_compr_str(entry->dirent.d_compr), 1);
- break;
- }
-
-}
-/* }}} */
-
-/* {{{ proto string zip_entry_name(resource zip_entry)
- Return the name given a ZZip entry */
-PHP_FUNCTION(zip_entry_name)
-{
- php_zzip_get_entry(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
-}
-/* }}} */
-
-/* {{{ proto int zip_entry_compressedsize(resource zip_entry)
- Return the compressed size of a ZZip entry */
-PHP_FUNCTION(zip_entry_compressedsize)
-{
- php_zzip_get_entry(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
-}
-/* }}} */
-
-/* {{{ proto int zip_entry_filesize(resource zip_entry)
- Return the actual filesize of a ZZip entry */
-PHP_FUNCTION(zip_entry_filesize)
-{
- php_zzip_get_entry(INTERNAL_FUNCTION_PARAM_PASSTHRU, 2);
-}
-/* }}} */
-
-/* {{{ proto string zip_entry_compressionmethod(resource zip_entry)
- Return a string containing the compression method used on a particular entry */
-PHP_FUNCTION(zip_entry_compressionmethod)
-{
- php_zzip_get_entry(INTERNAL_FUNCTION_PARAM_PASSTHRU, 3);
-}
-/* }}} */
-
-/* {{{ proto bool zip_entry_open(resource zip_dp, resource zip_entry, string mode)
- Open a Zip File, pointed by the resource entry */
-PHP_FUNCTION(zip_entry_open)
-{
- zval *zzip_dp;
- zval *zzip_ent;
- ZZIP_DIR *archive_p = NULL;
- php_zzip_dirent *entry = NULL;
- char *mode;
- int mode_len;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|s", &zzip_dp, &zzip_ent, &mode, &mode_len) == FAILURE) {
- return;
- }
- ZEND_FETCH_RESOURCE(archive_p, ZZIP_DIR *, &zzip_dp, -1, le_zip_dir_name, le_zip_dir);
- ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, &zzip_ent, -1, le_zip_entry_name, le_zip_entry);
-
- entry->fp = zzip_file_open(archive_p, entry->dirent.d_name, O_RDONLY | O_BINARY);
-
- RETURN_BOOL((int) entry->fp);
-}
-/* }}} */
-
-/* {{{ proto string zip_entry_read(resource zip_ent)
- Read X bytes from an opened zip entry */
-PHP_FUNCTION(zip_entry_read)
-{
- zval *zzip_ent;
- php_zzip_dirent *entry = NULL;
- char *buf = NULL;
- long len = 1024;
- int ret = 0;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &zzip_ent, &len) == FAILURE) {
- return;
- }
- ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, &zzip_ent, -1, le_zip_entry_name, le_zip_entry);
-
- buf = emalloc(len + 1);
- ret = zzip_read(entry->fp, buf, len);
- buf[ret] = 0;
- if (ret == 0) {
- RETURN_FALSE;
- } else {
- RETURN_STRINGL(buf, ret, 0);
- }
-}
-/* }}} */
-
-/* {{{ proto void zip_entry_close(resource zip_ent)
- Close a zip entry */
-PHP_FUNCTION(zip_entry_close)
-{
- zval *zzip_ent;
- php_zzip_dirent *entry = NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zzip_ent) == FAILURE) {
- return;
- }
- ZEND_FETCH_RESOURCE(entry, php_zzip_dirent *, &zzip_ent, -1, le_zip_entry_name, le_zip_entry);
-
- zend_list_delete(Z_LVAL_P(zzip_ent));
-}
-/* }}} */
-
-#endif /* HAVE_ZZIPLIB */
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- * vim600: noet sw=4 ts=4 fdm=marker
- * vim<600: noet sw=4 ts=4
- */
+++ /dev/null
-# Microsoft Developer Studio Project File - Name="zip" - Package Owner=<4>\r
-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
-# ** DO NOT EDIT **\r
-\r
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
-\r
-CFG=zip - Win32 Debug_TS\r
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
-!MESSAGE use the Export Makefile command and run\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "zip.mak".\r
-!MESSAGE \r
-!MESSAGE You can specify a configuration when running NMAKE\r
-!MESSAGE by defining the macro CFG on the command line. For example:\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "zip.mak" CFG="zip - Win32 Debug_TS"\r
-!MESSAGE \r
-!MESSAGE Possible choices for configuration are:\r
-!MESSAGE \r
-!MESSAGE "zip - Win32 Release_TS" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "zip - Win32 Debug_TS" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE \r
-\r
-# Begin Project\r
-# PROP AllowPerConfigDependencies 0\r
-# PROP Scc_ProjName ""\r
-# PROP Scc_LocalPath ""\r
-CPP=cl.exe\r
-MTL=midl.exe\r
-RSC=rc.exe\r
-\r
-!IF "$(CFG)" == "zip - Win32 Release_TS"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "Release_TS"\r
-# PROP BASE Intermediate_Dir "Release_TS"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "Release_TS"\r
-# PROP Intermediate_Dir "Release_TS"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ZIP_EXPORTS" /YX /FD /c\r
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\TSRM" /I "..\..\..\php_build\includes" /D ZEND_DEBUG=0 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_ZIP" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_ZIP=1 /D "PHP_ZIP_EXPORTS" /D "HAVE_ZZIPLIB" /D "ZZIP_DLL" /FR /YX /FD /c\r
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
-# ADD BASE RSC /l 0x407 /d "NDEBUG"\r
-# ADD RSC /l 0x407 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
-# ADD LINK32 zziplib.lib zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts.lib /nologo /dll /machine:I386 /out:"..\..\Release_TS/php_zip.dll" /libpath:"..\..\Release_TS" /libpath:"..\..\Release_TS_Inline" /libpath:"..\..\..\php_build\release"\r
-\r
-!ELSEIF "$(CFG)" == "zip - Win32 Debug_TS"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "Debug_TS"\r
-# PROP BASE Intermediate_Dir "Debug_TS"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "Debug_TS"\r
-# PROP Intermediate_Dir "Debug_TS"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ZIP_EXPORTS" /YX /FD /GZ /c\r
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\TSRM" /I "..\..\..\php_build\includes" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_ZIP" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_ZIP=1 /D "PHP_ZIP_EXPORTS" /D "HAVE_ZZIPLIB" /D "ZZIP_DLL" /YX /FD /GZ /c\r
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
-# ADD BASE RSC /l 0x407 /d "_DEBUG"\r
-# ADD RSC /l 0x407 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
-# ADD LINK32 php4ts_debug.lib zziplib.lib zlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"..\..\Debug_TS/php_zip.dll" /pdbtype:sept /libpath:"..\..\Debug_TS" /libpath:"..\..\..\php_build\release"\r
-\r
-!ENDIF \r
-\r
-# Begin Target\r
-\r
-# Name "zip - Win32 Release_TS"\r
-# Name "zip - Win32 Debug_TS"\r
-# Begin Group "Source Files"\r
-\r
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
-# Begin Source File\r
-\r
-SOURCE=.\zip.c\r
-# End Source File\r
-# End Group\r
-# Begin Group "Header Files"\r
-\r
-# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
-# Begin Source File\r
-\r
-SOURCE=.\php_zip.h\r
-# End Source File\r
-# End Group\r
-# End Target\r
-# End Project\r