Re: cvs: php4 /ext/skeleton/ create_module php_skeleton.h skeleton.c skeleton.php
| From: | Andi Gutmans | Date: | Fri, 09 Jun 2000 08:24:07 +0000 |
| Subject: | Re: cvs: php4 /ext/skeleton/ create_module php_skeleton.h skeleton.c skeleton.php | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-109@lists.php.net to get a copy of this message | ||
We've been waiting for something like this a long time :)
Thanks,
Andi
At 02:51 AM 6/9/00 +0000, Jouni Ahto wrote:
--- Andi Gutmans <andi@zend.com> http://www.zend.com/jah Thu Jun 8 19:51:43 2000 EDTAdded files:/php4/ext/skeleton create_module php_skeleton.h skeleton.c skeleton.phpLog: - Added skeleton module creating script. Index: php4/ext/skeleton/php_skeleton.h +++ php4/ext/skeleton/php_skeleton.h /* +----------------------------------------------------------------------+| PHP version 4.0 |+----------------------------------------------------------------------+| Copyright (c) 1997, 1998, 1999, 2000 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. |+----------------------------------------------------------------------+| Authors: |+----------------------------------------------------------------------+ */ /* $Id: */ #ifndef _PHP__EXTNAME__H #define _PHP__EXTNAME__H #if COMPILE_DL #undef HAVE__EXTNAME_ #define HAVE__EXTNAME_ 1 #endif /* You should tweak config.m4 so this symbol (or some else suitable) gets defined. */ #if HAVE__EXTNAME_ extern zend_module_entry _extname__module_entry; #define _extname__module_ptr &_extname__module_entry #ifdef PHP_WIN32 #define PHP__EXTNAME__API __declspec(dllexport) #else #define PHP__EXTNAME__API #endif PHP_MINIT_FUNCTION(_extname_); PHP_MSHUTDOWN_FUNCTION(_extname_); PHP_RINIT_FUNCTION(_extname_); PHP_RSHUTDOWN_FUNCTION(_extname_); PHP_MINFO_FUNCTION(_extname_); PHP_FUNCTION(_extname__test); /* For testing, remove later. */ typedef struct {/* Fill in this structure and use entries in it for thread safety instead of using true globals. */} php__extname__globals; /* In every function that needs to use variables in php__extname__globals, do call _EXTNAME_LS_FETCH(); after declaring other variables used by that function, and always refer to them as _EXTNAME_G(variable). You are encouraged to rename these macros something shorter, see examples in any other php module directory. */ #ifdef ZTS #define _EXTNAME_G(v) (_extname__globals->v) #define _EXTNAME_LS_FETCH() php__extname__globals *_extname__globals = ts_resource(gd__extname__id) #else #define _EXTNAME_G(v) (_extname__globals.v) #define _EXTNAME_LS_FETCH() #endif #else #define _extname__module_ptr NULL #endif #define phpext__extname__ptr _extname__module_ptr #endif /* _PHP__EXTNAME__H */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ Index: php4/ext/skeleton/skeleton.c +++ php4/ext/skeleton/skeleton.c /* +----------------------------------------------------------------------+| PHP version 4.0 |+----------------------------------------------------------------------+| Copyright (c) 1997, 1998, 1999, 2000 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. |+----------------------------------------------------------------------+| Authors: |+----------------------------------------------------------------------+ */ /* $Id: */ #include "php.h" #include "php_ini.h" #include "php__extname_.h" /* You should tweak config.m4 so this symbol (or some else suitable) gets defined. */ #if HAVE__EXTNAME_ /* Use this for type if your module registers any resources. You can of course rename it and add more if needed. These can be true globals, they don't need thread safety. Remove if not needed. */ static int le_extname_; #ifdef ZTS int _extname__globals_id; #else php__extname__globals _extname__globals; #endif /* Every user visible function must have an entry in _extname_functions[]. */ function_entry _extname__functions[] = {PHP_FE(_extname__test, NULL) {NULL, NULL, NULL} /* Must be the last line in $extension_functions[] */}; zend_module_entry _extname__module_entry = {"_extname_", _extname__functions, PHP_MINIT(_extname_), PHP_MSHUTDOWN(_extname_), PHP_RINIT(_extname_), /* Replace with NULL if there's nothing to do at request start */ PHP_RSHUTDOWN(_extname_), /* Replace with NULL if there's nothing to do at request end */ PHP_MINFO(_extname_), STANDARD_MODULE_PROPERTIES}; #ifdef COMPILE_DL__EXTNAME_ ZEND_GET_MODULE(_extname_) #endif /* Remove comments and fill if you need to have entries in php.ini PHP_INI_BEGIN() PHP_INI_END() */ PHP_MINIT_FUNCTION(_extname_) { /* Remove comments if you have entries in php.iniREGISTER_INI_ENTRIES();*/return SUCCESS;} PHP_MSHUTDOWN_FUNCTION(_extname_) { /* Remove comments if you have entries in php.iniUNREGISTER_INI_ENTRIES();*/return SUCCESS;} /* Remove if there's nothing to do at request start */ PHP_RINIT_FUNCTION(_extname_) {return SUCCESS;} /* Remove if there's nothing to do at request end */ PHP_RSHUTDOWN_FUNCTION(_extname_) {return SUCCESS;} PHP_MINFO_FUNCTION(_extname_) {php_info_print_table_start(); php_info_print_table_header(2, "_extname_ support", "enabled"); php_info_print_table_end();/* Remove comments if you have entries in php.ini DISPLAY_INI_ENTRIES(); */} /* Remove the following function when you have succesfully modified config.m4 so that your module can be compiled into PHP, it exists only for testing purposes. */ /* Every user-visible function in PHP should document itself in the source */ /* {{{ proto string _extname__test(string arg) Return a string to confirm that the module is compiled in */ PHP_FUNCTION(_extname__test) {zval **arg; int len; char string[256];if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { WRONG_PARAM_COUNT; }convert_to_string_ex(arg);len = sprintf(string, "Congratulations, you have successfully modified ext/_extname_/config.m4, module %s is compiled in PHP", Z_STRVAL_PP(arg)); RETVAL_STRINGL(string, len, 1);} /* }}} */ /* The previous line is meant for emacs, so it can correctly fold and unfold functions in source code. See the corresponding marks just before function definition, where the functions purpose is also documented. */ #endif /* HAVE__EXTNAME_ */ /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: */ Index: php4/ext/skeleton/skeleton.php +++ php4/ext/skeleton/skeleton.php <? $module = '_extname_'; $function = $module . '_test'; if (extension_loaded($module)) {$str = $function($module);} else {$str = "Module $module is not compiled in PHP";} echo "$str\n"; ?> -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net For additional commands, e-mail: php-cvs-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net