Annotation of embedaddon/php/ext/intl/spoofchecker/spoofchecker_main.c, revision 1.1.1.1
1.1 misho 1: /*
2: +----------------------------------------------------------------------+
3: | PHP Version 5 |
4: +----------------------------------------------------------------------+
5: | This source file is subject to version 3.01 of the PHP license, |
6: | that is bundled with this package in the file LICENSE, and is |
7: | available through the world-wide-web at the following url: |
8: | http://www.php.net/license/3_01.txt |
9: | If you did not receive a copy of the PHP license and are unable to |
10: | obtain it through the world-wide-web, please send a note to |
11: | license@php.net so we can mail you a copy immediately. |
12: +----------------------------------------------------------------------+
13: | Authors: Scott MacVicar <scottmac@php.net> |
14: +----------------------------------------------------------------------+
15: */
16:
17: #ifdef HAVE_CONFIG_H
18: #include "config.h"
19: #endif
20:
21: #include "php_intl.h"
22: #include "spoofchecker_class.h"
23:
24: /* {{{ proto bool Spoofchecker::isSuspicious( string text[, int &error_code ] )
25: * Checks if a given text contains any suspicious characters
26: */
27: PHP_METHOD(Spoofchecker, isSuspicious)
28: {
29: int ret;
30: char *text;
31: int text_len;
32: zval *error_code = NULL;
33: SPOOFCHECKER_METHOD_INIT_VARS;
34:
35: if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z", &text, &text_len, &error_code)) {
36: return;
37: }
38:
39: SPOOFCHECKER_METHOD_FETCH_OBJECT;
40:
41: ret = uspoof_checkUTF8(co->uspoof, text, text_len, NULL, SPOOFCHECKER_ERROR_CODE_P(co));
42:
43: if (U_FAILURE(SPOOFCHECKER_ERROR_CODE(co))) {
44: php_error_docref(NULL TSRMLS_CC, E_WARNING, "(%d) %s", SPOOFCHECKER_ERROR_CODE(co), u_errorName(SPOOFCHECKER_ERROR_CODE(co)));
45: RETURN_TRUE;
46: }
47:
48: if (error_code) {
49: zval_dtor(error_code);
50: ZVAL_LONG(error_code, ret);
51: }
52: RETVAL_BOOL(ret != 0);
53: }
54: /* }}} */
55:
56: /* {{{ proto bool Spoofchecker::areConfusable( string str1, string str2[, int &error_code ] )
57: * Checks if a given text contains any confusable characters
58: */
59: PHP_METHOD(Spoofchecker, areConfusable)
60: {
61: int ret;
62: char *s1, *s2;
63: int s1_len, s2_len;
64: zval *error_code = NULL;
65: SPOOFCHECKER_METHOD_INIT_VARS;
66:
67: if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|z", &s1, &s1_len,
68: &s2, &s2_len, &error_code)) {
69: return;
70: }
71:
72: SPOOFCHECKER_METHOD_FETCH_OBJECT;
73:
74: ret = uspoof_areConfusableUTF8(co->uspoof, s1, s1_len, s2, s2_len, SPOOFCHECKER_ERROR_CODE_P(co));
75:
76: if (U_FAILURE(SPOOFCHECKER_ERROR_CODE(co))) {
77: php_error_docref(NULL TSRMLS_CC, E_WARNING, "(%d) %s", SPOOFCHECKER_ERROR_CODE(co), u_errorName(SPOOFCHECKER_ERROR_CODE(co)));
78: RETURN_TRUE;
79: }
80:
81: if (error_code) {
82: zval_dtor(error_code);
83: ZVAL_LONG(error_code, ret);
84: }
85: RETVAL_BOOL(ret != 0);
86: }
87: /* }}} */
88:
89: /* {{{ proto void Spoofchecker::setAllowedLocales( string locales )
90: * Locales to use when running checks
91: */
92: PHP_METHOD(Spoofchecker, setAllowedLocales)
93: {
94: char *locales;
95: int locales_len;
96: SPOOFCHECKER_METHOD_INIT_VARS;
97:
98: if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &locales, &locales_len)) {
99: return;
100: }
101:
102: SPOOFCHECKER_METHOD_FETCH_OBJECT;
103:
104: uspoof_setAllowedLocales(co->uspoof, locales, SPOOFCHECKER_ERROR_CODE_P(co));
105:
106: if (U_FAILURE(SPOOFCHECKER_ERROR_CODE(co))) {
107: php_error_docref(NULL TSRMLS_CC, E_WARNING, "(%d) %s", SPOOFCHECKER_ERROR_CODE(co), u_errorName(SPOOFCHECKER_ERROR_CODE(co)));
108: return;
109: }
110: }
111: /* }}} */
112:
113: /* {{{ proto void Spoofchecker::setChecks( int checks )
114: * Set the checks to run
115: */
116: PHP_METHOD(Spoofchecker, setChecks)
117: {
118: long checks;
119: SPOOFCHECKER_METHOD_INIT_VARS;
120:
121: if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &checks)) {
122: return;
123: }
124:
125: SPOOFCHECKER_METHOD_FETCH_OBJECT;
126:
127: uspoof_setChecks(co->uspoof, checks, SPOOFCHECKER_ERROR_CODE_P(co));
128:
129: if (U_FAILURE(SPOOFCHECKER_ERROR_CODE(co))) {
130: php_error_docref(NULL TSRMLS_CC, E_WARNING, "(%d) %s", SPOOFCHECKER_ERROR_CODE(co), u_errorName(SPOOFCHECKER_ERROR_CODE(co)));
131: }
132: }
133: /* }}} */
134:
135: /*
136: * Local variables:
137: * tab-width: 4
138: * c-basic-offset: 4
139: * End:
140: * vim600: noet sw=4 ts=4 fdm=marker
141: * vim<600: noet sw=4 ts=4
142: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>