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>