Annotation of embedaddon/php/ext/standard/ftok.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: 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>