Annotation of embedaddon/php/ext/standard/pageinfo.c, revision 1.1.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>