summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorHartmut Holzgraefe <hholzgra@php.net>2003-06-29 12:21:58 +0000
committerHartmut Holzgraefe <hholzgra@php.net>2003-06-29 12:21:58 +0000
commit7218a70ff684e476a2fd4f0ed75a466de5f5c724 (patch)
treedd197ca646a537e508e45f6e249f434b3cb119e3 /scripts
parent4aa81c9d72395c5f8ca0a6decef51c6eff1904be (diff)
downloadphp-git-7218a70ff684e476a2fd4f0ed75a466de5f5c724.tar.gz
ext_skel is no more, and ext_skel_ng is moving to PEAR::PECL_Gen
Diffstat (limited to 'scripts')
-rw-r--r--scripts/ext_skel_ng/BUGS2
-rw-r--r--scripts/ext_skel_ng/README36
-rw-r--r--scripts/ext_skel_ng/TODO35
-rw-r--r--scripts/ext_skel_ng/config_m4.php28
-rw-r--r--scripts/ext_skel_ng/dummy.gifbin377 -> 0 bytes
-rw-r--r--scripts/ext_skel_ng/ext_skel_ng.php73
-rw-r--r--scripts/ext_skel_ng/extension.dtd126
-rw-r--r--scripts/ext_skel_ng/extension.xml178
-rw-r--r--scripts/ext_skel_ng/extension_parser.php1395
-rw-r--r--scripts/ext_skel_ng/license.php42
-rw-r--r--scripts/ext_skel_ng/license_bsd.php70
-rw-r--r--scripts/ext_skel_ng/license_lgpl.php540
-rw-r--r--scripts/ext_skel_ng/license_php.php93
-rw-r--r--scripts/ext_skel_ng/php_constant.php83
-rw-r--r--scripts/ext_skel_ng/php_element.php76
-rw-r--r--scripts/ext_skel_ng/php_function.php426
-rw-r--r--scripts/ext_skel_ng/php_global.php85
-rw-r--r--scripts/ext_skel_ng/php_ini.php117
-rw-r--r--scripts/ext_skel_ng/php_logo.php52
-rw-r--r--scripts/ext_skel_ng/php_resource.php75
-rw-r--r--scripts/ext_skel_ng/xml_stream_callback_parser.php36
-rw-r--r--scripts/ext_skel_ng/xml_stream_parser.php54
22 files changed, 0 insertions, 3622 deletions
diff --git a/scripts/ext_skel_ng/BUGS b/scripts/ext_skel_ng/BUGS
deleted file mode 100644
index 7577411252..0000000000
--- a/scripts/ext_skel_ng/BUGS
+++ /dev/null
@@ -1,2 +0,0 @@
-(just that this file is currently empty does not
- prove that there are no bugs in this software ;) \ No newline at end of file
diff --git a/scripts/ext_skel_ng/README b/scripts/ext_skel_ng/README
deleted file mode 100644
index 10d5cfd355..0000000000
--- a/scripts/ext_skel_ng/README
+++ /dev/null
@@ -1,36 +0,0 @@
-sorry, no real documentation yet ...
-just a short look at what is going on
-
-ext_skel_ng.php gets an extension description
-from an "extension.xml" file and generates working
-code and documentation stubs from that
-
-call "php ext_skel_ng.php" to see it at work,
-it will create a dummy extension including
-
-- module globals and ini paramter setup
-- function registration and stubbs
-- documentation framework
-- config.m4 (only minimal for now)
-- ...
-
-almost every aspect of an extension may now be
-configured using one xml description file instead
-of the old mixture of command line parameters
-and a proto file
-
-it is even possible to embed function code into
-the xml description right away, so it should be
-possible to create complete working extensions
-from just the xml description without further
-editing in a not to distant future
-
-for now almost all the 'helpfull comments' have
-been removed from the generated code. some of
-them (like 'uncomment this if you have ini params)
-just don't make sense anymore, others will come
-back (configurable) at a later state
-
-... have fun!
-
-Hartmut Holzgraefe <hholzgra@php.net>
diff --git a/scripts/ext_skel_ng/TODO b/scripts/ext_skel_ng/TODO
deleted file mode 100644
index 5e8215f0fd..0000000000
--- a/scripts/ext_skel_ng/TODO
+++ /dev/null
@@ -1,35 +0,0 @@
-- *more* input checking
- - XML level (libxml2 does cover all this?)
- - needed attributes given
- - tag nesting ok
- - tags closed properly
- - ...
- - code level
- - use of reserved names
- - duplicate names
- - ...
- - ...
-- config.m4 support for
- - header checks
- - ...
-- class implementation and documentation support
-- docbook namespace support
-- protos
- - object type specification (as in resources)
- - default values (needs tokenizer/parser changes ...)
- - code generation for 'pass by refecence' and 'return by reference'
- - ? option for 'old style' parameter parsing code generation ?
- (less readable but faster and more flexible)
-- more licenses
- - GPL (with exception to allow linking against PHP)
- - QPL
- - MPL?
- - Artistic
- - ...
- - dual/multiple licensing?
-- full support for stream wrappers and filters
-- code generation for custom test tags
-- XShema instead of DTD
-- VC++ 7 (VS.net) project files
-- create just function stubs instead of complete
- extension (as supported by the old ext_skel)
diff --git a/scripts/ext_skel_ng/config_m4.php b/scripts/ext_skel_ng/config_m4.php
deleted file mode 100644
index af0a16d513..0000000000
--- a/scripts/ext_skel_ng/config_m4.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-class config_m4 {
- # name, with[], libs[], language, files[]
- var $name;
- var $language = "c";
- var $with = false;
- var $libs = array();
- var $files = array();
-
- function __construct($name) {
- $this->name = $name;
- }
-
- function write_file() {
- $upname = strtoupper($this->name);
-
- // CVS ID header
- echo
-'dnl
-dnl $ Id: $
-dnl
-';
-
- }
-}
-
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/dummy.gif b/scripts/ext_skel_ng/dummy.gif
deleted file mode 100644
index e44ab4306a..0000000000
--- a/scripts/ext_skel_ng/dummy.gif
+++ /dev/null
Binary files differ
diff --git a/scripts/ext_skel_ng/ext_skel_ng.php b/scripts/ext_skel_ng/ext_skel_ng.php
deleted file mode 100644
index bb5e23b004..0000000000
--- a/scripts/ext_skel_ng/ext_skel_ng.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
- $min_version = "5.0.0-dev";
- if (!function_exists("version_compare") || version_compare(phpversion(), $min_version) <0) {
- die("need at least PHP version $min_version, you are running ".phpversion());
- }
-
- require_once "extension_parser.php";
- require_once "System.php";
-
- // parse command line arguments
- if (isset($_SERVER['argv'][1])) {
- $filename = $_SERVER["argv"][1];
- echo "using '$filename' as specification file\n";
- } else {
- $filename = "extension.xml";
- echo "using default file '$filename' as specification file\n";
- }
-
- // open specification file
- $fp = fopen($filename, "r");
- if (!is_resource($fp)) {
- error_log("can't read specification file '$filename'");
- exit;
- }
-
- // parse specification file
- $ext = new extension_parser($fp);
- fclose($fp);
-
- // purge and create extension directory
- System::rm("-rf {$ext->name}");
- mkdir($ext->name);
-
- // write LICENSE file
- if(is_object($ext->license)) {
- $ext->license->write_license_file("{$ext->name}/LICENSE");
- }
-
- // generate code
- $ext->write_header_file();
- $ext->write_code_file();
- if (isset($ext->logo)) {
- $fp = fopen("{$ext->name}/{$ext->name}_logo.h", "w");
- fwrite($fp, $ext->logo->h_code());
- fclose($fp);
- }
-
- // generate project files for configure (unices and similar platforms like cygwin)
- if ($ext->platform === "all" || in_array("unix", $ext->platform)) {
- $ext->write_config_m4();
- }
-
- // generate project files for Windows platform (VisualStudio/C++ V6)
- if ($ext->platform === "all" || in_array("win32", $ext->platform)) {
- $ext->write_ms_devstudio_dsp();
- }
-
- // generate EXPERIMENTAL file for unstable release states
- $ext->write_experimental();
-
- // generate CREDITS file
- $ext->write_credits();
-
- // generate PEAR/PECL package.xml file
- $ext->write_package_xml();
-
- // generate DocBook XML documantation for PHP manual
- $ext->generate_documentation();
-
- // generate test case templates
- $ext->write_test_files();
-
-?>
diff --git a/scripts/ext_skel_ng/extension.dtd b/scripts/ext_skel_ng/extension.dtd
deleted file mode 100644
index bb8de1f493..0000000000
--- a/scripts/ext_skel_ng/extension.dtd
+++ /dev/null
@@ -1,126 +0,0 @@
-<!ELEMENT extension (name|summary|description|license|maintainers|logo|release|changelog|functions|constants|globals|deps|resources|code|streams|tests)*>
-
-<!ELEMENT name (#PCDATA)>
-
-<!ELEMENT summary (#PCDATA)>
-
-<!ELEMENT description (#PCDATA)>
-
-<!ELEMENT maintainers (maintainer)+>
-
-<!ELEMENT maintainer (user|role|name|email)*>
-
-<!ELEMENT logo (#PCDATA)>
-<!ATTLIST logo
- src CDATA #REQUIRED
->
-
-<!ELEMENT user (#PCDATA)>
-
-<!ELEMENT role (#PCDATA)>
-
-<!ELEMENT email (#PCDATA)>
-
-<!ELEMENT changelog (release)*>
-
-<!ELEMENT release (version|license|state|date|notes|filelist|deps)*>
-
-<!ELEMENT version (#PCDATA)>
-
-<!ELEMENT state (#PCDATA)>
-
-<!ELEMENT license (#PCDATA)>
-
-<!ELEMENT date (#PCDATA)>
-
-<!ELEMENT notes (#PCDATA)>
-
-<!ELEMENT functions (function)*>
-<!ELEMENT function (summary|proto|description|code)*>
-<!ATTLIST function
- role (internal|private|public) "public"
- name CDATA #REQUIRED
->
-<!ELEMENT proto (#PCDATA)>
-<!ELEMENT code (#PCDATA)>
-<!ATTLIST code
- role (header|code) "code"
->
-<!ELEMENT constants (constant)*>
-<!ELEMENT constant (#PCDATA)>
-<!ATTLIST constant
- name CDATA #REQUIRED
- value CDATA #REQUIRED
- type (string|int|float) "string"
->
-
-<!ELEMENT globals (phpini|global)*>
-<!ELEMENT phpini (#PCDATA)>
-<!ATTLIST phpini
- name CDATA #REQUIRED
- type CDATA #REQUIRED
- value CDATA #REQUIRED
- access (system|perdir|user|all) "all"
- onupdate CDATA #IMPLIED
->
-<!ELEMENT global (#PCDATA)>
-<!ATTLIST global
- name CDATA #REQUIRED
- type CDATA #REQUIRED
->
-
-<!ELEMENT deps (with|lib|header|file|program)*>
-<!ATTLIST deps
- language (c|cpp) "c"
- platform (unix|win32|all) "all"
->
-<!ELEMENT with (#PCDATA)>
-<!ATTLIST with
- defaults CDATA #REQUIRED
- testfile CDATA #REQUIRED
- name CDATA #IMPLIED
->
-<!ELEMENT lib (#PCDATA)>
-<!ATTLIST lib
- name CDATA #REQUIRED
- function CDATA #REQUIRED
- searchpath CDATA #IMPLIED
- platform (unix|win32|all) "all"
->
-<!ELEMENT header (#PCDATA)>
-<!ATTLIST header
- name CDATA #REQUIRED
- function CDATA #IMPLIED
- searchpath CDATA #IMPLIED
- prepend (yes|no) "no"
->
-
-<!ELEMENT resources (resource)*>
-<!ELEMENT resource (description?, destruct?)>
-<!ATTLIST resource
- name CDATA #REQUIRED
- payload CDATA #IMPLIED
- alloc (yes|no) "no"
->
-<!ELEMENT destruct (#PCDATA)>
-
-<!ELEMENT streams (stream)*>
-<!ELEMENT stream (description?, ops?, data?)>
-<!ATTLIST stream
- name CDATA #REQUIRED
->
-<!ELEMENT ops (op)*>
-<!ELEMENT op (#PCDATA)>
-<!ATTLIST op
- name CDATA #REQUIRED
->
-
-
-<!ELEMENT tests (test)*>
-<!ELEMENT test (title, skipif?, post?, get?, code, output)>
-<!ELEMENT title (#PCDATA)>
-<!ELEMENT skipif (#PCDATA)>
-<!ELEMENT post (#PCDATA)>
-<!ELEMENT get (#PCDATA)>
-<!ELEMENT code (#PCDATA)>
-<!ELEMENT output (#PCDATA)>
diff --git a/scripts/ext_skel_ng/extension.xml b/scripts/ext_skel_ng/extension.xml
deleted file mode 100644
index 03603bbd6d..0000000000
--- a/scripts/ext_skel_ng/extension.xml
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE extension SYSTEM "extension.dtd">
-<extension>
- <name>dummy</name>
- <summary>experimental dummy extension</summary>
- <description>
- this is used for testing of the extension generater only
- </description>
-
- <maintainers>
- <maintainer>
- <user>hholzgra</user>
- <name>Hartmut Holzgraefe</name>
- <email>hholzgra@php.net</email>
- <role>lead</role>
- </maintainer>
- <maintainer>
- <user>dummy</user>
- <name>Crashtest Dummy</name>
- <email>dummy@example.com</email>
- <role>dummy</role>
- </maintainer>
- </maintainers>
-
- <logo src='dummy.gif'></logo>
-
- <release>
- <version>0.1</version>
- <date>2002-02-16</date>
- <state>alpha</state>
- <license>php</license>
- <notes>
- - first experimental draft
- </notes>
- </release>
-
- <changelog>
- </changelog>
-
-
- <deps language="c">
- <!-- these are not yet used in any way :( -->
- <with defaults='/usr:/usr/local' testfile='include/dummy.h'></with>
- <lib name='dummy' function='dummy' searchpath='/usr/lib:/lib'></lib>
- </deps>
-
- <constants>
- <constant name="DUMMY_OK" type="int" value="1">dummy ok status</constant>
- <constant name="DUMMY_ERR" type="int" value="0">dummy fault status</constant>
- </constants>
-
- <globals>
- <global name="foobar" type="int"></global>
- <phpini name="foo_int" type="int" value="42" access="system">some int value</phpini>
- <phpini name="foo_bool" type="int" value="on" access="all" onupdate="OnUpdateBool"></phpini>
- <phpini name="foo_string" type="string" value="foobar" access="all" ></phpini>
- </globals>
-
- <resources>
- <resource name="dummy_resource" payload="char *">
- <description>
- a dummy string resource
- </description>
- <destruct>
-<![CDATA[
- free(resource);
-]]>
- </destruct>
- </resource>
- <resource name="dummy_resource2">
- </resource>
- </resources>
-
-
- <functions>
-
- <function role='internal' name='MINIT'>
- <code>
-<![CDATA[
- int dummy = 42;
-
- dummy = dummy;
-]]>
- </code>
- </function>
-
- <function role='internal' name='MSHUTDOWN'>
- <code>
-<![CDATA[
- int dummy = 42;
-
- dummy = dummy;
-]]>
- </code>
- </function>
-
- <function role='internal' name='RINIT'>
- <code>
-<![CDATA[
- int dummy = 42;
-
- dummy = dummy;
-]]>
- </code>
- </function>
-
- <function role='internal' name='RSHUTDOWN'>
- <code>
-<![CDATA[
- int dummy = 42;
-
- dummy = dummy;
-]]>
- </code>
- </function>
-
- <function role='internal' name='MINFO'>
- <code>
-<![CDATA[
- php_info_print_table_start();
- php_info_print_table_header(2, "test", "table");
- php_info_print_table_end();
-]]>
- </code>
- </function>
-
- <function role='private' name='myfunc'>
- <code>
-<![CDATA[
- static int myfunc(void) {
- return 23;
- }
-]]>
- </code>
- </function>
-
-
- <function role='public' name='dummy_int'>
- <summary>dummy integer conversion</summary>
- <proto>int dummy_int(int bar)</proto>
- <description>
-some funcy longer description
-
-foo
-bar
- </description>
- </function>
-
- <function role='public' name='dummy_resource'>
- <summary>dummy resource test</summary>
- <proto>resource dummy_resource(resource bar)</proto>
- </function>
-
- <function name='dummy_string'>
- <summary>dummy string conversion</summary>
- <proto>string dummy_string(string bar) foobar</proto>
- <code>
-<![CDATA[
- RETURN_STRINGL(bar, bar_len, 1);
-]]>
- </code>
- </function>
-
- <function name="dummy_void">
- <proto>void dummy_void(void)</proto>
- </function>
-
- <function name="dummy_void2">
- <proto>void dummy_void2()</proto>
- </function>
-
- <function name="dummy_stream">
- <proto>stream dummy_stream(stream s)</proto>
- </function>
-
- </functions>
-
-</extension> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/extension_parser.php b/scripts/ext_skel_ng/extension_parser.php
deleted file mode 100644
index 30793a3407..0000000000
--- a/scripts/ext_skel_ng/extension_parser.php
+++ /dev/null
@@ -1,1395 +0,0 @@
-<?php
- // {{{ includes
-
- require_once "php_element.php";
- require_once "php_constant.php";
- require_once "php_function.php";
- require_once "php_resource.php";
- require_once "php_ini.php";
- require_once "php_global.php";
- require_once "php_logo.php";
-
- require_once "license.php";
-
- require_once "xml_stream_parser.php";
- require_once "xml_stream_callback_parser.php";
-
- // }}}
-
- class extension_parser extends xml_stream_callback_parser {
-
- // {{{ constructor
-
- function __construct($stream) {
- $this->name = "extension";
-
- $this->release = array("version" => "unknown",
- "date" => date("Y-m-d"),
- "state" => "",
- "license" => "unknown",
- "notes" => "",
- );
-
- $this->constants = array();
- $this->resources = array();
- $this->streams = array();
- $this->functions = array();
- $this->internal_functions = array();
- $this->private_functions = array();
- $this->globals = array();
- $this->phpini = array();
- $this->users = array();
- $this->dependson = array();
- $this->code = array();
- $this->libs = array();
- $this->headers = array();
- $this->language = "c";
- $this->platform = "all";
-
- $this->files = array("c" => array(),
- "h" => array(),
- "conf" => array(),
- "doc" => array()
- );
-
- parent::__construct($stream);
- }
-
- // }}}
-
- // {{{ helper methods
-
- function _check_c_name($name, $msg) {
- if (!ereg("^[[:alpha:]_][[:alnum:]_]*$", $name)) {
- $this->error("$name is not a valid $msg");
- }
- }
-
- function _trimdata() {
- $text = preg_replace('|^\s*\n|m','', $this->cdata);
- $text = preg_replace('|\n\s*$|m',"\n", $text);
- return $text;
- }
-
-
- // }}}
-
- // {{{ parsing
-
- // {{{ general infos
- function handle_extension_name($attr) {
- $this->name = trim($this->cdata);
- $this->_check_c_name($this->name, "extension name");
- }
-
- function handle_extension_summary($attr) {
- $this->summary = trim($this->cdata);
- }
-
- function handle_extension_description($attr) {
- $this->description = $this->_trimdata();
- }
-
- function handle_extension_logo($attr) {
- $this->logo = new php_logo($this->name, $attr);
- }
-
-
- function handle_release_version($attr) {
- $this->release['version'] = trim($this->cdata);
- }
-
- function handle_release_state($attr) {
- $this->release['state'] = trim($this->cdata);
- }
-
- function handle_release_license($attr) {
- $this->release['license'] = trim($this->cdata);
- $this->license = license::factory($this->release['license']);
- if (is_object($this->license)) {
- $this->license->write_license_file();
- $this->files['doc'][] = "LICENSE";
- }
- }
-
- function handle_release_notes($attr) {
- $this->release['notes'] = trim($this->cdata);
- }
-
- function handle_maintainers_maintainer_user($attr) {
- $this->user["user"] = trim($this->cdata);
- }
-
- function handle_maintainers_maintainer_name($attr) {
- $this->user["name"] = trim($this->cdata);
- }
-
- function handle_maintainers_maintainer_email($attr) {
- $this->user["email"] = trim($this->cdata);
- }
-
- function handle_maintainers_maintainer_role($attr) {
- $this->user["role"] = trim($this->cdata);
- }
-
- function handle_maintainers_maintainer($attr) {
- $this->users[$this->user["name"]] = $this->user;
- unset($this->user);
- }
-
-
-
- // }}}
-
- // {{{ dependencies
-
- function handle_deps($attr) {
- if (isset($attr["language"])) $this->language = $attr["language"];
- if (isset($attr['platform'])) {
- if ($attr['platform'] != "all") {
- $this->platform = split("[[:space:]]*,[[:space:]]*", trim($attr['platform']));
- }
- } else {
- $this->platform = "all";
- }
- }
-
- function handle_deps_lib($attr) {
- $this->libs[$attr['name']] = $attr;
- if (isset($attr['platform'])) {
- if ($attr['platform'] != "all") {
- $this->libs[$attr['name']]['platform'] = split("[[:space:]]*,[[:space:]]*", trim($attr['platform']));
- }
- } else {
- $this->libs[$attr['name']]['platform'] = "all";
- }
- }
-
- function handle_deps_header($attr) {
- $this->headers[$attr['name']] = $attr;
- }
-
- function handle_deps_with($attr) {
- $this->with = array();
- $this->with['attr'] = $attr;
- $this->with['desc'] = trim($this->cdata);
- }
-
- // }}}
-
- // {{{ constants
-
- function handle_constants_constant($attr) {
- $constant = new php_constant($attr, $this->_trimdata);
- if (isset($constant->error)) {
- $this->error($constant->error);
- }
- $this->constants[$attr['name']] = $constant;
- }
-
- // }}}
-
- // {{{ streams
- function hamdle_steams($attr) {
- }
-
- function hamdle_steams_stream($attr) {
- $this->streams[$attr['name']] = new php_stream($attr, $this->stream_data);
- unset($this->stream_data);
- }
-
- function hamdle_steams_stream_description($attr) {
- $this->stream_data['desc'] = $this->_trimdata;
- }
-
- function hamdle_steams_stream_ops($attr) {
- }
-
- function hamdle_steams_stream_ops_op($attr) {
- }
-
- function hamdle_steams_stream_data($attr) {
- }
- // }}}
-
- // {{{ resources
-
- function handle_resources_resource_destruct($attr) {
- $this->resource_destruct = $this->_trimdata();
- }
-
- function handle_resources_resource_description($attr) {
- $this->resource_description = $this->_trimdata();
- }
-
- function handle_resources_resource($attr) {
- $resource = new php_resource($attr,
- @$this->resource_destruct,
- @$this->resource_description
- );
-
- if (isset($resource->error)) {
- $this->error($resource->error);
- }
-
- $this->resources[$attr['name']] = $resource;
- unset($this->resource_description);
- unset($this->resource_destruct);
- }
-
- // }}}
-
- // {{{ functions
-
- function handle_functions_function_summary($attr) {
- $this->func_summary = trim($this->cdata);
- }
-
- function handle_functions_function_proto($attr) {
- $this->func_proto = trim($this->cdata);
- }
-
- function handle_functions_function_description($attr) {
- $this->func_desc = $this->_trimdata();
- }
-
- function handle_functions_function_code($attr) {
- $this->func_code = $this->_trimdata();
- }
-
- function handle_code($attr) {
- $this->code[$attr["role"]][] = $this->_trimdata();
- }
-
- function handle_functions_function($attr) {
- $this->_check_c_name($attr['name'], "function name");
-
- $role = isset($attr['role']) ? $attr['role'] : "public";
- $function = new php_function($attr['name'],
- @$this->func_summary,
- @$this->func_proto,
- @$this->func_desc,
- @$this->func_code,
- $role);
-
- switch ($role) {
- case "internal":
- $this->internal_functions[$attr['name']] = $function;
- break;
- case "private":
- $this->private_functions[$attr['name']] = $function;
- break;
- case "public":
- if (is_string($function->status)) $this->error($function->status." in prototype");
- $this->functions[$attr['name']] = $function;
- break;
- default:
- $this->error("function role must be either public, private or internal");
- break;
- }
-
- unset($this->func_summary);
- unset($this->func_proto);
- unset($this->func_desc);
- unset($this->func_code);
- }
-
- // }}}
-
- // {{{ globals and php.ini
-
- function handle_globals_global($attr) {
- $this->globals[$attr["name"]] = new php_global($attr);
- if (isset($this->globals[$attr["name"]]->error)) {
- $this->error($this->globals[$attr["name"]]->error);
- }
- }
-
- function handle_globals_phpini($attr) {
- $attr["desc"] = $this->_trimdata();
-
- $ini = new php_ini($attr);
- if (isset($ini->error)) {
- $this->error($ini->error);
- }
- $this->phpini[$attr['name']] = $ini;
-
- // php.ini settings are stored in modul-global variables
- $attr['type'] = $ini->c_type;
- $global = new php_global($attr);
- $this->globals[$attr["name"]] = $global;
- if (isset($global->error)) {
- $this->error($global->error);
- }
- }
-
- // }}}
-
- // {{{ Tests
- function handle_tests_test($attr) {
- }
-
- function handle_tests_test_title($attr) {
- }
-
- function handle_tests_test_skipif($attr) {
- }
-
- function handle_tests_test_post($attr) {
- }
-
- function handle_tests_test_get($attr) {
- }
-
- function handle_tests_test_code($attr) {
- }
-
- function handle_tests_test_output($attr) {
- }
-
- // }}}
-
- // }}}
-
- // {{{ output generation
-
- // {{{ docbook documentation
-
- function generate_documentation() {
- $id_name = str_replace('_', '-', $this->name);
-
- mkdir("{$this->name}/manual");
-
- $docdir = "{$this->name}/manual/$id_name";
- mkdir($docdir);
-
- $fp = fopen("$docdir/reference.xml", "w");
- fputs($fp,
-"<?xml version='1.0' encoding='iso-8859-1'?>
-<!-- ".'$'."Revision: 1.1 $ -->
- <reference id='ref.$id_name'>
- <title>{$this->summary}</title>
- <titleabbrev>$id_name</titleabbrev>
-
- <partintro>
- <section id='$id_name.intro'>
- &reftitle.intro;
- <para>
-{$this->description}
- </para>
- </section>
-
- <section id='$id_name.requirements'>
- &reftitle.required;
- <para>
- </para>
- </section>
-
- &reference.$id_name.configure;
-
- <section id='$id_name.resources'>
- &reftitle.resources;
-");
-
- if (empty($this->resources)) {
- fputs($fp, " &no.resource;\n");
- } else {
- foreach ($this->resources as $resource) {
- fputs($fp, $resource->docbook_xml($this->name));
- }
- }
-
-
- fputs($fp,
-" </section>
-
- <section id='$id_name.constants'>
- &reftitle.constants;
-");
-
- if (empty($this->constants)) {
- fputs($fp, " &no.constants;\n");
- } else {
- fputs($fp, php_constant::docbook_xml_header($id_name));
-
- foreach ($this->constants as $constant) {
- fputs($fp, $constant->docbook_xml($this->name));
- }
-
- fputs($fp, php_constant::docbook_xml_footer());
- }
- fputs($fp,
-" </section>
-
- </partintro>
-
-&reference.$id_name.functions;
-
- </reference>
-");
- fputs($fp, php_element::docbook_editor_settings());
-
- fclose($fp);
-
- // configure options and dependencies have their own file
- $fp = fopen("$docdir/configure.xml","w");
-
- fputs($fp,"\n <section id='$id_name.requirements'>\n &reftitle.required;\n");
- if (empty($this->libs) && empty($this->headers)) {
- fputs($fp, " &no.requirement;\n");
- } else {
- // TODO allow custom text
- if (isset($this->libs)) {
- $libs = array();
- foreach ($this->libs as $lib) {
- $libs[] = $lib['name'];
- }
- $ies = count($libs)>1 ? "ies" :"y";
- fputs($fp, "<para>This extension requires the following librar$ies: ".join(",", $libs)."</para>\n");
- }
- if (isset($this->headers)) {
- $headers = array();
- foreach ($this->headers as $header) {
- $headers[] = $header['name'];
- }
- $s = count($headers)>1 ? "s" : "";
- fputs($fp, "<para>This extension requires the following header$s: ".join(",", $headers)."</para>\n");
- }
- }
- fputs($fp, "\n </section>\n\n");
-
- fputs($fp,"\n <section id='$id_name.install'>\n &reftitle.install;\n");
- if (empty($this->with)) {
- fputs($fp, " &no.install;\n");
- } else {
- if (isset($this->with['desc'])) {
- if (strstr($this->with['desc'], "<para>")) {
- fputs($fp, $this->with['desc']);
- } else {
- fputs($fp, " <para>\n".rtrim($this->with['desc'])."\n </para>\n");
- }
- } else {
- // TODO default text
- }
- }
- fputs($fp, "\n </section>\n\n");
-
- fputs($fp,"\n <section id='$id_name.configuration'>\n &reftitle.runtime;\n");
- if (empty($this->phpini)) {
- fputs($fp, " &no.config;\n");
- } else {
- fputs($fp, php_ini::docbook_xml_header($this->name));
- foreach ($this->phpini as $phpini) {
- fputs($fp, $phpini->docbook_xml());
- }
- fputs($fp, php_ini::docbook_xml_footer());
- }
- fputs($fp, "\n </section>\n\n");
-
- fputs($fp, php_element::docbook_editor_settings());
- fclose($fp);
-
- mkdir("$docdir/functions");
- foreach ($this->functions as $name => $function) {
- $filename = $docdir . "/functions/" . strtolower(str_replace("_", "-", $name)) . ".xml";
- $funcfile = fopen($filename, "w");
- fputs($funcfile, $function->docbook_xml());
- fclose($funcfile);
- }
- }
-
- // }}}
-
- // {{{ extension entry
-
- function generate_extension_entry() {
- $name = $this->name;
- $upname = strtoupper($this->name);
-
- $code = "
-/* {{{ {$name}_module_entry
- */
-zend_module_entry {$name}_module_entry = {
- STANDARD_MODULE_HEADER,
- \"$name\",
- {$name}_functions,
- PHP_MINIT($name), /* Replace with NULL if there is nothing to do at php startup */
- PHP_MSHUTDOWN($name), /* Replace with NULL if there is nothing to do at php shutdown */
- PHP_RINIT($name), /* Replace with NULL if there is nothing to do at request start */
- PHP_RSHUTDOWN($name), /* Replace with NULL if there is nothing to do at request end */
- PHP_MINFO($name),
- \"".$this->release['version']."\",
- STANDARD_MODULE_PROPERTIES
-};
-/* }}} */
-
-";
-
- $code .= "#ifdef COMPILE_DL_$upname\n";
- if ($this->language == "cpp") $code .= "extern \"C\" {\n";
- $code .= "ZEND_GET_MODULE($name)\n";
- if ($this->language == "cpp") $code .= "}\n";
- $code .= "#endif\n\n";
-
- return $code;
- }
-
- // }}}
-
- // {{{ globals and ini
-
- function generate_globals_c() {
- if (empty($this->globals)) return "";
-
- $code = "ZEND_DECLARE_MODULE_GLOBALS({$this->name})\n\n";
-
- if (!empty($this->phpini)) {
- $code .= php_ini::c_code_header($this->name);
- foreach ($this->phpini as $phpini) {
- $code .= $phpini->c_code($this->name);
- }
- $code .= php_ini::c_code_footer();
- }
-
- if (!empty($this->globals)) {
- $code .= php_global::c_code_header($this->name);
- foreach ($this->globals as $global) {
- $code .= $global->c_code($this->name);
- }
- $code .= php_global::c_code_footer($this->name);
- }
-
- return $code;
- }
-
- function generate_globals_h() {
- if (empty($this->globals)) return "";
-
- $code = php_global::h_code_header($this->name);
- foreach ($this->globals as $global) {
- $code .= $global->h_code($this->name);
- }
- $code .= php_global::h_code_footer($this->name);
-
- return $code;
- }
-
- // }}}
-
- // {{{ license and authoers
-
- function get_license() {
-
- $code = "/*\n";
- $code.= " +----------------------------------------------------------------------+\n";
-
- if (is_object($this->license)) {
- $code.= $this->license->license_comment();
- } else {
- $code.= sprintf(" | unkown license: %-52s |\n", $this->release['license']);
- }
-
- $code.= " +----------------------------------------------------------------------+\n";
- $prefix = "Authors: ";
- foreach ($this->users as $name => $user) {
- $code .= sprintf(" | $prefix %-58s |\n", "$user[name] <$user[email]>");
- $prefix = str_repeat(" ",strlen($prefix));
- }
- $code.= " +----------------------------------------------------------------------+\n";
- $code.= "*/\n\n";
-
- $code.= "/* $ Id: $ */ \n\n";
-
- return $code;
- }
-
- // }}}
-
- // {{{ editor config footer
-
- function editor_config_c() {
- return '
-/*
- * 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
- */
-';
- }
-
- // }}}
-
- // {{{ header file
-
- function write_header_file() {
- $filename = "php_{$this->name}.h";
-
- $this->files["h"][] = $filename;
- $fp = fopen("{$this->name}/$filename", "w");
-
- $upname = strtoupper($this->name);
-
- fputs($fp, $this->get_license());
- fputs($fp, "#ifndef PHP_{$upname}_H\n");
- fputs($fp, "#define PHP_{$upname}_H\n\n");
-
- if (isset($this->headers)) {
- foreach ($this->headers as $header) {
- if (@$header["prepend"] === "yes") {
- fputs($fp, "#include <$header[name]>\n");
- }
- }
- }
-
- if ($this->language == "cpp") {
- fputs($fp, "extern \"C\" {\n");
- }
-
- fputs($fp, '
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef HAVE_'.$upname.'
-
-#include <php.h>
-#include <php_ini.h>
-#include <SAPI.h>
-#include <ext/standard/info.h>
-
-');
-
- if ($this->language == "cpp") {
- fputs($fp, "}\n");
- }
-
- if (isset($this->headers)) {
- foreach ($this->headers as $header) {
- if (@$header["prepend"] !== "yes") {
- fputs($fp, "#include <$header[name]>\n");
- }
- }
- }
-
- if (isset($this->code["header"])) {
- foreach ($this->code["header"] as $code) {
- fputs($fp, $code);
- }
- }
-
- fputs($fp, "
-extern zend_module_entry {$this->name}_module_entry;
-#define phpext_{$this->name}_ptr &{$this->name}_module_entry
-
-#ifdef PHP_WIN32
-#define PHP_{$upname}_API __declspec(dllexport)
-#else
-#define PHP_{$upname}_API
-#endif
-
-PHP_MINIT_FUNCTION({$this->name});
-PHP_MSHUTDOWN_FUNCTION({$this->name});
-PHP_RINIT_FUNCTION({$this->name});
-PHP_RSHUTDOWN_FUNCTION({$this->name});
-PHP_MINFO_FUNCTION({$this->name});
-
-#ifdef ZTS
-#include \"TSRM.h\"
-#endif
-
-");
-
- fputs($fp, $this->generate_globals_h());
-
- fputs($fp, "\n");
-
- foreach ($this->functions as $name => $function) {
- fputs($fp, "PHP_FUNCTION($name);\n");
- }
-
- fputs($fp, "\n");
-
- fputs($fp, "#endif /* PHP_HAVE_{$upname} */\n\n");
- fputs($fp, "#endif /* PHP_{$upname}_H */\n\n");
-
- fputs($fp, $this->editor_config_c());
-
- fclose($fp);
- }
-
- // }}}
-
- // {{{ internal functions
-
- function internal_functions_c() {
- $need_block = false;
-
- $code = "
-/* {{{ PHP_MINIT_FUNCTION */
-PHP_MINIT_FUNCTION({$this->name})
-{
-";
-
- if (count($this->globals)) {
- $code .= "\tZEND_INIT_MODULE_GLOBALS({$this->name}, php_{$this->name}_init_globals, php_{$this->name}_shutdown_globals)\n";
- $need_block = true;
- }
-
- if (count($this->phpini)) {
- $code .= "\tREGISTER_INI_ENTRIES();\n";
- $need_block = true;
- }
-
- if (isset($this->logo)) {
- $code .= $this->logo->minit_code();
- $need_block = true;
- }
-
- if (count($this->constants)) {
- foreach ($this->constants as $constant) {
- $code .= $constant->c_code();
- }
- $need_block = true;
- }
-
- if (count($this->resources)) {
- foreach ($this->resources as $resource) {
- $code .= $resource->minit_code();
- }
- $need_block = true;
- }
-
- if (isset($this->internal_functions['MINIT'])) {
- if ($need_block) $code .= "\n\t{\n";
- $code .= $this->internal_functions['MINIT']->code;
- if ($need_block) $code .= "\n\t}\n";
- } else {
- $code .="\n\t/* add your stuff here */\n";
- }
- $code .= "
- return SUCCESS;
-}
-/* }}} */
-
-";
-
- $code .= "
-/* {{{ PHP_MSHUTDOWN_FUNCTION */
-PHP_MSHUTDOWN_FUNCTION({$this->name})
-{
-";
-
- if (count($this->phpini)) {
- $code .= "\tUNREGISTER_INI_ENTRIES();\n";
- }
-
- if (isset($this->internal_functions['MSHUTDOWN'])) {
- if (count($this->phpini)) $code .= "\n\t{\n";
- $code .= $this->internal_functions['MSHUTDOWN']->code;
- if (count($this->phpini)) $code .= "\n\t}\n";
- } else {
- $code .="\n\t/* add your stuff here */\n";
- }
-
- $code .= "
- return SUCCESS;
-}
-/* }}} */
-
-";
-
- $code .= "
-/* {{{ PHP_RINIT_FUNCTION */
-PHP_RINIT_FUNCTION({$this->name})
-{
-";
-
- if (isset($this->internal_functions['RINIT'])) {
- $code .= $this->internal_functions['RINIT']->code;
- } else {
- $code .= " /* add your stuff here */\n";
- }
-
- $code .= "
-\treturn SUCCESS;
-}
-/* }}} */
-
-";
-
- $code .= "
-/* {{{ PHP_RSHUTDOWN_FUNCTION */
-PHP_RSHUTDOWN_FUNCTION({$this->name})
-{
-";
-
- if (isset($this->internal_functions['RSHUTDOWN'])) {
- $code .= $this->internal_functions['RSHUTDOWN']->code;
- } else {
- $code .= " /* add your stuff here */\n";
- }
-
- $code .= "
-\treturn SUCCESS;
-}
-/* }}} */
-
-";
-
- $code .= "
-/* {{{ PHP_MINFO_FUNCTION */
-PHP_MINFO_FUNCTION({$this->name})
-{
- php_info_print_box_start(0);
-";
-
- if (isset($this->logo))
- {
- $code.= "
- php_printf(\"<img src='\");
- if (SG(request_info).request_uri) {
- php_printf(\"%s\", (SG(request_info).request_uri));
- }
- php_printf(\"?=%s\", ".($this->logo->id).");
- php_printf(\"' align={'right' alt='image' border='0'>\\n\");
-
-";
- }
-
- if (isset($this->summary)) {
- $code .= " php_printf(\"<p>".str_replace('"','\\"',$this->summary)."</p>\\n\");\n";
- }
- if (isset($this->release)) {
- $code .= " php_printf(\"<p>Version {$this->release['version']}{$this->release['state']} ({$this->release['date']})</p>\\n\");\n";
- }
-
- if (count($this->users)) {
- $code .= " php_printf(\"<p><b>Authors:</b></p>\\n\");\n";
- foreach ($this->users as $user) {
- $code .= " php_printf(\"<p>$user[name] &lt;$user[email]&gt; ($user[role])</p>\\n\");\n";
- }
- }
-
- $code.=
-" php_info_print_box_end();
-";
-
- if (isset($this->internal_functions['MINFO'])) {
- $code .= "\n\t{\n";
- $code .= $this->internal_functions['MINFO']->code;
- $code .= "\n\t}\n";
- } else {
- $code .= "\t/* add your stuff here */\n";
- }
-
-
-if (count($this->phpini)) {
- $code .= "\n\tDISPLAY_INI_ENTRIES();";
-}
-$code .= "
-}
-/* }}} */
-
-";
-
- return $code;
- }
-
- // }}}
-
-
- function private_functions_c() {
- $code = "";
-
- foreach ($this->private_functions as $name => $func) {
- $code .= "\n\t/* {{{ $name() */\n{$func->code}\n\t/* }}} */\n\n";
- }
-
- return $code;
- }
-
- // {{{ public functions
-
- function public_functions_c() {
- $code = "";
-
- foreach ($this->functions as $function) {
- $code .= $function->c_code(&$this);
- }
-
- return $code;
- }
-
- // }}}
-
-
- // {{{ code file
-
- function write_code_file() {
- $filename = "{$this->name}.{$this->language}"; // todo extension logic
-
- $this->files["c"][] = $filename;
- $fp = fopen("{$this->name}/$filename", "w");
-
- $upname = strtoupper($this->name);
-
- fputs($fp, $this->get_license());
-
- fputs($fp, "#include \"php_{$this->name}.h\"\n\n");
-
- if (isset($this->logo)) {
- fputs($fp, $this->logo->c_code());
- }
-
- if (!empty($this->globals)) {
- fputs($fp, "ZEND_DECLARE_MODULE_GLOBALS({$this->name})\n\n");
- }
-
- fputs($fp, $this->private_functions_c());
-
- if (!empty($this->resources)) {
- foreach ($this->resources as $resource) {
- fputs($fp, $resource->c_code());
- }
- }
-
- fputs($fp, "/* {{{ {$this->name}_functions[] */\n");
- fputs($fp, "function_entry {$this->name}_functions[] = {\n");
- foreach ($this->functions as $name => $function) {
- fputs($fp, sprintf("\tPHP_FE(%-20s, NULL)\n",$name));
- }
- fputs($fp, "\t{ NULL, NULL, NULL }\n");
- fputs($fp, "};\n/* }}} */\n\n");
-
- fputs($fp, $this->generate_extension_entry());
-
- fputs($fp, "\n/* {{{ globals and ini entries */\n");
- fputs($fp, $this->generate_globals_c());
- fputs($fp, "/* }}} */\n\n");
-
- fputs($fp, $this->internal_functions_c());
-
- fputs($fp, $this->public_functions_c());
-
- fputs($fp, $this->editor_config_c());
- }
-
- // }}}
-
-
- // {{{ config.m4 file
- function write_config_m4() {
- $upname = strtoupper($this->name);
-
- ob_start();
-
- echo
-'dnl
-dnl $ Id: $
-dnl
-';
-
- if (isset($this->with['attr'])) {
- echo "
-PHP_ARG_WITH({$this->name}, whether to enable {$this->name} functions,
-[ --with-{$this->name}[=DIR] With {$this->name} support], yes)
-";
-
- echo "
-if test \"\$PHP_$upname\" != \"no\"; then
- if test -r \"\$PHP_$upname/{$this->with['attr']['testfile']}\"; then
- PHP_{$upname}_DIR=\"\$PHP_$upname\"
- else
- AC_MSG_CHECKING(for {$this->name} in default path)
- for i in ".str_replace(":"," ",$this->with['attr']['defaults'])."; do
- if test -r \"\$i/{$this->with['attr']['testfile']}\"; then
- PHP_{$upname}_DIR=\$i
- AC_MSG_RESULT(found in \$i)
- fi
- done
- fi
-fi
-
-PHP_ADD_INCLUDE(\$PHP_{$upname}_DIR/include)
-";
-
- } else {
- echo "
-PHP_ARG_ENABLE({$this->name} , whether to enable {$this->name} functions,
-[ --disable-{$this->name} Disable {$this->name} support], yes)
-";
- }
-
- echo "\n";
-
-
- if (count($this->libs)) {
- $first = true;
-
- foreach ($this->libs as $lib) {
- if (is_array($lib['platform']) && !in_array("unix", $lib['platform'])) {
- continue;
- }
-
- if ($first) {
- echo "PHP_SUBST({$upname}_SHARED_LIBADD)\n\n";
- $first = false;
- }
-
- if (isset($this->with['attr'])) {
- echo "PHP_ADD_LIBRARY_WITH_PATH($lib[name], \$PHP_{$upname}_DIR/lib, {$upname}_SHARED_LIBADD)\n";
- } else {
- echo "PHP_ADD_LIBRARY($lib[name],, {$upname}_SHARED_LIBADD)\n";
- }
-
- if (isset($lib['function'])) {
- echo "AC_CHECK_LIB($lib[name], $lib[function], [AC_DEFINE(HAVE_".strtoupper($lib['name']).",1,[ ])], [AC_MSG_ERROR($lib[name] library not found or wrong version)],)\n";
- }
- }
- }
-
- echo "\n";
-
- if ($this->language === "cpp") {
- echo "PHP_REQUIRE_CXX\n";
- echo "PHP_ADD_LIBRARY(stdc++)\n";
- }
-
- echo "
-if test \"\$PHP_$upname\" != \"no\"; then
- AC_DEFINE(HAVE_$upname, 1, [ ])
- PHP_NEW_EXTENSION({$this->name}, ".join(" ", $this->files['c'])." , \$ext_shared)
-fi
-
-";
-
- $filename = "{$this->name}/config.m4";
- $this->files['conf'][] = basename($filename);
-
- $fp = fopen($filename, "w");
- fputs($fp, ob_get_contents());
- fclose($fp);
- ob_end_clean();
- }
-
- // }}}
-
- // {{{ M$ dev studio project file
-
- function write_ms_devstudio_dsp() {
- ob_start();
-
- // these system libraries are always needed?
- // (list taken from sample *.dsp files in php ext tree...)
- $winlibs = "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib ";
- $winlibs.= "shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib";
-
- // add libraries from <deps> section
- if (count($this->libs)) {
- foreach ($this->libs as $lib) {
- if (is_array($lib['platform']) && !in_array("win32", $lib['platform'])) {
- continue;
- }
- $winlibs .= " $lib[name].lib";
- }
- }
-
- echo
-'# Microsoft Developer Studio Project File - Name="'.$this->name.'" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG='.$this->name.' - Win32 Debug_TS
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "'.$this->name.'.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "'.$this->name.'.mak" CFG="'.$this->name.' - Win32 Debug_TS"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "'.$this->name.' - Win32 Release_TS" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "'.$this->name.' - Win32 Debug_TS" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "'.$this->name.' - Win32 Release_TS"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release_TS"
-# PROP BASE Intermediate_Dir "Release_TS"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release_TS"
-# PROP Intermediate_Dir "Release_TS"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "'.strtoupper($this->name).'_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I "..\..\TSRM" /I "..\..\main" /D "WIN32" /D "PHP_EXPORTS" /D "COMPILE_DL_'.strtoupper($this->name).'" /D ZTS=1 /D HAVE_'.strtoupper($this->name).'=1 /D ZEND_DEBUG=0 /D "NDEBUG" /D "_WINDOWS" /D "ZEND_WIN32" /D "PHP_WIN32" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x407 /d "NDEBUG"
-# ADD RSC /l 0x407 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 '.$winlibs.' /nologo /dll /machine:I386
-# ADD LINK32 php4ts.lib '.$winlibs.' /nologo /dll /machine:I386 /out:"..\..\Release_TS\php_'.$this->name.'.dll" /libpath:"..\..\Release_TS" /libpath:"..\..\Release_TS_Inline"
-
-!ELSEIF "$(CFG)" == "'.$this->name.' - Win32 Debug_TS"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug_TS"
-# PROP BASE Intermediate_Dir "Debug_TS"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug_TS"
-# PROP Intermediate_Dir "Debug_TS"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "'.strtoupper($this->name).'_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\Zend" /I "..\..\TSRM" /I "..\..\main" /D ZEND_DEBUG=1 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "PHP_EXPORTS" /D "COMPILE_DL_'.strtoupper($this->name).'" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_'.strtoupper($this->name).'=1 /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x407 /d "_DEBUG"
-# ADD RSC /l 0x407 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 '.$winlibs.' /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 php4ts_debug.lib '.$winlibs.' /nologo /dll /debug /machine:I386 /out:"..\..\Debug_TS\php_'.$this->name.'.dll" /pdbtype:sept /libpath:"..\..\Debug_TS"
-
-!ENDIF
-
-# Begin Target
-
-# Name "'.$this->name.' - Win32 Release_TS"
-# Name "'.$this->name.' - Win32 Debug_TS"
-';
-
-
- echo '
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-';
-
- foreach ($this->files['c'] as $filename) {
- if ($filename{0}!='/' && $filename{0}!='.') {
- $filename = "./$filename";
- }
- $filename = str_replace("/","\\",$filename);
-
- echo "
-# Begin Source File
-
-SOURCE=$filename
-# End Source File
-";
- }
-
-echo '
-# End Group
-';
-
-
-
-
-echo '
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-';
-
- foreach ($this->files['h'] as $filename) {
- if ($filename{0}!='/' && $filename{0}!='.') {
- $filename = "./$filename";
- }
- $filename = str_replace("/","\\",$filename);
-
- echo "
-# Begin Source File
-
-SOURCE=$filename
-# End Source File
-";
- }
-
-echo
-'# End Group
-# End Target
-# End Project
-';
-
- $filename = "{$this->name}/{$this->name}.dsp";
- $this->files['conf'][] = basename($filename);
-
- // write file, enforce DOS/Windows line endings on all platforms
- $fp = fopen($filename,"wb");
- fputs($fp, str_replace("\n","\r\n",ob_get_contents()));
- fclose($fp);
- ob_end_clean();
- }
-
-// }}}
-
-
- function write_credits() {
- if (count($this->users)) {
- $this->files['doc'][] = "CREDITS";
- $fp = fopen("{$this->name}/CREDITS", "w");
- fputs($fp, "{$this->name}\n");
- $names = array();
- foreach($this->users as $user) {
- if (isset($user['name'])) {
- $names[] = $user['name'];
- }
- }
- fclose($fp);
- }
- }
-
-
- function write_experimental() {
- if (isset($this->release['state']) && $this->release['state'] !== 'stable') {
- $this->files['doc'][] = "EXPERIMENTAL";
- $fp = fopen("{$this->name}/EXPERIMENTAL", "w");
- fputs($fp,
-"this extension is experimental,
-its functions may change their names
-or move to extension all together
-so do not rely to much on them
-you have been warned!
-");
- fclose($fp);
- }
- }
-
- function write_package_xml() {
- $status = false;
-
- ob_start();
-
- echo
-"<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
-<!DOCTYPE package SYSTEM \"../../package.dtd\">
-<package>
- <name>{$this->name}</name>
-";
-
- if (isset($this->summary)) {
- echo " <summary>{$this->summary}</summary>\n";
- }
-
- if (isset($this->description)) {
- echo " <description>\n".rtrim($this->description)."\n </description>\n";
- }
-
- if (isset($this->release['license'])) {
- echo " <license>".$this->release['license']."</license>\n";
- }
-
- if (isset($this->with['attr'])) {
- echo " <configureoptions>\n";
- echo " <configureoption name=\"{$this->name}\" default=\"shared\" prompt=\"{$this->name} installation directory?\" />\n";
- echo " </configureoptions>\n";
- }
-
- if (@is_array($this->users)) {
- echo "\n <maintainers>\n";
- foreach ($this->users as $user) {
- echo " <maintainer>\n";
- foreach (array("user","name","email","role") as $key) {
- if (isset($user[$key])) {
- echo " <$key>{$user[$key]}</$key>\n";
- }
- }
- echo " </maintainer>\n";
- }
- echo " </maintainers>\n";
- }
-
- if (is_array($this->release)) {
- echo "\n <release>\n";
- foreach (array("version","date","state","notes") as $key) {
- if (isset($this->release[$key])) {
- echo " <$key>{$this->release[$key]}</$key>\n";
- }
- }
- echo " </release>\n";
- }
-
- echo "\n <filelist>\n";
- echo " <dir role=\"doc\" name=\"/\">\n";
- if (@is_array($this->files['doc'])) {
- foreach ($this->files['doc'] as $file) {
- echo " <file role=\"doc\">$file</file>\n";
- }
- }
- if (@is_array($this->files['conf'])) {
- foreach ($this->files['conf'] as $file) {
- echo " <file role=\"src\">$file</file>\n";
- }
- }
- if (@is_array($this->files['c'])) {
- foreach ($this->files['c'] as $file) {
- echo " <file role=\"src\">$file</file>\n";
- }
- }
- if (@is_array($this->files['h'])) {
- foreach ($this->files['h'] as $file) {
- echo " <file role=\"src\">$file</file>\n";
- }
- }
-
- echo " </dir>\n";
- echo " </filelist>\n";
-
-
- echo "</package>\n";
-
- $fp = fopen("{$this->name}/package.xml", "w");
- if (is_resource($fp)) {
- fputs($fp, ob_get_contents());
- fclose($fp);
- }
-
- ob_end_clean();
- return $status;
- }
-
- // }}}
-
- function write_test_files() {
- mkdir("$this->name/tests");
-
- foreach ($this->functions as $function) {
- $function->write_test($this);
- }
- }
-
-}
-
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/license.php b/scripts/ext_skel_ng/license.php
deleted file mode 100644
index a2ed879902..0000000000
--- a/scripts/ext_skel_ng/license.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-abstract class license
-{
- function __construct($options = array()) {
- $this->options = $options;
- }
-
- static function factory($name, $options=array()) {
- $classname = "license_".strtolower($name);
-
- if (!class_exists($classname)) {
- if (file_exists("./$classname.php")) {
- require_once "./$classname.php";
- }
- }
-
- return
- class_exists($classname)
- ? new $classname($options)
- : false;
- }
-
- abstract function license_comment();
-
- function write_license_file($path = "./LICENSE") {
- $fp = fopen($path, "w");
-
- if (is_resource($fp)) {
- fputs($fp, $this->license_file_text());
- fclose($fp);
- return true;
- }
-
- return false;
- }
-
- abstract function license_file_text();
-}
-
-
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/license_bsd.php b/scripts/ext_skel_ng/license_bsd.php
deleted file mode 100644
index 8e1ad4a069..0000000000
--- a/scripts/ext_skel_ng/license_bsd.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-class license_lgpl extends license
-{
- function license_comment() {
- return <<<EOD
- | All rights reserved |
- | |
- | Redistribution and use in source and binary forms, with or without |
- | modification, are permitted provided that the following conditions |
- | are met: |
- | |
- | 1. Redistributions of source code must retain the above copyright |
- | notice, this list of conditions and the following disclaimer. |
- | 2. Redistributions in binary form must reproduce the above copyright |
- | notice, this list of conditions and the following disclaimer in |
- | the documentation and/or other materials provided with the |
- | distribution. |
- | 3. The names of the authors may not be used to endorse or promote |
- | products derived from this software without specific prior |
- | written permission. |
- | |
- | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
- | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
- | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
- | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
- | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
- | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
- | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
- | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
- | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
- | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
- | ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
- | POSSIBILITY OF SUCH DAMAGE. |
-
-EOD;
- }
-
- function license_file_text() {
- return <<<EOD
-All rights reserved
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. The names of the authors may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-EOD;
- }
-}
-
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/license_lgpl.php b/scripts/ext_skel_ng/license_lgpl.php
deleted file mode 100644
index cfdcf793a3..0000000000
--- a/scripts/ext_skel_ng/license_lgpl.php
+++ /dev/null
@@ -1,540 +0,0 @@
-<?php
-
-class license_lgpl extends license
-{
- function license_comment() {
- return <<<EOD
- | This library is free software; you can redistribute it and/or |
- | modify it under the terms of the GNU Lesser General Public |
- | License as published by the Free Software Foundation; either |
- | version 2.1 of the License, or (at your option) any later version. |
- | |
- | This library is distributed in the hope that it will be useful, |
- | but WITHOUT ANY WARRANTY; without even the implied warranty of |
- | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
- | Lesser General Public License for more details. |
- | |
- | You should have received a copy of the GNU Lesser General Public |
- | License in the file LICENSE along with this library; |
- | if not, write to the |
- | |
- | Free Software Foundation, Inc., |
- | 59 Temple Place, Suite 330, |
- | Boston, MA 02111-1307 USA |
-
-EOD;
- }
-
- function license_file_text() {
- ob_start();
-?>
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-<?php
- $text = ob_get_contents();
- ob_end_clean();
- return $text;
- }
-}
-
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/license_php.php b/scripts/ext_skel_ng/license_php.php
deleted file mode 100644
index 58065470e4..0000000000
--- a/scripts/ext_skel_ng/license_php.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-class license_php extends license
-{
- function license_comment() {
- return <<<EOD
- | This source file is subject to version 3.0 of the PHP license, |
- | that is bundled with this package in the file LICENSE, and is |
- | available through the world-wide-web at the following url: |
- | http://www.php.net/license/3_0.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. |
-
-EOD;
- }
-
- function license_file_text() {
- return <<<EOD
---------------------------------------------------------------------
- The PHP License, Version 3.0
-Copyright (c) 1999 - 2003 The PHP Group. All rights reserved.
---------------------------------------------------------------------
-
-Redistribution and use in source and binary forms, with or without
-modification, is permitted provided that the following conditions
-are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- 3. The name "PHP" must not be used to endorse or promote products
- derived from this software without prior written permission. For
- written permission, please contact group@php.net.
-
- 4. Products derived from this software may not be called "PHP", nor
- may "PHP" appear in their name, without prior written permission
- from group@php.net. You may indicate that your software works in
- conjunction with PHP by saying "Foo for PHP" instead of calling
- it "PHP Foo" or "phpfoo"
-
- 5. The PHP Group may publish revised and/or new versions of the
- license from time to time. Each version will be given a
- distinguishing version number.
- Once covered code has been published under a particular version
- of the license, you may always continue to use it under the terms
- of that version. You may also choose to use such covered code
- under the terms of any subsequent version of the license
- published by the PHP Group. No one other than the PHP Group has
- the right to modify the terms applicable to covered code created
- under this License.
-
- 6. Redistributions of any form whatsoever must retain the following
- acknowledgment:
- "This product includes PHP, freely available from
- <http://www.php.net/>".
-
-THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND
-ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP
-DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------
-
-This software consists of voluntary contributions made by many
-individuals on behalf of the PHP Group.
-
-The PHP Group can be contacted via Email at group@php.net.
-
-For more information on the PHP Group and the PHP project,
-please see <http://www.php.net>.
-
-This product includes the Zend Engine, freely available at
-<http://www.zend.com>.
-
-EOD;
- }
-}
-
-?>
diff --git a/scripts/ext_skel_ng/php_constant.php b/scripts/ext_skel_ng/php_constant.php
deleted file mode 100644
index 4f377a963d..0000000000
--- a/scripts/ext_skel_ng/php_constant.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
- class php_constant extends php_element {
-
- function __construct($attr, $desc) {
-
- $this->name = $attr["name"];
- if (!$this->is_name($this->name)) {
- $this->error[] = "'$attr[name]'is not a valid constant name";
- }
-
- $this->type = isset($attr["type"]) ? $this->is_type($attr["type"]) : "string";
- if (!in_array($this->type, array('int', 'float', 'string'))) {
- $this->error[] = "'$attr[type]' is not a valid constant type, only int, float and string";
- }
-
- $this->value= $attr["value"];
- $this->desc = $desc;
- }
-
-
- static function c_code_header($name) {
- return "";
- }
-
- function c_code() {
- switch ($this->type) {
- case "int":
- return "REGISTER_LONG_CONSTANT(\"{$this->name}\", {$this->value}, 0);\n";
-
- case "float":
- return "REGISTER_DOUBLE_CONSTANT(\"{$this->name}\", {$this->value}, 0);\n";
-
- case "string":
- return "REGISTER_STRING_CONSTANT(\"{$this->name}\", \"$value\", ".strlen($this->value).", 0);\n";
- }
- }
-
- static function c_code_footer() {
- return "";
- }
-
-
-
- static function docbook_xml_header($name) {
- return
-" <table>
- <title>$name constants</title>
- <tgroup cols='3'>
- <thead>
- <row>
- <entry>name</entry>
- <entry>value</entry>
- <entry>descrpition</entry>
- </row>
- </thead>
- <tbody>
-";
- }
-
- function docbook_xml() {
- return trim("
-<row>
- <entry>
- <constant id='constant".strtolower(str_replace("_","-",$this->name))."'>{$this->name}</constant>
- (<link linkend='language.types.integer'>integer</link>)
- </entry>
- <entry>{$this->value}</entry>
- <entry>{$this->desc}</entry>
-</row>
-")."\n";
- }
-
- static function docbook_xml_footer() {
- return
-" </tbody>
- </tgroup>
- </table>
-";
- }
- }
-
-?>
diff --git a/scripts/ext_skel_ng/php_element.php b/scripts/ext_skel_ng/php_element.php
deleted file mode 100644
index 852e2d8e94..0000000000
--- a/scripts/ext_skel_ng/php_element.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-class php_element {
- function is_type($name) {
- $types = array("void" => "void",
- "bool" => "bool",
- "boolean" => "bool",
- "int" => "int",
- "integer" => "int",
- "float" => "float",
- "double" => "float",
- "real" => "float",
- "string" => "string",
- "array" => "array",
- "object" => "object",
- "resource" => "resource",
- "mixed" => "mixed",
- "callback" => "callback",
- "stream" => "stream"
- );
-
- if (isset($types[$name])) {
- return $types[$name];
- } else {
- return false;
- }
- }
-
- function is_name($name) {
- if (ereg("^[[:alpha:]_][[:alnum:]_]*$",$name)) {
- // TODO reserved words
- return true;
- }
- return false;
- }
-
-
- function c_code() {
- return "";
- }
-
- function h_code() {
- return "";
- }
-
- function docbook_xml() {
- return "";
- }
-
- function docbook_editor_settings($level=3) {
- return '
-<!-- Keep this comment at the end of the file
-Local'.' variables:
-mode: sgml
-sgml-omittag:t
-sgml-shorttag:t
-sgml-minimize-attributes:nil
-sgml-always-quote-attributes:t
-sgml-indent-step:1
-sgml-indent-data:t
-indent-tabs-mode:nil
-sgml-parent-document:nil
-sgml-default-dtd-file:"'.str_repeat("../",$level).'manual.ced"
-sgml-exposed-tags:nil
-sgml-local-catalogs:nil
-sgml-local-ecat-files:nil
-End:
-vim600: syn=xml fen fdm=syntax fdl=2 si
-vim: et tw=78 syn=sgml
-vi: ts=1 sw=1
--->
-';
- }
-}
-
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/php_function.php b/scripts/ext_skel_ng/php_function.php
deleted file mode 100644
index 1b2005b78c..0000000000
--- a/scripts/ext_skel_ng/php_function.php
+++ /dev/null
@@ -1,426 +0,0 @@
-<?php
-
- class php_function extends php_element {
-
- function __construct($name, $summary, $proto, $desc="", $code="", $role="") {
- $this->name = $name;
- $this->summary = $summary;
- $this->desc = empty($desc) ? "&warn.undocumented.func;" : $desc;
- $this->code = $code;
- $this->role = empty($role) ? "public" : $role;
- if ($this->role === "public") {
- $this->status = $this->parse_proto($proto);
- }
- }
-
- function parse_proto($proto) {
- /* TODO
- a 'real' parser is needed here (lex/yacc with PHP output anyone?)
- to support stuff like default values
- the current tokenizer is not clever enough for this ...
-
- the grammer for a prototype would look like this: ?
-
- proto: type name '(' param-list ')'
-
- name: [A-Za-z_][A-Za-z0-9_]*
-
- type: "void"
- | typespec
-
- typespec: typename
- | typename '&'
-
- typename: bool | boolean
- | int | integer | long
- | float | double | real
- | string
- | array
- | object | object name
- | resource | resource name
- | mixed
- | callback
- | stream
-
- param-list: void
- | parameter
- | parm-list ',' parameter
-
- parameter: typespec name
- | typespec name '=' default-value
-
- default-value: "true" | "false" | "array()"
- | numeric-value
- | string
-
- string: '"' character* '"'
-
- number: ... the usual int, float, hex and octal stuff ...
- */
-
- // 'tokenize' it
- $tokens=array();
-
- // we collect valid C names as Strings, any other character for itself, blanks are skipped
- // TODO: this does no longer work if we ever add default values ...
- $len=strlen($proto);
- $name="";
- for ($n=0;$n<$len;$n++) {
- $char = $proto{$n};
- if (ctype_alpha($char) || $char == '_' || ($n && ctype_digit($char))) {
- $name.=$char;
- } else {
- if ($name) $tokens[]=$name;
- $name="";
- if (trim($char)) $tokens[]=$char;
- }
- }
- if ($name) $tokens[]=$name;
-
- $n=0;
- $opts=0;
- $params=array();
- $return_type = ($this->is_type($tokens[$n])) ? $tokens[$n++] : "void";
- $function_name = $tokens[$n++];
- if ($return_type === "resource" && $tokens[$n] !== "(") {
- $return_subtype = $function_name;
- $function_name = $tokens[$n++];
- }
- if (! $this->is_name($function_name)) {
- return("$function_name is not a valid function name");
- }
- if ($function_name != $this->name) {
- return "proto function name is '$function_name' instead of '{$this->name}'";
- }
-
- if ($tokens[$n]!='(') return("'(' expected instead of '$tokens[$n]'");
- if ($tokens[++$n]!=')') {
- for ($param=0;$tokens[$n];$n++,$param++) {
- if ($tokens[$n]=='[') {
- $params[$param]['optional']=true;
- $opts++;
- $n++;
- if ($param>0) {
- if ($tokens[$n]!=',') return("',' expected after '[' instead of '$token[$n]'");
- $n++;
- }
- }
- if (!$this->is_type($tokens[$n])) return("type name expected instead of '$tokens[$n]'");
- $params[$param]['type']=$tokens[$n];
- $n++;
- if ($tokens[$n] == "&") {
- $params[$param]['by_ref'] = true;
- $n++;
- }
- if ($this->is_name($tokens[$n])) {
- $params[$param]['name']=$tokens[$n];
- $n++;
- }
- if ($tokens[$n] == "&") {
- $params[$param]['by_ref'] = true;
- $n++;
- }
- if ($params[$param]['type'] === "resource" && $this->is_name($tokens[$n])) {
- $params[$param]['subtype'] = $params[$param]['name'];
- $params[$param]['name'] = $tokens[$n];
- $n++;
- }
- if ($tokens[$n]=='[') {
- $n--;
- continue;
- }
- if ($tokens[$n]==',') continue;
- if ($tokens[$n]==']') break;
- if ($tokens[$n]==')') break;
- }
- }
- $numopts=$opts;
- while ($tokens[$n]==']') {
- $n++;
- $opts--;
- }
- if ($opts!=0) return ("'[' / ']' count mismatch");
- if ($tokens[$n] != ')') return("')' expected instead of '$tokens[$n]'");
-
- $this->name = $function_name;
- $this->returns = $return_type;
- if (isset($return_subtype)) {
- $this->returns .= " $return_subtype";
- }
- $this->params = $params;
- $this->optional = $numopts;
-
- return true;
- }
-
- function c_code($extension) {
- $code = "";
-
- $returns = explode(" ", $this->returns);
-
- switch ($this->role) {
- case "public":
- $code .= "\n/* {{{ proto {$this->returns} {$this->name}(";
- if (isset($this->params)) {
- foreach ($this->params as $key => $param) {
- if (!empty($param['optional']))
- $code.=" [";
- if ($key)
- $code.=", ";
- $code .= $param['type']." ";
- if (isset($param['subtype'])) {
- $code .= $param['subtype']." ";
- }
- if ($param['type'] !== 'void') {
- if (isset($param['by_ref'])) {
- $code .= "&";
- }
- $code .= $param['name'];
- }
- }
- }
- for ($n=$this->optional; $n>0; $n--) {
- $code .= "]";
- }
- $code .= ")\n ";
- if (!empty($this->summary)) {
- $code .= $this->summary;
- }
- $code .= " */\n";
- $code .= "PHP_FUNCTION({$this->name})\n";
- $code .= "{\n";
-
- if ($returns[0] === "resource" && isset($returns[1])) {
- $resource = $extension->resources[$returns[1]];
- if ($resource->alloc === "yes") {
- $payload = $resource->payload;
- $code .= " $payload * return_res = ($payload *)emalloc(sizeof($payload));\n";
- }
- }
-
- if (isset($this->params) && count($this->params)) {
- $arg_string="";
- $arg_pointers=array();
- $optional=false;
- $res_fetch="";
- foreach ($this->params as $key => $param) {
- if ($param["type"] === "void") continue;
- $name = $param['name'];
- $arg_pointers[]="&$name";
- if (isset($param['optional'])&&!$optional) {
- $optional=true;
- $arg_string.="|";
- }
- switch ($param['type']) {
- case "bool":
- $arg_string.="b";
- $code .= " zend_bool $name = 0;\n";
- break;
- case "int":
- $arg_string.="l";
- $code .= " long $name = 0;\n";
- break;
- case "float":
- $arg_string.="d";
- $code .= " double $name = 0.0;\n";
- break;
- case "string":
- $arg_string.="s";
- $code .= " char * $name = NULL;\n";
- $code .= " int {$name}_len = 0;\n";
- $arg_pointers[]="&{$name}_len";
- break;
- case "array":
- $arg_string.="a";
- $code .= " zval * $name = NULL;\n";
- break;
- case "object":
- $arg_string.="o";
- $code .= " zval * $name = NULL;\n";
- break;
- case "resource":
- $arg_string.="r";
- $code .= " zval * $name = NULL;\n";
- $code .= " int {$name}_id = -1;\n";
- // dummfug? $arg_pointers[]="&{$name}_id";
- if (isset($param['subtype'])) {
- $resource = $extension->resources[$param['subtype']];
- $varname = "res_{$name}";
- $code .= " {$resource->payload} * $varname;\n";
-
- $res_fetch.=" if ($name) {\n"
- ." ZEND_FETCH_RESOURCE($varname, {$resource->payload} *, &$name, {$name}_id, \"$param[subtype]\", le_$param[subtype]);\n"
- ." }\n";
- } else {
- $res_fetch.=" if ($name) {\n"
- ." ZEND_FETCH_RESOURCE(???, ???, $name, {$name}_id, \"???\", ???_rsrc_id);\n"
- ." }\n";
- }
- break;
- case "stream":
- $arg_string .= "r";
- $code .= " zval * _z$name = NULL; \n";
- $code .= " php_stream * $name = NULL:\n";
- $res_fetch.= " php_stream_from_zval($name, &_z$name);\n";
- break;
- case "mixed":
- case "callback":
- $arg_string.="z";
- $code .= " zval * $name = NULL;\n";
- break;
- }
- }
- }
-
- if (isset($arg_string) && strlen($arg_string)) {
- $code .= " int argc = ZEND_NUM_ARGS();\n\n";
- $code .= " if (zend_parse_parameters(argc TSRMLS_CC, \"$arg_string\", ".join(", ",$arg_pointers).") == FAILURE) return;\n";
- if ($res_fetch) $code.="\n$res_fetch\n";
- } else {
- $code .= " if (ZEND_NUM_ARGS()>0) { WRONG_PARAM_COUNT; }\n\n";
- }
-
- if ($this->code) {
- $code .= " {\n$this->code }\n"; // {...} for local variables ...
- } else {
- $code .= " php_error(E_WARNING, \"{$this->name}: not yet implemented\"); RETURN_FALSE;\n\n";
-
- switch ($returns[0]) {
- case "void":
- break;
-
- case "bool":
- $code .= " RETURN_FALSE;\n";
- break;
-
- case "int":
- $code .= " RETURN_LONG(0);\n";
- break;
-
- case "float":
- $code .= " RETURN_DOUBLE(0.0);\n";
- break;
-
- case "string":
- $code .= " RETURN_STRINGL(\"\", 0, 1);\n";
- break;
-
- case "array":
- $code .= " array_init(return_value);\n";
- break;
-
- case "object":
- $code .= " object_init(return_value)\n";
- break;
-
- case "resource":
- if (isset($returns[1])) {
- $code .= " ZEND_REGISTER_RESOURCE(return_value, return_res, le_$returns[1]);\n";
- } else {
- $code .= " /* RETURN_RESOURCE(...); /*\n";
- }
- break;
-
- case "stream":
- $code .= " /* php_stream_to_zval(stream, return_value); */\n";
- break;
-
- case "mixed":
- $code .= " /* RETURN_...(...); /*\n";
- break;
-
- default:
- $code .= " /* UNKNOWN RETURN TYPE '$this->returns' /*\n";
- break;
- }
- }
-
- $code .= "}\n/* }}} */\n\n";
- break;
-
- case "internal":
- if (!empty($this->code)) {
- $code .= " {\n";
- $code .= $this->code."\n";
- $code .= " }\n";
- }
- break;
-
- case "private":
- $code .= $this->code."\n";
- break;
- }
- return $code;
- }
-
- function docbook_xml() {
- $xml =
-'<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- '.'$'.'Revision: 1.0 $ -->
- <refentry id="function.'.strtolower(str_replace("_","-",$this->name)).'">
- <refnamediv>
- <refname>'.$this->name.'</refname>
- <refpurpose>'.$this->summary.'</refpurpose>
- </refnamediv>
- <refsect1>
- <title>Description</title>
- <methodsynopsis>
-';
-
- $xml .= " <type>{$this->returns}</type><methodname>{$this->name}</methodname>\n";
- if (empty($this->params) || $this->params[0]["type"]==="void") {
- $xml .= " <void/>\n";
- } else {
- foreach ($this->params as $key => $param) {
- if (isset($param['optional'])) {
- $xml .= " <methodparam choice='opt'>";
- } else {
- $xml .= " <methodparam>";
- }
- $xml .= "<type>$param[type]</type><parameter>";
- if (isset($param['by_ref'])) {
- $xml .= "&amp;";
- }
- $xml .= "$param[name]</parameter>";
- $xml .= "</methodparam>\n";
- }
- }
-
-
- $desc = $this->desc;
-
- if (!strstr($this->desc,"<para>")) {
- $desc = " <para>\n$desc </para>\n";
- }
-
-$xml .=
-' </methodsynopsis>
-'.$desc.'
- </refsect1>
- </refentry>
-';
- $xml .= $this->docbook_editor_settings(4);
-
- return $xml;
- }
-
- function write_test($extension) {
- $fp = fopen("{$extension->name}/tests/{$this->name}.phpt", "w");
- fputs($fp,
-"--TEST--
-{$this->name}() function
---SKIPIF--
-<?php if (!extension_loaded('{$extension->name}')) print 'skip'; ?>
---POST--
---GET--
---FILE--
-<?php
- echo 'no test case for {$this->name}() yet';
-?>
---EXPECT--
-no test case for {$this->name}() yet");
- fclose($fp);
- }
- }
-
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/php_global.php b/scripts/ext_skel_ng/php_global.php
deleted file mode 100644
index df74b2a073..0000000000
--- a/scripts/ext_skel_ng/php_global.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-
- class php_global extends php_element {
-
- function __construct($attr) {
-
- $this->name = $attr["name"];
-
- if (!$this->is_name($this->name)) {
- $this->error[] = "'$attr[name]' is not a valid C variable name";
- }
-
- $this->type = $attr['type'];
- if (!$this->is_type($this->type)) {
- $this->error[] = "'$attr[type]' is not a valid C data type";
- }
- }
-
- /* overriding type check as we deal with C types here
- check is rather naive as it doesn't know about context
- so we check for a sequence of valid names for now
- TODO: check for either simple type, struct/class or single word (typedef)
- */
- function is_type($type) {
- $array = explode(" ", str_replace('*',' ',$type));
- foreach ($array as $name) {
- if (empty($name)) continue;
- if (!$this->is_name($name)) return false;
- }
- return true;
- }
-
-
-
- static function c_code_header($name) {
- return "static void php_{$name}_init_globals(zend_{$name}_globals *{$name}_globals)\n{\n";
- }
-
- function c_code($name) {
- $code = " {$name}_globals->{$this->name} = ";
- if (strstr($this->type, "*")) {
- $code .= "NULL;\n";
- } else {
- $code .= "0;\n";
- }
- return $code;
- }
-
- static function c_code_footer($name) {
- return "
-}
-
-static void php_{$name}_shutdown_globals(zend_{$name}_globals *{$name}_globals)
-{
-}";
- }
-
- static function h_code_header($name) {
- return "ZEND_BEGIN_MODULE_GLOBALS({$name})\n";
- }
-
- function h_code($name) {
- return " {$this->type} {$this->name};\n";
- }
-
- static function h_code_footer($name) {
- $upname = strtoupper($name);
-
- return "
-ZEND_END_MODULE_GLOBALS({$name})
-
-#ifdef ZTS
-#define {$upname}_G(v) TSRMG({$name}_globals_id, zend_{$name}_globals *, v)
-#else
-#define {$upname}_G(v) ({$name}_globals.v)
-#endif
-
-";
-
- }
-
-
- }
-
-?>
diff --git a/scripts/ext_skel_ng/php_ini.php b/scripts/ext_skel_ng/php_ini.php
deleted file mode 100644
index 3ac6e44fab..0000000000
--- a/scripts/ext_skel_ng/php_ini.php
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-
- class php_ini extends php_element {
-
- function __construct($attr) {
-
- $this->name = $attr["name"];
-
- if (!$this->is_name($this->name)) {
- $this->error[] = "'$attr[name]' is not a valid php.ini directive name";
- }
-
- $this->type = $this->is_type($attr['type']);
- if (!$this->type) {
- $this->error[] = "'$attr[type]' is not a valid PHP data type";
- }
-
- $this->value = $attr["value"];
- $this->desc = $attr["desc"];
-
- switch (@$attr["access"]) {
- case "system":
- $this->access = "PHP_INI_SYSTEM";
- break;
- case "perdir":
- $this->access = "PHP_INI_PERDIR";
- break;
- case "user":
- $this->access = "PHP_INI_USER";
- break;
- case "all":
- case "":
- $this->access = "PHP_INI_ALL";
- break;
- default:
- $this->error[] = "'$attr[access]' is not a valid access mode (system|perdir|user|all)";
- }
-
- switch ($this->type) {
- case "bool":
- $this->onupdate = "OnUpdateBool";
- $this->c_type = "zend_bool";
- break;
- case "int":
- $this->onupdate = "OnUpdateLong";
- $this->c_type = "long";
- break;
- case "float":
- $this->onupdate = "OnUpdateReal";
- $this->c_type = "double";
- break;
- case "string":
- $this->onupdate = "OnUpdateString";
- $this->c_type = "char *";
- break;
- default:
- $this->error[] = "'$this->type' not supported, only bool, int, float and string";
- break;
- }
-
- if (isset($attr["onupdate"])) {
- $this->onupdate = $attr["onupdate"];
- }
- }
-
-
-
- static function c_code_header($name) {
- return "PHP_INI_BEGIN()\n";
- }
-
- function c_code($name) {
- return " STD_PHP_INI_ENTRY(\"$name.{$this->name}\", \"{$this->value}\", {$this->access}, {$this->onupdate}, {$this->name}, zend_{$name}_globals, {$name}_globals)\n";
- }
-
- static function c_code_footer() {
- return "PHP_INI_END()\n\n";
- }
-
-
-
- static function docbook_xml_header($name) {
- return
-" <table>
- <title>$name runtime configuration</title>
- <tgroup cols='3'>
- <thead>
- <row>
- <entry>directive</entry>
- <entry>default value</entry>
- <entry>descrpition</entry>
- </row>
- </thead>
- <tbody>
-";
- }
-
- function docbook_xml() {
- return
-" <row>
- <entry>$this->name</entry>
- <entry>$this->value</entry>
- <entry>$this->desc</entry>
- </row>
-";
- }
-
- static function docbook_xml_footer() {
- return
-" </tbody>
- </tgroup>
- </table>
-";
- }
- }
-
-?>
diff --git a/scripts/ext_skel_ng/php_logo.php b/scripts/ext_skel_ng/php_logo.php
deleted file mode 100644
index e7fa4b56f0..0000000000
--- a/scripts/ext_skel_ng/php_logo.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
- class php_logo extends php_element {
-
- function __construct($name, $attr) {
- $this->name = $name;
- $this->attr = $attr;
- $this->id = '"'.strtoupper($name).'_LOGO_ID"';
-
- $this->data = file_get_contents($attr['src']);
- $this->size = strlen($this->data);
-
- $this->mime_type = "image/gif";
- }
-
- function docbook_xml($base) {
- return "";
- }
-
- function minit_code() {
- return " php_register_info_logo({$this->id}, \"{$this->mime_type}\", {$this->name}_logo, {$this->size});\n";
- }
-
- function c_code() {
- return "
-static unsigned char {$this->name}_logo[] = {
-#include \"{$this->name}_logo.h\"
-};
-";
- }
-
- function h_code() {
- $len = strlen($this->data);
- $code = " ";
- $i=0;
- for ($n = 0; $n < $len; $n++) {
- $code .= sprintf(" %3d",ord($this->data[$n]));
- if ($n == $len - 1) break;
- $code .= ",";
- if (++$i==8) {
- $code .= "\n ";
- $i=0;
- }
- }
-
- $code .= "\n";
-
- return $code;
- }
- }
-
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/php_resource.php b/scripts/ext_skel_ng/php_resource.php
deleted file mode 100644
index 2ea631a489..0000000000
--- a/scripts/ext_skel_ng/php_resource.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
- class php_resource extends php_element {
-
- function __construct($attr, $destruct, $description) {
- $this->name = $attr['name'];
- if (!$this->is_name($this->name)) {
- $this->error[] = "'$attr[name] is not a valid resource name";
- }
-
-
- $this->payload = @$attr['payload'];
- $this->alloc = @$attr['alloc'];
- $this->destruct = $destruct;
- $this->description = $description;
-
- if (empty($this->payload)) {
- $this->payload = "void";
- }
- }
-
- function docbook_xml($base) {
- return "
- <section id='$base.resources.{$this->name}'>
- <title><literal>{$this->name}</literal></title>
- <para>
- {$this->description}
- </para>
- </section>
-";
- }
-
- function minit_code() {
- return "
-le_{$this->name} = zend_register_list_destructors_ex({$this->name}_dtor,
- NULL,
- \"{$this->name}\",
- module_number);
-
-";
- }
-
- function c_code() {
- $dtor = "
-int le_{$this->name};
-
-void {$this->name}_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
-{
- {$this->payload} * resource = ({$this->payload} *)(rsrc->ptr);
-
- {$this->destruct}
-";
-
- if ($this->alloc === "yes") {
- $dtor .= " efree(resource);\n";
- }
-
- $dtor .= "}\n";
-
- return $dtor;
- }
-
- function h_code() {
- $upname = strtoupper($this->name);
-
- return "
-#define {$upname}_FETCH(r, z) ZEND_FETCH_RESOURCE(r, {$this->payload} *, z, -1, ${$this->name}, le_{$this->name }); \
- if (!r) { RETURN_FALSE; }
-
-#define {$upname}_REGISTER(r) ZEND_REGISTER_RESOURCE(return_value, r, le_{$this->name });
-";
- }
- }
-
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/xml_stream_callback_parser.php b/scripts/ext_skel_ng/xml_stream_callback_parser.php
deleted file mode 100644
index 5ac0d62d31..0000000000
--- a/scripts/ext_skel_ng/xml_stream_callback_parser.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
- class xml_stream_callback_parser extends xml_stream_parser {
-
- function __construct($stream) {
- $this->cdata = "";
- $this->tags = array();
- $this->attrs = array();
-
- parent::__construct($stream);
- }
-
- function cdata($parser, $cdata) {
- $this->cdata .= $cdata;
- }
-
- function tag_open($parser, $tag, $attributes) {
- array_push($this->tags, $tag);
- array_push($this->attrs, $attributes);
- }
-
- function tag_close($parser, $tag) {
- $attributes = array_pop($this->attrs);
-
- for ($tags = $this->tags; count($tags); array_shift($tags)) {
- $method = "handle_".join("_", $tags);
- if (method_exists($this, $method)) {
- $this->$method($attributes);
- break;
- }
- }
-
- $this->cdata = "";
- array_pop($this->tags);
- }
- }
-?> \ No newline at end of file
diff --git a/scripts/ext_skel_ng/xml_stream_parser.php b/scripts/ext_skel_ng/xml_stream_parser.php
deleted file mode 100644
index fe0a4c9ad7..0000000000
--- a/scripts/ext_skel_ng/xml_stream_parser.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-class xml_stream_parser {
- var $parser;
-
- function __construct($stream)
- {
- if (!is_resource($stream)) die("not a stream");
- if (get_resource_type($stream) != "stream") die("not a stream");
-
- $this->parser = xml_parser_create();
-
- xml_set_object($this->parser, $this);
- xml_set_element_handler($this->parser, "tag_open", "tag_close");
- xml_set_character_data_handler($this->parser, "cdata");
- xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
-
- while (!feof($stream)) {
- xml_parse($this->parser, fgets($stream), feof($stream));
- }
- xml_parser_free($this->parser);
- }
-
- function tag_open($parser, $tag, $attributes)
- {
- var_dump($parser, $tag, $attributes);
- }
-
- function cdata($parser, $cdata)
- {
- var_dump($parser, $cdata);
- }
-
- function tag_close($parser, $tag)
- {
- var_dump($parser, $tag);
- }
-
- function error($msg)
- {
- if (is_array($msg)) {
- if (count($msg)==1) {
- $msg = current($msg);
- } else {
- foreach ($msg as $text) {
- echo "$text\n";
- }
- $msg = "...";
- }
- }
-
- die("$msg on line ".xml_get_current_line_number($this->parser));
- }
-} // end of class xml
-?> \ No newline at end of file