diff options
Diffstat (limited to 'sapi/activescript/php5activescript.c')
-rw-r--r-- | sapi/activescript/php5activescript.c | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/sapi/activescript/php5activescript.c b/sapi/activescript/php5activescript.c new file mode 100644 index 0000000000..6aa4b41495 --- /dev/null +++ b/sapi/activescript/php5activescript.c @@ -0,0 +1,152 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2004 The PHP Group | + +----------------------------------------------------------------------+ + | 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. | + +----------------------------------------------------------------------+ + | Authors: Wez Furlong <wez@thebrainroom.com> | + +----------------------------------------------------------------------+ + */ +/* $Id$ */ + +#include "php.h" +#include "php_main.h" +#include "SAPI.h" +#include "php_globals.h" +#include "ext/standard/info.h" +#include "php_variables.h" +#include "php_ini.h" +#include "php5activescript.h" + +/* SAPI definitions and DllMain */ + +static int php_activescript_startup(sapi_module_struct *sapi_module) +{ + if (php_module_startup(sapi_module, &php_activescript_module, 1) == FAILURE) { + return FAILURE; + } else { + return SUCCESS; + } +} + +static int sapi_activescript_ub_write(const char *str, uint str_length TSRMLS_DC) +{ + /* In theory, this is a blackhole. In practice, I want to see the output + * in the debugger! */ + + char buf[1024]; + uint l, a = str_length; + + while(a) { + l = a; + if (l > sizeof(buf) - 1) + l = sizeof(buf) - 1; + memcpy(buf, str, l); + buf[l] = 0; + OutputDebugString(buf); + a -= l; + } + + return str_length; +} + +static void sapi_activescript_register_server_variables(zval *track_vars_array TSRMLS_DC) +{ +} + +static char *sapi_activescript_read_cookies(TSRMLS_D) +{ + return NULL; +} + +static int sapi_activescript_header_handler(sapi_header_struct *sapi_header, sapi_headers_struct *sapi_headers TSRMLS_DC) +{ + return SAPI_HEADER_ADD; +} + +static int sapi_activescript_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC) +{ + return SAPI_HEADER_SENT_SUCCESSFULLY; +} + +zend_module_entry php_activescript_module = { + STANDARD_MODULE_HEADER, + "ActiveScript", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + STANDARD_MODULE_PROPERTIES +}; + + +sapi_module_struct activescript_sapi_module = { + "activescript", /* name */ + "Active Script", /* pretty name */ + + php_activescript_startup, /* startup */ + php_module_shutdown_wrapper, /* shutdown */ + + NULL, /* activate */ + NULL, /* deactivate */ + + sapi_activescript_ub_write, /* unbuffered write */ + NULL, /* flush */ + NULL, /* get uid */ + NULL, /* getenv */ + + zend_error, /* error handler */ + + sapi_activescript_header_handler, /* header handler */ + sapi_activescript_send_headers, /* send headers handler */ + NULL, /* send header handler */ + + NULL, /* read POST data */ + sapi_activescript_read_cookies, /* read Cookies */ + + sapi_activescript_register_server_variables, /* register server variables */ + NULL, /* Log message */ + + STANDARD_SAPI_MODULE_PROPERTIES +}; + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + switch (fdwReason) { + case DLL_PROCESS_ATTACH: + module_handle = hinstDLL; + + tsrm_startup(128, 1, TSRM_ERROR_LEVEL_CORE, "C:\\TSRM.log"); + + sapi_startup(&activescript_sapi_module); + if (activescript_sapi_module.startup) { + activescript_sapi_module.startup(&sapi_module); + } + break; + case DLL_THREAD_ATTACH: + break; + case DLL_THREAD_DETACH: + ts_free_thread(); + break; + case DLL_PROCESS_DETACH: + if (activescript_sapi_module.shutdown) { + activescript_sapi_module.shutdown(&sapi_module); + } + tsrm_shutdown(); + break; + } + return TRUE; +} + + |