Date: 10/29/98
- Next message: adepoo <email protected>: "[PHP-DEV] Bug #884: show the uid owner of file in basic auth in realm"
- Previous message: Bug Database: "[PHP-DEV] Bug #866 Updated: No need for Content-type header with virtual"
- Next in thread: rasmus: "[PHP-DEV] CVS update: php31/main"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Thursday October 29, 1998 @ 17:04
Author: shane
Update of /repository/php31/main
In directory asf:/u2/tmp/cvs-serv25280/main
Modified Files:
automated_configuration.h control_structures_inline.h
fopen-wrappers.c language-parser.y language-scanner.l
php3_realpath.c safe_mode.c variables.c variables.h
Log Message:
core patches 3.0->3.1 back to 3.0.3
Index: php31/main/automated_configuration.h
diff -c php31/main/automated_configuration.h:2.8 php31/main/automated_configuration.h:2.9
*** php31/main/automated_configuration.h:2.8 Wed Sep 16 14:07:55 1998
--- php31/main/automated_configuration.h Thu Oct 29 17:04:17 1998
***************
*** 11,16 ****
--- 11,17 ----
INI_ENTRY(use_registry, AC_BOOL, 0L, AC_NO, "Use Win32 Registry for per-server vars")
INI_ENTRY(use_registry_dir, AC_BOOL, 0L, AC_NO_SAFEMODE, "Use Win32 Registry for per-directory vars")
INI_ENTRY(short_open_tag, AC_BOOL, 1L, AC_YES, "Allow <? as an open tag")
+ INI_ENTRY(asp_tags, AC_BOOL, 1L, AC_YES, "Allow <% as an open tag")
INI_ENTRY(precision, AC_LONG, 14L, AC_YES, "Precision of floating point numbers")
INI_ENTRY(y2k_compliance, AC_BOOL, 0L, AC_YES, "Year 2000 compliance")
INI_ENTRY(safe_mode, AC_BOOL, 0L, AC_NO, "Turn safe mode on/off")
Index: php31/main/control_structures_inline.h
diff -c php31/main/control_structures_inline.h:2.14 php31/main/control_structures_inline.h:2.15
*** php31/main/control_structures_inline.h:2.14 Sat Oct 17 14:19:47 1998
--- php31/main/control_structures_inline.h Thu Oct 29 17:04:18 1998
***************
*** 29,35 ****
*/
! /* $Id: control_structures_inline.h,v 2.14 1998/10/17 18:19:47 zeev Exp $ */
#ifdef THREAD_SAFE
#include "tls.h"
--- 29,35 ----
*/
! /* $Id: control_structures_inline.h,v 2.15 1998/10/29 22:04:18 shane Exp $ */
#ifdef THREAD_SAFE
#include "tls.h"
***************
*** 445,451 ****
pval_destructor(default_value _INLINE_TLS);
}
}
! } else {
switch(type) {
case BYREF_NONE: /* passed by value */
break;
--- 445,451 ----
pval_destructor(default_value _INLINE_TLS);
}
}
! } else if (!GLOBAL(php3_display_source)) {
switch(type) {
case BYREF_NONE: /* passed by value */
break;
Index: php31/main/fopen-wrappers.c
diff -c php31/main/fopen-wrappers.c:2.5 php31/main/fopen-wrappers.c:2.6
*** php31/main/fopen-wrappers.c:2.5 Fri Sep 11 19:51:28 1998
--- php31/main/fopen-wrappers.c Thu Oct 29 17:04:18 1998
***************
*** 27,33 ****
| Jim Winstead <jimw <email protected>> |
+----------------------------------------------------------------------+
*/
! /* $Id: fopen-wrappers.c,v 2.5 1998/09/11 23:51:28 zeev Exp $ */
#ifdef THREAD_SAFE
#include "tls.h"
--- 27,33 ----
| Jim Winstead <jimw <email protected>> |
+----------------------------------------------------------------------+
*/
! /* $Id: fopen-wrappers.c,v 2.6 1998/10/29 22:04:18 shane Exp $ */
#ifdef THREAD_SAFE
#include "tls.h"
***************
*** 106,143 ****
*/
PHPAPI int _php3_check_open_basedir(char *path)
{
! char resolved_name[MAXPATHLEN];
TLS_VARS;
! /* Only check when open_basedir is available */
! if (GLOBAL(php3_ini)->open_basedir && *GLOBAL(php3_ini)->open_basedir) {
! /* Resolve the real path into resolved_name */
! if (_php3_realpath(path, resolved_name) != NULL) {
! /* Check the path */
! #if WIN32|WINNT
! if (strncmp(GLOBAL(php3_ini)->open_basedir, resolved_name, strlen(GLOBAL(php3_ini)->open_basedir)) == 0) {
! #else
! if (strncasecmp(GLOBAL(php3_ini)->open_basedir, resolved_name, strlen(GLOBAL(php3_ini)->open_basedir)) == 0) {
! #endif
! /* File is in the right directory */
! return 0;
! } else {
! php3_error(E_WARNING, "open_basedir restriction in effect. File is in wrong directory.");
! return -1;
! }
! } else {
! /* Unable to resolve the real path, return -1 */
! php3_error(E_WARNING, "open_basedir restriction in effect. Unable to verify location of file.");
! return -1;
! }
! } else {
! /* open_basedir is not available, return 0 */
! return 0;
! }
}
PHPAPI FILE *php3_fopen_wrapper(char *path, char *mode, int options, int *issock, int *socketd)
{
TLS_VARS;
#if PHP3_URL_FOPEN
if (!(options & IGNORE_URL)) {
--- 106,177 ----
*/
PHPAPI int _php3_check_open_basedir(char *path)
{
! char resolved_name[MAXPATHLEN];
! char local_open_basedir[MAXPATHLEN];
!
! int local_open_basedir_pos;
TLS_VARS;
! /* Only check when open_basedir is available */
! if (GLOBAL(php3_ini)->open_basedir && *GLOBAL(php3_ini)->open_basedir) {
! /* Special case basedir==".": Use script-directory */
! if ((strcmp(GLOBAL(php3_ini)->open_basedir, ".") == 0) &&
! GLOBAL(sapi_rqst)->filename &&
! *GLOBAL(sapi_rqst)->filename)
! {
!
! strcpy(local_open_basedir, GLOBAL(sapi_rqst)->filename);
! local_open_basedir_pos = strlen(local_open_basedir) - 1;
! /* Strip filename */
!
! while ((
! #if WIN32|WINNT
! (local_open_basedir[local_open_basedir_pos] != '\\') ||
! #endif
! (local_open_basedir[local_open_basedir_pos] != '/')) &&
! (local_open_basedir_pos >= 0))
! {
! local_open_basedir[local_open_basedir_pos--] = 0;
! }
! /* Strip double (back)slashes */
! if (local_open_basedir_pos > 0) {
! while ((
! #if WIN32|WINNT
! (local_open_basedir[local_open_basedir_pos-1] == '\\') ||
! #endif
! (local_open_basedir[local_open_basedir_pos-1] == '/')) &&
! (local_open_basedir_pos > 0))
! {
! local_open_basedir[local_open_basedir_pos--] = 0;
! }
! }
! } else {
! /* Else use the unmodified path */
! strcpy(local_open_basedir, GLOBAL(php3_ini)->open_basedir);
! } /* Resolve the real path into resolved_name */
! if (_php3_realpath(path, resolved_name) != NULL) {
! /* Check the path */
! if (strncmp(GLOBAL(php3_ini)->open_basedir, resolved_name, strlen(GLOBAL(php3_ini)->open_basedir)) == 0) {
! /* File is in the right directory */
! return 0;
! } else {
! php3_error(E_WARNING, "open_basedir restriction in effect. File is in wrong directory.");
! return -1;
! }
! } else {
! /* Unable to resolve the real path, return -1 */
! php3_error(E_WARNING, "open_basedir restriction in effect. Unable to verify location of file.");
! return -1;
! }
! } else {
! /* open_basedir is not available, return 0 */
! return 0;
! }
}
PHPAPI FILE *php3_fopen_wrapper(char *path, char *mode, int options, int *issock, int *socketd)
{
+ int cm=2; /* checkuid mode: 2 = if file does not exist, check directory */
TLS_VARS;
#if PHP3_URL_FOPEN
if (!(options & IGNORE_URL)) {
***************
*** 148,155 ****
if (options & USE_PATH && GLOBAL(php3_ini)->include_path != NULL) {
return php3_fopen_with_path(path, mode, GLOBAL(php3_ini)->include_path, NULL);
} else {
! if (options & ENFORCE_SAFE_MODE && GLOBAL(php3_ini)->safe_mode && (!_php3_checkuid(path, 1))) {
! php3_error(E_WARNING, "SAFE MODE Restriction in effect. Invalid owner of file to be read.");
return NULL;
}
return fopen(path, mode);
--- 182,190 ----
if (options & USE_PATH && GLOBAL(php3_ini)->include_path != NULL) {
return php3_fopen_with_path(path, mode, GLOBAL(php3_ini)->include_path, NULL);
} else {
! if(!strcmp(mode,"r") || !strcmp(mode,"r+")) cm=0;
! if (options & ENFORCE_SAFE_MODE &&
! GLOBAL(php3_ini)->safe_mode && (!_php3_checkuid(path, cm))) {
return NULL;
}
return fopen(path, mode);
***************
*** 256,271 ****
char *pathbuf, *ptr, *end;
char trypath[MAXPATHLEN + 1];
struct stat sb;
FILE *fp;
TLS_VARS;
if (opened_path) {
*opened_path = NULL;
}
/* Relative path open */
if (*filename == '.') {
! if (GLOBAL(php3_ini)->safe_mode && (!_php3_checkuid(filename, 2))) {
! php3_error(E_WARNING, "SAFE MODE Restriction in effect. Invalid owner.");
return NULL;
}
if (_php3_check_open_basedir(filename)) return NULL;
--- 291,307 ----
char *pathbuf, *ptr, *end;
char trypath[MAXPATHLEN + 1];
struct stat sb;
+ int cm=2;
FILE *fp;
TLS_VARS;
+ if(!strcmp(mode,"r") || !strcmp(mode,"r+")) cm=0;
if (opened_path) {
*opened_path = NULL;
}
/* Relative path open */
if (*filename == '.') {
! if (GLOBAL(php3_ini)->safe_mode && (!_php3_checkuid(filename, cm))) {
return NULL;
}
if (_php3_check_open_basedir(filename)) return NULL;
***************
*** 282,290 ****
if (*filename == '/') {
#endif
if (GLOBAL(php3_ini)->safe_mode) {
! snprintf(trypath, MAXPATHLEN, "%s%s", GLOBAL(php3_ini)->doc_root, filename);
! if (!_php3_checkuid(trypath, 2)) {
! php3_error(E_WARNING, "SAFE MODE Restriction in effect. Invalid owner.");
return NULL;
}
if (_php3_check_open_basedir(trypath)) return NULL;
--- 318,329 ----
if (*filename == '/') {
#endif
if (GLOBAL(php3_ini)->safe_mode) {
! if(GLOBAL(php3_ini)->doc_root) {
! snprintf(trypath, MAXPATHLEN, "%s%s", GLOBAL(php3_ini)->doc_root, filename);
! } else {
! strncpy(trypath,filename,MAXPATHLEN);
! }
! if (!_php3_checkuid(trypath, cm)) {
return NULL;
}
if (_php3_check_open_basedir(trypath)) return NULL;
***************
*** 299,306 ****
}
}
if (!path || (path && !*path)) {
! if (GLOBAL(php3_ini)->safe_mode && (!_php3_checkuid(filename, 2))) {
! php3_error(E_WARNING, "SAFE MODE Restriction in effect. Invalid owner.");
return NULL;
}
if (_php3_check_open_basedir(filename)) return NULL;
--- 338,344 ----
}
}
if (!path || (path && !*path)) {
! if (GLOBAL(php3_ini)->safe_mode && (!_php3_checkuid(filename, cm))) {
return NULL;
}
if (_php3_check_open_basedir(filename)) return NULL;
***************
*** 326,333 ****
}
snprintf(trypath, MAXPATHLEN, "%s/%s", ptr, filename);
if (GLOBAL(php3_ini)->safe_mode) {
! if (stat(trypath, &sb) == 0 && (!_php3_checkuid(trypath, 2))) {
! php3_error(E_WARNING, "SAFE MODE Restriction in effect. Invalid owner.");
efree(pathbuf);
return NULL;
}
--- 364,370 ----
}
snprintf(trypath, MAXPATHLEN, "%s/%s", ptr, filename);
if (GLOBAL(php3_ini)->safe_mode) {
! if (stat(trypath, &sb) == 0 && (!_php3_checkuid(trypath, cm))) {
efree(pathbuf);
return NULL;
}
***************
*** 837,844 ****
if (options & USE_PATH) {
fp = php3_fopen_with_path(path, mode, GLOBAL(php3_ini)->include_path, NULL);
} else {
! if (options & ENFORCE_SAFE_MODE && GLOBAL(php3_ini)->safe_mode && (!_php3_checkuid(path, 1))) {
! php3_error(E_WARNING, "SAFE MODE Restriction in effect. Invalid owner of file to be read.");
fp = NULL;
} else {
fp = fopen(path, mode);
--- 874,883 ----
if (options & USE_PATH) {
fp = php3_fopen_with_path(path, mode, GLOBAL(php3_ini)->include_path, NULL);
} else {
! int cm=2;
!
! if(!strcmp(mode,"r") || !strcmp(mode,"r+")) cm=0;
! if (options & ENFORCE_SAFE_MODE && GLOBAL(php3_ini)->safe_mode && (!_php3_checkuid(path, cm))) {
fp = NULL;
} else {
fp = fopen(path, mode);
Index: php31/main/language-parser.y
diff -c php31/main/language-parser.y:2.12 php31/main/language-parser.y:2.13
*** php31/main/language-parser.y:2.12 Sat Oct 17 16:45:45 1998
--- php31/main/language-parser.y Thu Oct 29 17:04:18 1998
***************
*** 31,37 ****
*/
! /* $Id: language-parser.y,v 2.12 1998/10/17 20:45:45 shane Exp $ */
/*
--- 31,37 ----
*/
! /* $Id: language-parser.y,v 2.13 1998/10/29 22:04:18 shane Exp $ */
/*
***************
*** 169,175 ****
--- 169,177 ----
int clean_module_resource(list_entry *le, int *resource_id)
{
if (le->type == *resource_id) {
+ #if DEBUG
printf("Cleaning resource %d\n",*resource_id);
+ #endif
return 1;
} else {
return 0;
***************
*** 756,762 ****
/*** Manhattan project ***/
/* Be able to call user-levle functions from C */
/* "A beer and serious lack of sleep do wonders" -- Zeev */
! int call_user_function(HashTable *function_table, pval *object, pval *function_name, pval *retval, int param_count, pval *params[])
{
pval *func;
pval return_offset;
--- 758,764 ----
/*** Manhattan project ***/
/* Be able to call user-levle functions from C */
/* "A beer and serious lack of sleep do wonders" -- Zeev */
! PHPAPI int call_user_function(HashTable *function_table, pval *object, pval *function_name, pval *retval, int param_count, pval *params[])
{
pval *func;
pval return_offset;
Index: php31/main/language-scanner.l
diff -c php31/main/language-scanner.l:2.13 php31/main/language-scanner.l:2.14
*** php31/main/language-scanner.l:2.13 Sat Oct 17 14:19:48 1998
--- php31/main/language-scanner.l Thu Oct 29 17:04:19 1998
***************
*** 788,794 ****
}
! <INITIAL>(([^<]|"<"[^?s<]){1,400})|"<s"|"<" {
phplval->value.str.val = (char *) estrndup(yytext, yyleng);
phplval->value.str.len = yyleng;
phplval->type = IS_STRING;
--- 788,794 ----
}
! <INITIAL>(([^<]|"<"[^?%s<]){1,400})|"<s"|"<" {
phplval->value.str.val = (char *) estrndup(yytext, yyleng);
phplval->value.str.len = yyleng;
phplval->type = IS_STRING;
***************
*** 816,821 ****
--- 816,843 ----
}
}
+ <INITIAL>"<%"("=")? {
+ if (GLOBAL(php3_ini)->asp_tags) {
+ if (!(GLOBAL(initialized) & INIT_ENVIRONMENT)) {
+ _php3_hash_environment();
+ }
+ BEGIN(IN_PHP);
+ if (GLOBAL(php3_display_source)) {
+ BEGIN_COLOR(GLOBAL(php3_ini)->highlight_default);
+ html_puts(yytext,yyleng);
+ }
+ if (yyleng==3) { /* this tag is <%=, implicit echo */
+ return PHP_ECHO;
+ }
+ } else {
+ phplval->value.str.val = (char *) estrndup(yytext, yyleng);
+ phplval->value.str.len = yyleng;
+ phplval->type = IS_STRING;
+ HANDLE_NEWLINES(yytext,yyleng);
+ return INLINE_HTML;
+ }
+ }
+
<INITIAL>"<?php"[ \n\r\t] {
HANDLE_NEWLINE(yytext[yyleng-1]);
if (!(GLOBAL(initialized) & INIT_ENVIRONMENT)) {
***************
*** 938,944 ****
}
if (c==EOF) {
! php3_error(E_WARNING,"Unterminated comment starting line %d.\n",start_lineno);
break;
} else {
HANDLE_NEWLINE(c);
--- 960,966 ----
}
if (c==EOF) {
! php3_error(E_WARNING,"Unterminated comment starting line %d.\n",php3_get_lineno(start_lineno));
break;
} else {
HANDLE_NEWLINE(c);
***************
*** 954,959 ****
--- 976,999 ----
END_COLOR();
}
return ';'; /* implicit ';' at php-end tag */
+ }
+
+ <IN_PHP>"%>"([\n]|"\r\n")? {
+ HANDLE_NEWLINE(yytext[yyleng-1]);
+ if (GLOBAL(php3_ini)->asp_tags) {
+ BEGIN(INITIAL);
+ if (GLOBAL(php3_display_source)) {
+ html_puts(yytext,yyleng);
+ END_COLOR();
+ }
+ return ';'; /* implicit ';' at php-end tag */
+ } else {
+ phplval->value.str.val = (char *) estrndup(yytext,yyleng);
+ phplval->value.str.len = yyleng;
+ phplval->type = IS_STRING;
+ HANDLE_NEWLINES(yytext,yyleng);
+ return INLINE_HTML;
+ }
}
<IN_PHP>["] {
Index: php31/main/php3_realpath.c
diff -c php31/main/php3_realpath.c:1.2 php31/main/php3_realpath.c:1.3
*** php31/main/php3_realpath.c:1.2 Thu Aug 13 19:23:28 1998
--- php31/main/php3_realpath.c Thu Oct 29 17:04:19 1998
***************
*** 173,178 ****
--- 173,180 ----
while((*workpos != '\\') && (*workpos != 0)) {
*workpos++;
}
+ /* Avoid double \ in the result */
+ writepos--;
}
/* If it was a directory, append a slash */
***************
*** 183,189 ****
#else /* WIN32|WINNT */
/* Look for .. */
if ((workpos[0] == '.') && (workpos[1] != 0)) {
! if ((workpos[1] == '.') && (workpos[2] == '/')) {
/* One directory back */
/* Set pointers to right position */
workpos++; /* move to second '.' */
--- 185,191 ----
#else /* WIN32|WINNT */
/* Look for .. */
if ((workpos[0] == '.') && (workpos[1] != 0)) {
! if ((workpos[1] == '.') && (workpos[2] == '/') || (workpos[2] == 0))) {
/* One directory back */
/* Set pointers to right position */
workpos++; /* move to second '.' */
***************
*** 195,204 ****
while(*--writepos != '/') ; /* skip until previous '/' */
}
} else {
! /* No special case, the name just started with a . */
! /* Append */
! while((*workpos != '/') && (*workpos != 0)) {
! *writepos++ = *workpos++;
}
}
} else {
--- 197,214 ----
while(*--writepos != '/') ; /* skip until previous '/' */
}
} else {
! if (workpos[1] == '/') {
! /* Found a /./ skip it */
! workpos++;
! /* move to '/' */
! /* Avoid double / in the result */
! writepos--;
! } else {
! /* No special case, the name just started with a . */
! /* Append */
! while((*workpos != '/') && (*workpos != 0)) {
! *writepos++ = *workpos++;
! }
}
}
} else {
Index: php31/main/safe_mode.c
diff -c php31/main/safe_mode.c:2.3 php31/main/safe_mode.c:2.4
*** php31/main/safe_mode.c:2.3 Tue Sep 22 15:19:47 1998
--- php31/main/safe_mode.c Thu Oct 29 17:04:19 1998
***************
*** 26,32 ****
| Authors: Rasmus Lerdorf <rasmus <email protected>> |
+----------------------------------------------------------------------+
*/
! /* $Id: safe_mode.c,v 2.3 1998/09/22 19:19:47 shane Exp $ */
#ifdef THREAD_SAFE
#include "tls.h"
#endif
--- 26,32 ----
| Authors: Rasmus Lerdorf <rasmus <email protected>> |
+----------------------------------------------------------------------+
*/
! /* $Id: safe_mode.c,v 2.4 1998/10/29 22:04:19 shane Exp $ */
#ifdef THREAD_SAFE
#include "tls.h"
#endif
***************
*** 77,83 ****
if (mode<3) {
ret = stat(fn,&sb);
! if (ret<0 && mode < 2) return(mode);
if (ret>-1) {
#if (WIN32|WINNT) && USE_NT_SPECIFIC
uid=GetFileOwner((LPTSTR)fn);
--- 77,86 ----
if (mode<3) {
ret = stat(fn,&sb);
! if (ret<0 && mode < 2) {
! php3_error(E_WARNING,"Unable to access %s",fn);
! return(mode);
! }
if (ret>-1) {
#if (WIN32|WINNT) && USE_NT_SPECIFIC
uid=GetFileOwner((LPTSTR)fn);
***************
*** 109,127 ****
#else
ret = stat(fn,&sb);
*s='/';
! if (ret<0) return(0);
duid = sb.st_uid;
#endif
} else {
s = emalloc(MAXPATHLEN+1);
! if (!getcwd(s,MAXPATHLEN)) return(0);
#if (WIN32|WINNT) && USE_NT_SPECIFIC
duid=GetFileOwner((LPTSTR)fn);
efree(s);
#else
ret = stat(s,&sb);
efree(s);
! if (ret<0) return(0);
duid = sb.st_uid;
#endif
}
--- 112,139 ----
#else
ret = stat(fn,&sb);
*s='/';
! if (ret<0) {
! php3_error(E_WARNING, "Unable to access %s",fn);
! return(0);
! }
duid = sb.st_uid;
#endif
} else {
s = emalloc(MAXPATHLEN+1);
! if (!getcwd(s,MAXPATHLEN)) {
! php3_error(E_WARNING, "Unable to access current working directory");
! return(0);
! }
#if (WIN32|WINNT) && USE_NT_SPECIFIC
duid=GetFileOwner((LPTSTR)fn);
efree(s);
#else
ret = stat(s,&sb);
efree(s);
! if (ret<0) {
! php3_error(E_WARNING, "Unable to access %s",s);
! return(0);
! }
duid = sb.st_uid;
#endif
}
***************
*** 133,139 ****
#else
if (duid == _php3_getuid()) return(1);
#endif
! return(0);
}
--- 145,154 ----
#else
if (duid == _php3_getuid()) return(1);
#endif
! else {
! php3_error(E_WARNING, "SAFE MODE Restriction in effect. The script whose uid is %ld is not allowed to access %s owned by uid %ld",uid,fn,duid);
! return (0);
! }
}
Index: php31/main/variables.c
diff -c php31/main/variables.c:2.8 php31/main/variables.c:2.9
*** php31/main/variables.c:2.8 Sun Oct 11 09:11:56 1998
--- php31/main/variables.c Thu Oct 29 17:04:19 1998
***************
*** 29,35 ****
*/
! /* $Id: variables.c,v 2.8 1998/10/11 13:11:56 zeev Exp $ */
#ifdef THREAD_SAFE
#include "tls.h"
--- 29,35 ----
*/
! /* $Id: variables.c,v 2.9 1998/10/29 22:04:19 shane Exp $ */
#ifdef THREAD_SAFE
#include "tls.h"
***************
*** 460,466 ****
} else if (!(var=var_ptr->value.varptr.pvalue)) { /* the variable didn't parse properly, so it was obviously not set */
result->value.lval = 1;
} else {
- var = var_ptr->value.varptr.pvalue;
pval_destructor(var _INLINE_TLS);
var->value.str.val = undefined_variable_string;
var->value.str.len=0;
--- 460,465 ----
***************
*** 707,713 ****
--- 706,726 ----
}
}
+ /* CALLBACK functions to provide pointers to external modules
+ * that may need them.
+ */
+
+ PHPAPI HashTable *php3i_get_symbol_table(void)
+ {
+ TLS_VARS;
+ return &GLOBAL(symbol_table);
+ }
+ PHPAPI HashTable *php3i_get_function_table(void)
+ {
+ TLS_VARS;
+ return &GLOBAL(function_table);
+ }
/*
* Local variables:
* tab-width: 4
Index: php31/main/variables.h
diff -c php31/main/variables.h:2.5 php31/main/variables.h:2.6
*** php31/main/variables.h:2.5 Sat Sep 19 12:50:33 1998
--- php31/main/variables.h Thu Oct 29 17:04:19 1998
***************
*** 29,35 ****
*/
! /* $Id: variables.h,v 2.5 1998/09/19 16:50:33 rasmus Exp $ */
#ifndef _VARIABLES_H
--- 29,35 ----
*/
! /* $Id: variables.h,v 2.6 1998/10/29 22:04:19 shane Exp $ */
#ifndef _VARIABLES_H
***************
*** 67,72 ****
--- 67,74 ----
extern PHPAPI void var_reset(pval *var);
extern PHPAPI void var_uninit(pval *var);
+ extern PHPAPI HashTable *php3i_get_symbol_table(void);
+ extern PHPAPI HashTable *php3i_get_function_table(void);
extern void read_pointer_value(pval *result,pval *array_result INLINE_TLS);
extern inline void get_regular_variable_pointer(pval *result, pval *varname INLINE_TLS);
-- PHP Development Mailing List http://www.php.net/ To unsubscribe send an empty message to php-dev-unsubscribe <email protected> For help: php-dev-help <email protected>
- Next message: adepoo <email protected>: "[PHP-DEV] Bug #884: show the uid owner of file in basic auth in realm"
- Previous message: Bug Database: "[PHP-DEV] Bug #866 Updated: No need for Content-type header with virtual"
- Next in thread: rasmus: "[PHP-DEV] CVS update: php31/main"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

