php-src/request_info.c
1999-12-21 19:43:38 +00:00

104 lines
3.2 KiB
C

/*
+----------------------------------------------------------------------+
| PHP version 4.0 |
+----------------------------------------------------------------------+
| Copyright (c) 1997, 1998, 1999 The PHP Group |
+----------------------------------------------------------------------+
| This source file is subject to version 2.0 of the PHP license, |
| that is bundled with this package in the file LICENSE, and is |
| available at through the world-wide-web at |
| http://www.php.net/license/2_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. |
+----------------------------------------------------------------------+
| Author: Jim Winstead (jimw@php.net) |
+----------------------------------------------------------------------+
*/
#include "php.h"
#include "SAPI.h"
#ifndef THREAD_SAFE
PHPAPI php_request_info request_info;
#endif
#if CGI_BINARY
int php_init_request_info(void *conf)
{
request_info.current_user = NULL;
request_info.current_user_length = 0;
request_info.script_name = getenv("SCRIPT_NAME");
request_info.script_filename = getenv("SCRIPT_FILENAME");
/* Hack for annoying servers that do not set SCRIPT_FILENAME for us */
if (!request_info.script_filename) {
request_info.script_filename = request_info.php_argv0;
}
#if WIN32|WINNT
/* FIXME WHEN APACHE NT IS FIXED */
/* a hack for apache nt because it does not appear to set argv[1] and sets
script filename to php.exe thus makes us parse php.exe instead of file.php
requires we get the info from path translated. This can be removed at
such a time taht apache nt is fixed */
else {
request_info.script_filename = getenv("PATH_TRANSLATED");
}
#endif
/* doc_root configuration variable is currently ignored,
as it is with every other access method currently also. */
/* We always need to emalloc() filename, since it gets placed into
the include file hash table, and gets freed with that table.
Notice that this means that we don't need to efree() it in
php_destroy_request_info()! */
#if DISCARD_PATH
if (request_info.script_filename) {
SLS_FETCH();
SG(request_info).path_translated = estrdup(request_info.script_filename);
} else {
SLS_FETCH();
SG(request_info).path_translated = NULL;
}
#endif
return SUCCESS;
}
int php_destroy_request_info(void *conf)
{
STR_FREE(request_info.current_user);
return SUCCESS;
}
#endif
#if APACHE
int php_init_request_info(void *conf)
{
request_rec *r;
SLS_FETCH();
r = ((request_rec *) SG(server_context));
request_info.current_user = NULL;
request_info.current_user_length = 0;
return SUCCESS;
}
#endif
#if !CGI_BINARY
int php_destroy_request_info(void *conf)
{
/* see above for why we don't want to efree() request_info.filename */
STR_FREE(request_info.current_user);
return SUCCESS;
}
#endif
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
*/