Annotation of embedaddon/php/ext/intl/common/common_error.c, revision 1.1.1.3

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: Vadim Savchuk <vsavchuk@productengine.com>                  |
                     14:    |          Dmitry Lakhtyuk <dlakhtyuk@productengine.com>               |
                     15:    +----------------------------------------------------------------------+
                     16:  */
                     17: 
                     18: #ifdef HAVE_CONFIG_H
                     19: #include "config.h"
                     20: #endif
                     21: 
                     22: #include "php_intl.h"
                     23: #include "intl_error.h"
                     24: #include "common_error.h"
                     25: 
                     26: /* {{{ proto int intl_get_error_code()
1.1.1.3 ! misho      27:  * Get code of the last occurred error.
1.1       misho      28:  */
                     29: PHP_FUNCTION( intl_get_error_code )
                     30: {
                     31:        RETURN_LONG( intl_error_get_code( NULL TSRMLS_CC ) );
                     32: }
                     33: /* }}} */
                     34: 
                     35: /* {{{ proto string intl_get_error_message()
1.1.1.3 ! misho      36:  * Get text description of the last occurred error.
1.1       misho      37:  */
                     38: PHP_FUNCTION( intl_get_error_message )
                     39: {
                     40:        char* message = intl_error_get_message( NULL TSRMLS_CC );
                     41:        RETURN_STRING( message, FALSE );
                     42: }
                     43: /* }}} */
                     44: 
                     45: /* {{{ proto bool intl_is_failure()
                     46:  * Check whether the given error code indicates a failure.
                     47:  * Returns true if it does, and false if the code
                     48:  * indicates success or a warning.
                     49:  */
                     50: PHP_FUNCTION( intl_is_failure )
                     51: {
                     52:        long err_code;
                     53: 
                     54:        /* Parse parameters. */
                     55:        if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "l",
                     56:                &err_code ) == FAILURE )
                     57:        {
                     58:                intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
                     59:                        "intl_is_failure: unable to parse input params", 0 TSRMLS_CC );
                     60: 
                     61:                RETURN_FALSE;
                     62:        }
                     63: 
                     64:        RETURN_BOOL( U_FAILURE( err_code ) );
                     65: }
                     66: 
                     67: /* {{{ proto string intl_error_name()
                     68:  * Return a string for a given error code.
                     69:  * The string will be the same as the name of the error code constant.
                     70:  */
                     71: PHP_FUNCTION( intl_error_name )
                     72: {
                     73:        long err_code;
                     74: 
                     75:        /* Parse parameters. */
                     76:        if( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "l",
                     77:                &err_code ) == FAILURE )
                     78:        {
                     79:                intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR,
                     80:                        "intl_error_name: unable to parse input params", 0 TSRMLS_CC );
                     81: 
                     82:                RETURN_FALSE;
                     83:        }
                     84: 
                     85:        RETURN_STRING( (char*)u_errorName( err_code ), 1 );
                     86: }
                     87: /* }}} */
                     88: 
                     89: /* {{{ intl_expose_icu_error_codes
                     90:  * Expose ICU error codes
                     91:  */
                     92: void intl_expose_icu_error_codes( INIT_FUNC_ARGS )
                     93: {
                     94:        #define INTL_EXPOSE_CONST(x) REGISTER_LONG_CONSTANT(#x, x, CONST_CS)
                     95: 
                     96:        /* Warnings */
                     97:        INTL_EXPOSE_CONST( U_USING_FALLBACK_WARNING );
                     98:        INTL_EXPOSE_CONST( U_ERROR_WARNING_START );
                     99:        INTL_EXPOSE_CONST( U_USING_DEFAULT_WARNING );
                    100:        INTL_EXPOSE_CONST( U_SAFECLONE_ALLOCATED_WARNING );
                    101:        INTL_EXPOSE_CONST( U_STATE_OLD_WARNING );
                    102:        INTL_EXPOSE_CONST( U_STRING_NOT_TERMINATED_WARNING );
                    103:        INTL_EXPOSE_CONST( U_SORT_KEY_TOO_SHORT_WARNING );
                    104:        INTL_EXPOSE_CONST( U_AMBIGUOUS_ALIAS_WARNING );
                    105:        INTL_EXPOSE_CONST( U_DIFFERENT_UCA_VERSION );
                    106:        INTL_EXPOSE_CONST( U_ERROR_WARNING_LIMIT );
                    107: 
                    108:        /* Standard errors */
                    109:        INTL_EXPOSE_CONST( U_ZERO_ERROR );
                    110:        INTL_EXPOSE_CONST( U_ILLEGAL_ARGUMENT_ERROR );
                    111:        INTL_EXPOSE_CONST( U_MISSING_RESOURCE_ERROR );
                    112:        INTL_EXPOSE_CONST( U_INVALID_FORMAT_ERROR );
                    113:        INTL_EXPOSE_CONST( U_FILE_ACCESS_ERROR );
                    114:        INTL_EXPOSE_CONST( U_INTERNAL_PROGRAM_ERROR );
                    115:        INTL_EXPOSE_CONST( U_MESSAGE_PARSE_ERROR );
                    116:        INTL_EXPOSE_CONST( U_MEMORY_ALLOCATION_ERROR );
                    117:        INTL_EXPOSE_CONST( U_INDEX_OUTOFBOUNDS_ERROR );
                    118:        INTL_EXPOSE_CONST( U_PARSE_ERROR );
                    119:        INTL_EXPOSE_CONST( U_INVALID_CHAR_FOUND );
                    120:        INTL_EXPOSE_CONST( U_TRUNCATED_CHAR_FOUND );
                    121:        INTL_EXPOSE_CONST( U_ILLEGAL_CHAR_FOUND );
                    122:        INTL_EXPOSE_CONST( U_INVALID_TABLE_FORMAT );
                    123:        INTL_EXPOSE_CONST( U_INVALID_TABLE_FILE );
                    124:        INTL_EXPOSE_CONST( U_BUFFER_OVERFLOW_ERROR );
                    125:        INTL_EXPOSE_CONST( U_UNSUPPORTED_ERROR );
                    126:        INTL_EXPOSE_CONST( U_RESOURCE_TYPE_MISMATCH );
                    127:        INTL_EXPOSE_CONST( U_ILLEGAL_ESCAPE_SEQUENCE );
                    128:        INTL_EXPOSE_CONST( U_UNSUPPORTED_ESCAPE_SEQUENCE );
                    129:        INTL_EXPOSE_CONST( U_NO_SPACE_AVAILABLE );
                    130:        INTL_EXPOSE_CONST( U_CE_NOT_FOUND_ERROR );
                    131:        INTL_EXPOSE_CONST( U_PRIMARY_TOO_LONG_ERROR );
                    132:        INTL_EXPOSE_CONST( U_STATE_TOO_OLD_ERROR );
                    133:        INTL_EXPOSE_CONST( U_TOO_MANY_ALIASES_ERROR );
                    134:        INTL_EXPOSE_CONST( U_ENUM_OUT_OF_SYNC_ERROR );
                    135:        INTL_EXPOSE_CONST( U_INVARIANT_CONVERSION_ERROR );
                    136:        INTL_EXPOSE_CONST( U_INVALID_STATE_ERROR );
                    137:        INTL_EXPOSE_CONST( U_COLLATOR_VERSION_MISMATCH );
                    138:        INTL_EXPOSE_CONST( U_USELESS_COLLATOR_ERROR );
                    139:        INTL_EXPOSE_CONST( U_NO_WRITE_PERMISSION );
                    140:        INTL_EXPOSE_CONST( U_STANDARD_ERROR_LIMIT );
                    141: 
                    142:        /* The error code range 0x10000 0x10100 are reserved for Transliterator */
                    143:        INTL_EXPOSE_CONST( U_BAD_VARIABLE_DEFINITION );
                    144:        INTL_EXPOSE_CONST( U_PARSE_ERROR_START );
                    145:        INTL_EXPOSE_CONST( U_MALFORMED_RULE );
                    146:        INTL_EXPOSE_CONST( U_MALFORMED_SET );
                    147:        INTL_EXPOSE_CONST( U_MALFORMED_SYMBOL_REFERENCE );
                    148:        INTL_EXPOSE_CONST( U_MALFORMED_UNICODE_ESCAPE );
                    149:        INTL_EXPOSE_CONST( U_MALFORMED_VARIABLE_DEFINITION );
                    150:        INTL_EXPOSE_CONST( U_MALFORMED_VARIABLE_REFERENCE );
                    151:        INTL_EXPOSE_CONST( U_MISMATCHED_SEGMENT_DELIMITERS );
                    152:        INTL_EXPOSE_CONST( U_MISPLACED_ANCHOR_START );
                    153:        INTL_EXPOSE_CONST( U_MISPLACED_CURSOR_OFFSET );
                    154:        INTL_EXPOSE_CONST( U_MISPLACED_QUANTIFIER );
                    155:        INTL_EXPOSE_CONST( U_MISSING_OPERATOR );
                    156:        INTL_EXPOSE_CONST( U_MISSING_SEGMENT_CLOSE );
                    157:        INTL_EXPOSE_CONST( U_MULTIPLE_ANTE_CONTEXTS );
                    158:        INTL_EXPOSE_CONST( U_MULTIPLE_CURSORS );
                    159:        INTL_EXPOSE_CONST( U_MULTIPLE_POST_CONTEXTS );
                    160:        INTL_EXPOSE_CONST( U_TRAILING_BACKSLASH );
                    161:        INTL_EXPOSE_CONST( U_UNDEFINED_SEGMENT_REFERENCE );
                    162:        INTL_EXPOSE_CONST( U_UNDEFINED_VARIABLE );
                    163:        INTL_EXPOSE_CONST( U_UNQUOTED_SPECIAL );
                    164:        INTL_EXPOSE_CONST( U_UNTERMINATED_QUOTE );
                    165:        INTL_EXPOSE_CONST( U_RULE_MASK_ERROR );
                    166:        INTL_EXPOSE_CONST( U_MISPLACED_COMPOUND_FILTER );
                    167:        INTL_EXPOSE_CONST( U_MULTIPLE_COMPOUND_FILTERS );
                    168:        INTL_EXPOSE_CONST( U_INVALID_RBT_SYNTAX );
                    169:        INTL_EXPOSE_CONST( U_INVALID_PROPERTY_PATTERN );
                    170:        INTL_EXPOSE_CONST( U_MALFORMED_PRAGMA );
                    171:        INTL_EXPOSE_CONST( U_UNCLOSED_SEGMENT );
                    172:        INTL_EXPOSE_CONST( U_ILLEGAL_CHAR_IN_SEGMENT );
                    173:        INTL_EXPOSE_CONST( U_VARIABLE_RANGE_EXHAUSTED );
                    174:        INTL_EXPOSE_CONST( U_VARIABLE_RANGE_OVERLAP );
                    175:        INTL_EXPOSE_CONST( U_ILLEGAL_CHARACTER );
                    176:        INTL_EXPOSE_CONST( U_INTERNAL_TRANSLITERATOR_ERROR );
                    177:        INTL_EXPOSE_CONST( U_INVALID_ID );
                    178:        INTL_EXPOSE_CONST( U_INVALID_FUNCTION );
                    179:        INTL_EXPOSE_CONST( U_PARSE_ERROR_LIMIT );
                    180: 
                    181:        /* The error code range 0x10100 0x10200 are reserved for formatting API parsing error */
                    182:        INTL_EXPOSE_CONST( U_UNEXPECTED_TOKEN );
                    183:        INTL_EXPOSE_CONST( U_FMT_PARSE_ERROR_START );
                    184:        INTL_EXPOSE_CONST( U_MULTIPLE_DECIMAL_SEPARATORS );
                    185:        INTL_EXPOSE_CONST( U_MULTIPLE_DECIMAL_SEPERATORS );    /* Typo: kept for backward compatibility. Use U_MULTIPLE_DECIMAL_SEPARATORS */
                    186:        INTL_EXPOSE_CONST( U_MULTIPLE_EXPONENTIAL_SYMBOLS );
                    187:        INTL_EXPOSE_CONST( U_MALFORMED_EXPONENTIAL_PATTERN );
                    188:        INTL_EXPOSE_CONST( U_MULTIPLE_PERCENT_SYMBOLS );
                    189:        INTL_EXPOSE_CONST( U_MULTIPLE_PERMILL_SYMBOLS );
                    190:        INTL_EXPOSE_CONST( U_MULTIPLE_PAD_SPECIFIERS );
                    191:        INTL_EXPOSE_CONST( U_PATTERN_SYNTAX_ERROR );
                    192:        INTL_EXPOSE_CONST( U_ILLEGAL_PAD_POSITION );
                    193:        INTL_EXPOSE_CONST( U_UNMATCHED_BRACES );
                    194:        INTL_EXPOSE_CONST( U_UNSUPPORTED_PROPERTY );
                    195:        INTL_EXPOSE_CONST( U_UNSUPPORTED_ATTRIBUTE );
                    196:        INTL_EXPOSE_CONST( U_FMT_PARSE_ERROR_LIMIT );
                    197: 
                    198:        /* The error code range 0x10200 0x102ff are reserved for Break Iterator related error */
                    199:        INTL_EXPOSE_CONST( U_BRK_INTERNAL_ERROR );
                    200:        INTL_EXPOSE_CONST( U_BRK_ERROR_START );
                    201:        INTL_EXPOSE_CONST( U_BRK_HEX_DIGITS_EXPECTED );
                    202:        INTL_EXPOSE_CONST( U_BRK_SEMICOLON_EXPECTED );
                    203:        INTL_EXPOSE_CONST( U_BRK_RULE_SYNTAX );
                    204:        INTL_EXPOSE_CONST( U_BRK_UNCLOSED_SET );
                    205:        INTL_EXPOSE_CONST( U_BRK_ASSIGN_ERROR );
                    206:        INTL_EXPOSE_CONST( U_BRK_VARIABLE_REDFINITION );
                    207:        INTL_EXPOSE_CONST( U_BRK_MISMATCHED_PAREN );
                    208:        INTL_EXPOSE_CONST( U_BRK_NEW_LINE_IN_QUOTED_STRING );
                    209:        INTL_EXPOSE_CONST( U_BRK_UNDEFINED_VARIABLE );
                    210:        INTL_EXPOSE_CONST( U_BRK_INIT_ERROR );
                    211:        INTL_EXPOSE_CONST( U_BRK_RULE_EMPTY_SET );
                    212:        INTL_EXPOSE_CONST( U_BRK_UNRECOGNIZED_OPTION );
                    213:        INTL_EXPOSE_CONST( U_BRK_MALFORMED_RULE_TAG );
                    214:        INTL_EXPOSE_CONST( U_BRK_ERROR_LIMIT );
                    215: 
                    216:        /* The error codes in the range 0x10300-0x103ff are reserved for regular expression related errrs */
                    217:        INTL_EXPOSE_CONST( U_REGEX_INTERNAL_ERROR );
                    218:        INTL_EXPOSE_CONST( U_REGEX_ERROR_START );
                    219:        INTL_EXPOSE_CONST( U_REGEX_RULE_SYNTAX );
                    220:        INTL_EXPOSE_CONST( U_REGEX_INVALID_STATE );
                    221:        INTL_EXPOSE_CONST( U_REGEX_BAD_ESCAPE_SEQUENCE );
                    222:        INTL_EXPOSE_CONST( U_REGEX_PROPERTY_SYNTAX );
                    223:        INTL_EXPOSE_CONST( U_REGEX_UNIMPLEMENTED );
                    224:        INTL_EXPOSE_CONST( U_REGEX_MISMATCHED_PAREN );
                    225:        INTL_EXPOSE_CONST( U_REGEX_NUMBER_TOO_BIG );
                    226:        INTL_EXPOSE_CONST( U_REGEX_BAD_INTERVAL );
                    227:        INTL_EXPOSE_CONST( U_REGEX_MAX_LT_MIN );
                    228:        INTL_EXPOSE_CONST( U_REGEX_INVALID_BACK_REF );
                    229:        INTL_EXPOSE_CONST( U_REGEX_INVALID_FLAG );
                    230:        INTL_EXPOSE_CONST( U_REGEX_LOOK_BEHIND_LIMIT );
                    231:        INTL_EXPOSE_CONST( U_REGEX_SET_CONTAINS_STRING );
                    232:        INTL_EXPOSE_CONST( U_REGEX_ERROR_LIMIT );
                    233: 
                    234:        /* The error code in the range 0x10400-0x104ff are reserved for IDNA related error codes */
                    235:        INTL_EXPOSE_CONST( U_IDNA_PROHIBITED_ERROR );
                    236:        INTL_EXPOSE_CONST( U_IDNA_ERROR_START );
                    237:        INTL_EXPOSE_CONST( U_IDNA_UNASSIGNED_ERROR );
                    238:        INTL_EXPOSE_CONST( U_IDNA_CHECK_BIDI_ERROR );
                    239:        INTL_EXPOSE_CONST( U_IDNA_STD3_ASCII_RULES_ERROR );
                    240:        INTL_EXPOSE_CONST( U_IDNA_ACE_PREFIX_ERROR );
                    241:        INTL_EXPOSE_CONST( U_IDNA_VERIFICATION_ERROR );
                    242:        INTL_EXPOSE_CONST( U_IDNA_LABEL_TOO_LONG_ERROR );
1.1.1.3 ! misho     243: #if U_ICU_VERSION_MAJOR_NUM > 3 || U_ICU_VERSION_MAJOR_NUM == 3 && U_ICU_VERSION_MINOR_NUM >= 6
1.1       misho     244:        INTL_EXPOSE_CONST( U_IDNA_ZERO_LENGTH_LABEL_ERROR );
1.1.1.3 ! misho     245: #endif
1.1.1.2   misho     246: #if U_ICU_VERSION_MAJOR_NUM > 3 || U_ICU_VERSION_MAJOR_NUM == 3 && U_ICU_VERSION_MINOR_NUM >= 8
                    247:        INTL_EXPOSE_CONST( U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR );
1.1       misho     248: #endif
1.1.1.2   misho     249:        INTL_EXPOSE_CONST( U_IDNA_ERROR_LIMIT );
1.1       misho     250: 
                    251:        /* Aliases for StringPrep */
                    252:        INTL_EXPOSE_CONST( U_STRINGPREP_PROHIBITED_ERROR );
                    253:        INTL_EXPOSE_CONST( U_STRINGPREP_UNASSIGNED_ERROR );
                    254:        INTL_EXPOSE_CONST( U_STRINGPREP_CHECK_BIDI_ERROR );
                    255: 
                    256:        INTL_EXPOSE_CONST( U_ERROR_LIMIT );
                    257: 
                    258:        #undef INTL_EXPOSE_CONST
                    259: }
                    260: /* }}} */
                    261: 
                    262: /*
                    263:  * Local variables:
                    264:  * tab-width: 4
                    265:  * c-basic-offset: 4
                    266:  * End:
                    267:  * vim600: noet sw=4 ts=4 fdm=marker
                    268:  * vim<600: noet sw=4 ts=4
                    269:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>