Browse Source

More cleanup!

PHP-4.0.5
Zeev Suraski 27 years ago
parent
commit
41f6bca92f
  1. 50
      ext/standard/pageinfo.c
  2. 16
      main/SAPI.c
  3. 6
      main/SAPI.h
  4. 8
      main/safe_mode.c
  5. 6
      sapi/apache/mod_php4.c

50
ext/standard/pageinfo.c

@ -40,52 +40,24 @@
#include "ext/standard/basic_functions.h" #include "ext/standard/basic_functions.h"
static void php_statpage(void)
static void php_statpage(BLS_D)
{ {
#if !APACHE
char *path;
struct stat sb;
BLS_FETCH();
#else
request_rec *r;
BLS_FETCH();
SLS_FETCH();
r = ((request_rec *) SG(server_context));
#endif
#if APACHE
/* Apache has already gone through the trouble of doing
the stat(), so the only real overhead is copying three
values. We can afford it, and it means we don't have to
worry about resetting the static variables after every
hit. */
BG(page_uid) = r ->finfo.st_uid;
BG(page_inode) = r->finfo.st_ino;
BG(page_mtime) = r->finfo.st_mtime;
#else
if (BG(page_uid) == -1) {
SLS_FETCH();
struct stat *pstat;
path = SG(request_info).path_translated;
if (path != NULL) {
if (stat(path, &sb) == -1) {
php_error(E_WARNING, "Unable to find file: '%s'", path);
return;
}
BG(page_uid) = sb.st_uid;
BG(page_inode) = sb.st_ino;
BG(page_mtime) = sb.st_mtime;
}
pstat = sapi_get_stat();
if (BG(page_uid)==-1) {
BG(page_uid) = pstat->st_uid;
BG(page_inode) = pstat->st_ino;
BG(page_mtime) = pstat->st_mtime;
} }
#endif
} }
long php_getuid(void) long php_getuid(void)
{ {
BLS_FETCH(); BLS_FETCH();
php_statpage();
php_statpage(BLS_C);
return (BG(page_uid)); return (BG(page_uid));
} }
@ -125,7 +97,7 @@ PHP_FUNCTION(getmyinode)
{ {
BLS_FETCH(); BLS_FETCH();
php_statpage();
php_statpage(BLS_C);
if (BG(page_inode) < 0) { if (BG(page_inode) < 0) {
RETURN_FALSE; RETURN_FALSE;
} else { } else {
@ -140,7 +112,7 @@ PHP_FUNCTION(getlastmod)
{ {
BLS_FETCH(); BLS_FETCH();
php_statpage();
php_statpage(BLS_C);
if (BG(page_mtime) < 0) { if (BG(page_mtime) < 0) {
RETURN_FALSE; RETURN_FALSE;
} else { } else {

16
main/SAPI.c

@ -385,21 +385,17 @@ SAPI_API int sapi_flush()
} }
} }
SAPI_API int sapi_get_uid()
SAPI_API struct stat *sapi_get_stat()
{ {
SLS_FETCH(); SLS_FETCH();
if (sapi_module.get_uid) {
return sapi_module.get_uid(SLS_C);
if (sapi_module.get_stat) {
return sapi_module.get_stat(SLS_C);
} else { } else {
struct stat statbuf;
if (!SG(request_info).path_translated || (stat(SG(request_info).path_translated, &statbuf)==-1)) {
return -1;
if (!SG(request_info).path_translated || (stat(SG(request_info).path_translated, &SG(global_stat))==-1)) {
return NULL;
} }
stat(SG(request_info).path_translated, &statbuf);
return statbuf.st_uid;
return &SG(global_stat);
} }
} }

6
main/SAPI.h

@ -23,6 +23,7 @@
#include "zend.h" #include "zend.h"
#include "zend_llist.h" #include "zend_llist.h"
#include "zend_operators.h" #include "zend_operators.h"
#include <sys/stat.h>
#define SAPI_POST_BLOCK_SIZE 4000 #define SAPI_POST_BLOCK_SIZE 4000
@ -84,6 +85,7 @@ typedef struct {
sapi_headers_struct sapi_headers; sapi_headers_struct sapi_headers;
uint read_post_bytes; uint read_post_bytes;
unsigned char headers_sent; unsigned char headers_sent;
struct stat global_stat;
} sapi_globals_struct; } sapi_globals_struct;
@ -127,7 +129,7 @@ SAPI_API void sapi_unregister_post_reader(sapi_post_content_type_reader *post_co
SAPI_API int sapi_register_default_post_reader(void (*default_post_reader)(char *content_type_dup SLS_DC)); SAPI_API int sapi_register_default_post_reader(void (*default_post_reader)(char *content_type_dup SLS_DC));
SAPI_API int sapi_flush(); SAPI_API int sapi_flush();
SAPI_API int sapi_get_uid();
SAPI_API struct stat *sapi_get_stat();
SAPI_API char *sapi_getenv(char *name, int name_len); SAPI_API char *sapi_getenv(char *name, int name_len);
struct _sapi_module_struct { struct _sapi_module_struct {
@ -141,7 +143,7 @@ struct _sapi_module_struct {
int (*ub_write)(const char *str, unsigned int str_length); int (*ub_write)(const char *str, unsigned int str_length);
void (*flush)(void *server_context); void (*flush)(void *server_context);
int (*get_uid)(SLS_D);
struct stat *(*get_stat)(SLS_D);
char *(*getenv)(char *name, int name_len SLS_DC); char *(*getenv)(char *name, int name_len SLS_DC);
void (*sapi_error)(int type, const char *error_msg, ...); void (*sapi_error)(int type, const char *error_msg, ...);

8
main/safe_mode.c

@ -111,7 +111,7 @@ PHPAPI int php_checkuid(const char *fn, int mode) {
PHPAPI char *php_get_current_user() PHPAPI char *php_get_current_user()
{ {
struct passwd *pwd; struct passwd *pwd;
int uid;
struct stat *pstat;
SLS_FETCH(); SLS_FETCH();
if (request_info.current_user) { if (request_info.current_user) {
@ -122,13 +122,13 @@ PHPAPI char *php_get_current_user()
USE_SAPI is defined, because cgi will also be USE_SAPI is defined, because cgi will also be
interfaced in USE_SAPI */ interfaced in USE_SAPI */
uid = sapi_get_uid();
pstat = sapi_get_stat();
if (uid==-1) {
if (!pstat) {
return empty_string; return empty_string;
} }
if ((pwd=getpwuid(uid))==NULL) {
if ((pwd=getpwuid(pstat->st_uid))==NULL) {
return empty_string; return empty_string;
} }
request_info.current_user_length = strlen(pwd->pw_name); request_info.current_user_length = strlen(pwd->pw_name);

6
sapi/apache/mod_php4.c

@ -300,9 +300,9 @@ static int php_apache_sapi_activate(SLS_D)
} }
static int php_apache_get_uid(SLS_D)
static struct stat *php_apache_get_stat(SLS_D)
{ {
return ((request_rec *) SG(server_context))->finfo.st_uid;
return &((request_rec *) SG(server_context))->finfo;
} }
@ -325,7 +325,7 @@ static sapi_module_struct sapi_module = {
sapi_apache_ub_write, /* unbuffered write */ sapi_apache_ub_write, /* unbuffered write */
sapi_apache_flush, /* flush */ sapi_apache_flush, /* flush */
php_apache_get_uid, /* get uid */
php_apache_get_stat, /* get uid */
php_apache_getenv, /* getenv */ php_apache_getenv, /* getenv */
php_error, /* error handler */ php_error, /* error handler */

Loading…
Cancel
Save