Annotation of embedaddon/php/ext/standard/ftok.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: Andrew Sitnikov <sitnikov@infonet.ee> |
! 16: +----------------------------------------------------------------------+
! 17: */
! 18:
! 19: /* $Id: ftok.c 321634 2012-01-01 13:15:04Z felipe $ */
! 20:
! 21: #include "php.h"
! 22:
! 23: #include <sys/types.h>
! 24:
! 25: #ifdef HAVE_SYS_IPC_H
! 26: #include <sys/ipc.h>
! 27: #endif
! 28:
! 29: #if HAVE_FTOK
! 30: /* {{{ proto int ftok(string pathname, string proj)
! 31: Convert a pathname and a project identifier to a System V IPC key */
! 32: PHP_FUNCTION(ftok)
! 33: {
! 34: char *pathname, *proj;
! 35: int pathname_len, proj_len;
! 36: key_t k;
! 37:
! 38: if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &pathname, &pathname_len, &proj, &proj_len) == FAILURE) {
! 39: return;
! 40: }
! 41:
! 42: if (strlen(pathname) != pathname_len) {
! 43: RETURN_FALSE;
! 44: }
! 45:
! 46: if (pathname_len == 0){
! 47: php_error_docref(NULL TSRMLS_CC, E_WARNING, "Pathname is invalid");
! 48: RETURN_LONG(-1);
! 49: }
! 50:
! 51: if (proj_len != 1){
! 52: php_error_docref(NULL TSRMLS_CC, E_WARNING, "Project identifier is invalid");
! 53: RETURN_LONG(-1);
! 54: }
! 55:
! 56: if ((PG(safe_mode) && (!php_checkuid(pathname, NULL, CHECKUID_CHECK_FILE_AND_DIR))) || php_check_open_basedir(pathname TSRMLS_CC)) {
! 57: RETURN_LONG(-1);
! 58: }
! 59:
! 60: k = ftok(pathname, proj[0]);
! 61: if (k == -1) {
! 62: php_error_docref(NULL TSRMLS_CC, E_WARNING, "ftok() failed - %s", strerror(errno));
! 63: }
! 64:
! 65: RETURN_LONG(k);
! 66: }
! 67: /* }}} */
! 68: #endif
! 69:
! 70: /*
! 71: * Local variables:
! 72: * tab-width: 4
! 73: * c-basic-offset: 4
! 74: * End:
! 75: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>