File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / pageinfo.c
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jul 22 01:32:05 2013 UTC (11 years ago) by misho
Branches: php, MAIN
CVS tags: v5_4_29p0, v5_4_20p0, v5_4_20, v5_4_17, HEAD
5.4.17

    1: /*
    2:    +----------------------------------------------------------------------+
    3:    | PHP Version 5                                                        |
    4:    +----------------------------------------------------------------------+
    5:    | Copyright (c) 1997-2013 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.1.1.3 2013/07/22 01:32:05 misho 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: {
   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(TSRMLS_D)
   83: {
   84: 	php_statpage(TSRMLS_C);
   85: 	return (BG(page_uid));
   86: }
   87: /* }}} */
   88: 
   89: long php_getgid(TSRMLS_D)
   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;
  100: 
  101: 	if (zend_parse_parameters_none() == FAILURE) {
  102: 		return;
  103: 	}
  104: 	
  105: 	uid = php_getuid(TSRMLS_C);
  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: 	if (zend_parse_parameters_none() == FAILURE) {
  121: 		return;
  122: 	}
  123: 	
  124: 	gid = php_getgid(TSRMLS_C);
  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;
  138: 
  139: 	if (zend_parse_parameters_none() == FAILURE) {
  140: 		return;
  141: 	}
  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: {
  156: 	if (zend_parse_parameters_none() == FAILURE) {
  157: 		return;
  158: 	}
  159: 
  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: {
  179: 	long lm;
  180: 
  181: 	if (zend_parse_parameters_none() == FAILURE) {
  182: 		return;
  183: 	}
  184: 
  185: 	lm = php_getlastmod(TSRMLS_C);
  186: 	if (lm < 0) {
  187: 		RETURN_FALSE;
  188: 	} else {
  189: 		RETURN_LONG(lm);
  190: 	}
  191: }
  192: /* }}} */
  193: 
  194: /*nma
  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>