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>