1 : /*
2 : +----------------------------------------------------------------------+
3 : | PHP Version 5 |
4 : +----------------------------------------------------------------------+
5 : | Copyright (c) 1997-2007 The PHP Group |
6 : +----------------------------------------------------------------------+
7 : | This source file is subject to version 3.01 of the PHP license, |
8 : | that is bundled with this package in the file LICENSE, and is |
9 : | available through the world-wide-web at the following url: |
10 : | http://www.php.net/license/3_01.txt |
11 : | If you did not receive a copy of the PHP license and are unable to |
12 : | obtain it through the world-wide-web, please send a note to |
13 : | license@php.net so we can mail you a copy immediately. |
14 : +----------------------------------------------------------------------+
15 : | Author: Jim Winstead <jimw@php.net> |
16 : +----------------------------------------------------------------------+
17 : */
18 :
19 : /* $Id: pageinfo.c,v 1.40.2.1.2.1 2007/01/01 09:36:08 sebastian Exp $ */
20 :
21 : #include "php.h"
22 : #include "pageinfo.h"
23 : #include "SAPI.h"
24 :
25 : #include <stdio.h>
26 : #include <stdlib.h>
27 : #if HAVE_PWD_H
28 : #ifdef PHP_WIN32
29 : #include "win32/pwd.h"
30 : #else
31 : #include <pwd.h>
32 : #endif
33 : #endif
34 : #if HAVE_GRP_H
35 : # ifdef PHP_WIN32
36 : # include "win32/grp.h"
37 : # else
38 : # include <grp.h>
39 : # endif
40 : #endif
41 : #ifdef PHP_WIN32
42 : #undef getgid
43 : #define getgroups(a, b) 0
44 : #define getgid() 1
45 : #define getuid() 1
46 : #endif
47 : #if HAVE_UNISTD_H
48 : #include <unistd.h>
49 : #endif
50 : #include <sys/stat.h>
51 : #include <sys/types.h>
52 : #ifdef PHP_WIN32
53 : #include <process.h>
54 : #endif
55 :
56 : #include "ext/standard/basic_functions.h"
57 :
58 : /* {{{ php_statpage
59 : */
60 : PHPAPI void php_statpage(TSRMLS_D)
61 0 : {
62 : struct stat *pstat;
63 :
64 0 : pstat = sapi_get_stat(TSRMLS_C);
65 :
66 0 : if (BG(page_uid)==-1 || BG(page_gid)==-1) {
67 0 : if(pstat) {
68 0 : BG(page_uid) = pstat->st_uid;
69 0 : BG(page_gid) = pstat->st_gid;
70 0 : BG(page_inode) = pstat->st_ino;
71 : #ifdef NETWARE
72 : BG(page_mtime) = (pstat->st_mtime).tv_sec;
73 : #else
74 0 : BG(page_mtime) = pstat->st_mtime;
75 : #endif
76 : } else { /* handler for situations where there is no source file, ex. php -r */
77 0 : BG(page_uid) = getuid();
78 0 : BG(page_gid) = getgid();
79 : }
80 : }
81 0 : }
82 : /* }}} */
83 :
84 : /* {{{ php_getuid
85 : */
86 : long php_getuid(void)
87 0 : {
88 : TSRMLS_FETCH();
89 :
90 0 : php_statpage(TSRMLS_C);
91 0 : return (BG(page_uid));
92 : }
93 : /* }}} */
94 :
95 : long php_getgid(void)
96 0 : {
97 : TSRMLS_FETCH();
98 :
99 0 : php_statpage(TSRMLS_C);
100 0 : return (BG(page_gid));
101 : }
102 :
103 : /* {{{ proto int getmyuid(void)
104 : Get PHP script owner's UID */
105 : PHP_FUNCTION(getmyuid)
106 0 : {
107 : long uid;
108 :
109 0 : uid = php_getuid();
110 0 : if (uid < 0) {
111 0 : RETURN_FALSE;
112 : } else {
113 0 : RETURN_LONG(uid);
114 : }
115 : }
116 : /* }}} */
117 :
118 : /* {{{ proto int getmygid(void)
119 : Get PHP script owner's GID */
120 : PHP_FUNCTION(getmygid)
121 0 : {
122 : long gid;
123 :
124 0 : gid = php_getgid();
125 0 : if (gid < 0) {
126 0 : RETURN_FALSE;
127 : } else {
128 0 : RETURN_LONG(gid);
129 : }
130 : }
131 : /* }}} */
132 :
133 : /* {{{ proto int getmypid(void)
134 : Get current process ID */
135 : PHP_FUNCTION(getmypid)
136 0 : {
137 : int pid;
138 :
139 0 : pid = getpid();
140 0 : if (pid < 0) {
141 0 : RETURN_FALSE;
142 : } else {
143 0 : RETURN_LONG((long) pid);
144 : }
145 : }
146 : /* }}} */
147 :
148 : /* {{{ proto int getmyinode(void)
149 : Get the inode of the current script being parsed */
150 : PHP_FUNCTION(getmyinode)
151 0 : {
152 0 : php_statpage(TSRMLS_C);
153 0 : if (BG(page_inode) < 0) {
154 0 : RETURN_FALSE;
155 : } else {
156 0 : RETURN_LONG(BG(page_inode));
157 : }
158 : }
159 : /* }}} */
160 :
161 : PHPAPI long php_getlastmod(TSRMLS_D)
162 0 : {
163 0 : php_statpage(TSRMLS_C);
164 0 : return BG(page_mtime);
165 : }
166 :
167 : /* {{{ proto int getlastmod(void)
168 : Get time of last page modification */
169 : PHP_FUNCTION(getlastmod)
170 0 : {
171 0 : long lm = php_getlastmod(TSRMLS_C);
172 0 : if (lm < 0) {
173 0 : RETURN_FALSE;
174 : } else {
175 0 : RETURN_LONG(lm);
176 : }
177 : }
178 : /* }}} */
179 :
180 : /*
181 : * Local variables:
182 : * tab-width: 4
183 : * c-basic-offset: 4
184 : * End:
185 : * vim600: sw=4 ts=4 fdm=marker
186 : * vim<600: sw=4 ts=4
187 : */
|