Annotation of embedaddon/php/ext/mbstring/oniguruma/regposerr.c, revision 1.1

1.1     ! misho       1: /**********************************************************************
        !             2:   regposerr.c - Oniguruma (regular expression library)
        !             3: **********************************************************************/
        !             4: /*-
        !             5:  * Copyright (c) 2002-2005  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * Redistribution and use in source and binary forms, with or without
        !             9:  * modification, are permitted provided that the following conditions
        !            10:  * are met:
        !            11:  * 1. Redistributions of source code must retain the above copyright
        !            12:  *    notice, this list of conditions and the following disclaimer.
        !            13:  * 2. Redistributions in binary form must reproduce the above copyright
        !            14:  *    notice, this list of conditions and the following disclaimer in the
        !            15:  *    documentation and/or other materials provided with the distribution.
        !            16:  *
        !            17:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
        !            18:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            19:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            20:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
        !            21:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            22:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            23:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            24:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            25:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            26:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            27:  * SUCH DAMAGE.
        !            28:  */
        !            29: 
        !            30: #include "config.h"
        !            31: #include "onigposix.h"
        !            32: 
        !            33: #ifdef HAVE_STRING_H
        !            34: # include <string.h>
        !            35: #else
        !            36: # include <strings.h>
        !            37: #endif
        !            38: 
        !            39: static char* ESTRING[] = {
        !            40:   NULL,
        !            41:   "failed to match",                         /* REG_NOMATCH    */
        !            42:   "Invalid regular expression",              /* REG_BADPAT     */
        !            43:   "invalid collating element referenced",    /* REG_ECOLLATE   */
        !            44:   "invalid character class type referenced", /* REG_ECTYPE     */
        !            45:   "bad backslash-escape sequence",           /* REG_EESCAPE    */
        !            46:   "invalid back reference number",           /* REG_ESUBREG    */
        !            47:   "imbalanced [ and ]",                      /* REG_EBRACK     */
        !            48:   "imbalanced ( and )",                      /* REG_EPAREN     */
        !            49:   "imbalanced { and }",                      /* REG_EBRACE     */
        !            50:   "invalid repeat range {n,m}",              /* REG_BADBR      */
        !            51:   "invalid range",                           /* REG_ERANGE     */
        !            52:   "Out of memory",                           /* REG_ESPACE     */
        !            53:   "? * + not preceded by valid regular expression", /* REG_BADRPT   */
        !            54: 
        !            55:   /* Extended errors */
        !            56:   "internal error",                          /* REG_EONIG_INTERNAL */
        !            57:   "invalid wide char value",                 /* REG_EONIG_BADWC    */
        !            58:   "invalid argument",                        /* REG_EONIG_BADARG   */
        !            59:   "multi-thread error"                       /* REG_EONIG_THREAD   */
        !            60: };
        !            61: 
        !            62: #include <stdio.h>
        !            63: 
        !            64: 
        !            65: extern size_t
        !            66: regerror(int posix_ecode, const regex_t* reg, char* buf, size_t size)
        !            67: {
        !            68:   char* s;
        !            69:   char tbuf[35];
        !            70:   size_t len;
        !            71: 
        !            72:   if (posix_ecode > 0 && posix_ecode < sizeof(ESTRING) / sizeof(ESTRING[0])) {
        !            73:     s = ESTRING[posix_ecode];
        !            74:   }
        !            75:   else if (posix_ecode == 0) {
        !            76:     s = "";
        !            77:   }
        !            78:   else {
        !            79:     sprintf(tbuf, "undefined error code (%d)", posix_ecode);
        !            80:     s = tbuf;
        !            81:   }
        !            82: 
        !            83:   len = strlen(s) + 1; /* use strlen() because s is ascii encoding. */
        !            84: 
        !            85:   if (buf != NULL && size > 0) {
        !            86:     strncpy(buf, s, size - 1);
        !            87:     buf[size - 1] = '\0';
        !            88:   }
        !            89:   return len;
        !            90: }

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