Annotation of embedaddon/php/ext/mbstring/oniguruma/regposerr.c, revision 1.1.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>