Annotation of embedaddon/php/ext/standard/pageinfo.c, revision 1.1
1.1 ! misho 1: /*
! 2: +----------------------------------------------------------------------+
! 3: | PHP Version 5 |
! 4: +----------------------------------------------------------------------+
! 5: | Copyright (c) 1997-2012 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 321634 2012-01-01 13:15:04Z felipe $ */
! 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: */
! 82: long php_getuid(void)
! 83: {
! 84: TSRMLS_FETCH();
! 85:
! 86: php_statpage(TSRMLS_C);
! 87: return (BG(page_uid));
! 88: }
! 89: /* }}} */
! 90:
! 91: long php_getgid(void)
! 92: {
! 93: TSRMLS_FETCH();
! 94:
! 95: php_statpage(TSRMLS_C);
! 96: return (BG(page_gid));
! 97: }
! 98:
! 99: /* {{{ proto int getmyuid(void)
! 100: Get PHP script owner's UID */
! 101: PHP_FUNCTION(getmyuid)
! 102: {
! 103: long uid;
! 104:
! 105: uid = php_getuid();
! 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;
! 119:
! 120: gid = php_getgid();
! 121: if (gid < 0) {
! 122: RETURN_FALSE;
! 123: } else {
! 124: RETURN_LONG(gid);
! 125: }
! 126: }
! 127: /* }}} */
! 128:
! 129: /* {{{ proto int getmypid(void)
! 130: Get current process ID */
! 131: PHP_FUNCTION(getmypid)
! 132: {
! 133: int pid;
! 134:
! 135: pid = getpid();
! 136: if (pid < 0) {
! 137: RETURN_FALSE;
! 138: } else {
! 139: RETURN_LONG((long) pid);
! 140: }
! 141: }
! 142: /* }}} */
! 143:
! 144: /* {{{ proto int getmyinode(void)
! 145: Get the inode of the current script being parsed */
! 146: PHP_FUNCTION(getmyinode)
! 147: {
! 148: php_statpage(TSRMLS_C);
! 149: if (BG(page_inode) < 0) {
! 150: RETURN_FALSE;
! 151: } else {
! 152: RETURN_LONG(BG(page_inode));
! 153: }
! 154: }
! 155: /* }}} */
! 156:
! 157: PHPAPI long php_getlastmod(TSRMLS_D)
! 158: {
! 159: php_statpage(TSRMLS_C);
! 160: return BG(page_mtime);
! 161: }
! 162:
! 163: /* {{{ proto int getlastmod(void)
! 164: Get time of last page modification */
! 165: PHP_FUNCTION(getlastmod)
! 166: {
! 167: long lm = php_getlastmod(TSRMLS_C);
! 168: if (lm < 0) {
! 169: RETURN_FALSE;
! 170: } else {
! 171: RETURN_LONG(lm);
! 172: }
! 173: }
! 174: /* }}} */
! 175:
! 176: /*
! 177: * Local variables:
! 178: * tab-width: 4
! 179: * c-basic-offset: 4
! 180: * End:
! 181: * vim600: sw=4 ts=4 fdm=marker
! 182: * vim<600: sw=4 ts=4
! 183: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>