summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-02-10 18:19:04 +0000
committerZeev Suraski <zeev@php.net>2000-02-10 18:19:04 +0000
commit41f6bca92fc480df09ba0cc748342a03cbf539b3 (patch)
tree967e075451e94acbc73ad154a052ae410370b832
parentaa50e6368a2d8f86b01e1eb930d4f7b39648358b (diff)
downloadphp-git-41f6bca92fc480df09ba0cc748342a03cbf539b3.tar.gz
More cleanup!
-rw-r--r--ext/standard/pageinfo.c50
-rw-r--r--main/SAPI.c16
-rw-r--r--main/SAPI.h6
-rw-r--r--main/safe_mode.c8
-rw-r--r--sapi/apache/mod_php4.c6
5 files changed, 28 insertions, 58 deletions
diff --git a/ext/standard/pageinfo.c b/ext/standard/pageinfo.c
index 7040d4c59d..9213600fdb 100644
--- a/ext/standard/pageinfo.c
+++ b/ext/standard/pageinfo.c
@@ -40,52 +40,24 @@
#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)
{
BLS_FETCH();
- php_statpage();
+ php_statpage(BLS_C);
return (BG(page_uid));
}
@@ -125,7 +97,7 @@ PHP_FUNCTION(getmyinode)
{
BLS_FETCH();
- php_statpage();
+ php_statpage(BLS_C);
if (BG(page_inode) < 0) {
RETURN_FALSE;
} else {
@@ -140,7 +112,7 @@ PHP_FUNCTION(getlastmod)
{
BLS_FETCH();
- php_statpage();
+ php_statpage(BLS_C);
if (BG(page_mtime) < 0) {
RETURN_FALSE;
} else {
diff --git a/main/SAPI.c b/main/SAPI.c
index 7f8f568692..a48e84f6b7 100644
--- a/main/SAPI.c
+++ b/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();
- 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 {
- 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);
}
}
diff --git a/main/SAPI.h b/main/SAPI.h
index 88554cf18a..48f001200c 100644
--- a/main/SAPI.h
+++ b/main/SAPI.h
@@ -23,6 +23,7 @@
#include "zend.h"
#include "zend_llist.h"
#include "zend_operators.h"
+#include <sys/stat.h>
#define SAPI_POST_BLOCK_SIZE 4000
@@ -84,6 +85,7 @@ typedef struct {
sapi_headers_struct sapi_headers;
uint read_post_bytes;
unsigned char headers_sent;
+ struct stat global_stat;
} 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_flush();
-SAPI_API int sapi_get_uid();
+SAPI_API struct stat *sapi_get_stat();
SAPI_API char *sapi_getenv(char *name, int name_len);
struct _sapi_module_struct {
@@ -141,7 +143,7 @@ struct _sapi_module_struct {
int (*ub_write)(const char *str, unsigned int str_length);
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);
void (*sapi_error)(int type, const char *error_msg, ...);
diff --git a/main/safe_mode.c b/main/safe_mode.c
index fea75ed5c8..f274d23da8 100644
--- a/main/safe_mode.c
+++ b/main/safe_mode.c
@@ -111,7 +111,7 @@ PHPAPI int php_checkuid(const char *fn, int mode) {
PHPAPI char *php_get_current_user()
{
struct passwd *pwd;
- int uid;
+ struct stat *pstat;
SLS_FETCH();
if (request_info.current_user) {
@@ -122,13 +122,13 @@ PHPAPI char *php_get_current_user()
USE_SAPI is defined, because cgi will also be
interfaced in USE_SAPI */
- uid = sapi_get_uid();
+ pstat = sapi_get_stat();
- if (uid==-1) {
+ if (!pstat) {
return empty_string;
}
- if ((pwd=getpwuid(uid))==NULL) {
+ if ((pwd=getpwuid(pstat->st_uid))==NULL) {
return empty_string;
}
request_info.current_user_length = strlen(pwd->pw_name);
diff --git a/sapi/apache/mod_php4.c b/sapi/apache/mod_php4.c
index 7a9cb0ee94..8e1c27ae02 100644
--- a/sapi/apache/mod_php4.c
+++ b/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_flush, /* flush */
- php_apache_get_uid, /* get uid */
+ php_apache_get_stat, /* get uid */
php_apache_getenv, /* getenv */
php_error, /* error handler */