Annotation of embedaddon/php/ext/standard/pageinfo.c, revision 1.1.1.3
1.1 misho 1: /*
2: +----------------------------------------------------------------------+
3: | PHP Version 5 |
4: +----------------------------------------------------------------------+
1.1.1.3 ! misho 5: | Copyright (c) 1997-2013 The PHP Group |
1.1 misho 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:
1.1.1.2 misho 19: /* $Id$ */
1.1 misho 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: {
62: struct stat *pstat;
63:
64: pstat = sapi_get_stat(TSRMLS_C);
65:
66: if (BG(page_uid)==-1 || BG(page_gid)==-1) {
67: if(pstat) {
68: BG(page_uid) = pstat->st_uid;
69: BG(page_gid) = pstat->st_gid;
70: BG(page_inode) = pstat->st_ino;
71: BG(page_mtime) = pstat->st_mtime;
72: } else { /* handler for situations where there is no source file, ex. php -r */
73: BG(page_uid) = getuid();
74: BG(page_gid) = getgid();
75: }
76: }
77: }
78: /* }}} */
79:
80: /* {{{ php_getuid
81: */
1.1.1.2 misho 82: long php_getuid(TSRMLS_D)
1.1 misho 83: {
84: php_statpage(TSRMLS_C);
85: return (BG(page_uid));
86: }
87: /* }}} */
88:
1.1.1.2 misho 89: long php_getgid(TSRMLS_D)
1.1 misho 90: {
91: php_statpage(TSRMLS_C);
92: return (BG(page_gid));
93: }
94:
95: /* {{{ proto int getmyuid(void)
96: Get PHP script owner's UID */
97: PHP_FUNCTION(getmyuid)
98: {
99: long uid;
1.1.1.2 misho 100:
101: if (zend_parse_parameters_none() == FAILURE) {
102: return;
103: }
1.1 misho 104:
1.1.1.2 misho 105: uid = php_getuid(TSRMLS_C);
1.1 misho 106: if (uid < 0) {
107: RETURN_FALSE;
108: } else {
109: RETURN_LONG(uid);
110: }
111: }
112: /* }}} */
113:
114: /* {{{ proto int getmygid(void)
115: Get PHP script owner's GID */
116: PHP_FUNCTION(getmygid)
117: {
118: long gid;
1.1.1.2 misho 119:
120: if (zend_parse_parameters_none() == FAILURE) {
121: return;
122: }
1.1 misho 123:
1.1.1.2 misho 124: gid = php_getgid(TSRMLS_C);
1.1 misho 125: if (gid < 0) {
126: RETURN_FALSE;
127: } else {
128: RETURN_LONG(gid);
129: }
130: }
131: /* }}} */
132:
133: /* {{{ proto int getmypid(void)
134: Get current process ID */
135: PHP_FUNCTION(getmypid)
136: {
137: int pid;
1.1.1.2 misho 138:
139: if (zend_parse_parameters_none() == FAILURE) {
140: return;
141: }
1.1 misho 142:
143: pid = getpid();
144: if (pid < 0) {
145: RETURN_FALSE;
146: } else {
147: RETURN_LONG((long) pid);
148: }
149: }
150: /* }}} */
151:
152: /* {{{ proto int getmyinode(void)
153: Get the inode of the current script being parsed */
154: PHP_FUNCTION(getmyinode)
155: {
1.1.1.2 misho 156: if (zend_parse_parameters_none() == FAILURE) {
157: return;
158: }
159:
1.1 misho 160: php_statpage(TSRMLS_C);
161: if (BG(page_inode) < 0) {
162: RETURN_FALSE;
163: } else {
164: RETURN_LONG(BG(page_inode));
165: }
166: }
167: /* }}} */
168:
169: PHPAPI long php_getlastmod(TSRMLS_D)
170: {
171: php_statpage(TSRMLS_C);
172: return BG(page_mtime);
173: }
174:
175: /* {{{ proto int getlastmod(void)
176: Get time of last page modification */
177: PHP_FUNCTION(getlastmod)
178: {
1.1.1.2 misho 179: long lm;
180:
181: if (zend_parse_parameters_none() == FAILURE) {
182: return;
183: }
184:
185: lm = php_getlastmod(TSRMLS_C);
1.1 misho 186: if (lm < 0) {
187: RETURN_FALSE;
188: } else {
189: RETURN_LONG(lm);
190: }
191: }
192: /* }}} */
193:
1.1.1.2 misho 194: /*nma
1.1 misho 195: * Local variables:
196: * tab-width: 4
197: * c-basic-offset: 4
198: * End:
199: * vim600: sw=4 ts=4 fdm=marker
200: * vim<600: sw=4 ts=4
201: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>