Annotation of embedaddon/php/ext/intl/common/common_error.c, revision 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: 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()
        !            27:  * Get code of the last occured error.
        !            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()
        !            36:  * Get text description of the last occured error.
        !            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: #if defined(U_IDNA_PROHIBITED_ERROR)
        !           236:        INTL_EXPOSE_CONST( U_IDNA_PROHIBITED_ERROR );
        !           237:        INTL_EXPOSE_CONST( U_IDNA_ERROR_START );
        !           238:        INTL_EXPOSE_CONST( U_IDNA_UNASSIGNED_ERROR );
        !           239:        INTL_EXPOSE_CONST( U_IDNA_CHECK_BIDI_ERROR );
        !           240:        INTL_EXPOSE_CONST( U_IDNA_STD3_ASCII_RULES_ERROR );
        !           241:        INTL_EXPOSE_CONST( U_IDNA_ACE_PREFIX_ERROR );
        !           242:        INTL_EXPOSE_CONST( U_IDNA_VERIFICATION_ERROR );
        !           243:        INTL_EXPOSE_CONST( U_IDNA_LABEL_TOO_LONG_ERROR );
        !           244:        INTL_EXPOSE_CONST( U_IDNA_ZERO_LENGTH_LABEL_ERROR );
        !           245:        INTL_EXPOSE_CONST( U_IDNA_ERROR_LIMIT );
        !           246: #endif
        !           247: 
        !           248:        /* Aliases for StringPrep */
        !           249:        INTL_EXPOSE_CONST( U_STRINGPREP_PROHIBITED_ERROR );
        !           250:        INTL_EXPOSE_CONST( U_STRINGPREP_UNASSIGNED_ERROR );
        !           251:        INTL_EXPOSE_CONST( U_STRINGPREP_CHECK_BIDI_ERROR );
        !           252: 
        !           253:        INTL_EXPOSE_CONST( U_ERROR_LIMIT );
        !           254: 
        !           255:        #undef INTL_EXPOSE_CONST
        !           256: }
        !           257: /* }}} */
        !           258: 
        !           259: /*
        !           260:  * Local variables:
        !           261:  * tab-width: 4
        !           262:  * c-basic-offset: 4
        !           263:  * End:
        !           264:  * vim600: noet sw=4 ts=4 fdm=marker
        !           265:  * vim<600: noet sw=4 ts=4
        !           266:  */

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