cvs: php4 /ext/skeleton/ create_module php_skeleton.h skeleton.c skeleton.php
| From: | Jouni Ahto | Date: | Fri, 09 Jun 2000 02:51:43 +0000 |
| Subject: | cvs: php4 /ext/skeleton/ create_module php_skeleton.h skeleton.c skeleton.php | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-100@lists.php.net to get a copy of this message | ||
jah Thu Jun 8 19:51:43 2000 EDT
Added files:
/php4/ext/skeleton create_module php_skeleton.h skeleton.c
skeleton.php
Log:
- 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.ini
REGISTER_INI_ENTRIES();
*/
return SUCCESS;
}
PHP_MSHUTDOWN_FUNCTION(_extname_)
{
/* Remove comments if you have entries in php.ini
UNREGISTER_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";
?>