wps/wbxml2/wbxml_errors.c
/*
* libwbxml, the WBXML Library.
* Copyright (C) 2002-2005 Aymerick Jehanne <aymerick@jehanne.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* LGPL v2.1: http://www.gnu.org/copyleft/lesser.txt
*
* Contact: libwbxml@aymerick.com
* Home: http://libwbxml.aymerick.com
*/
/**
* @file wbxml_errors.c
* @ingroup wbxml_errors
*
* @author Aymerick Jehanne <libwbxml@aymerick.com>
* @date 02/11/18
*
* @brief WBXML Error Codes Handling
*/
#include "wbxml.h"
/**
* @brief Error Code item
*/
typedef struct WBXMLErrorCodeItem_s {
WBXMLError code; /**< Error Code */
const WB_TINY *string; /**< Error Description */
} WBXMLErrorCodeItem;
/**
* @brief Error Code table
*/
static const WBXMLErrorCodeItem error_table [] = {
/* Generic Errors */
{ WBXML_OK, "No Error" },
{ WBXML_NOT_ENCODED, "Not Encoded" },
{ WBXML_ERROR_ATTR_TABLE_UNDEFINED, "Attribute Table Undefined" },
{ WBXML_ERROR_BAD_DATETIME, "Bad %Datetime Format" },
{ WBXML_ERROR_BAD_PARAMETER, "Bad Parameter" },
{ WBXML_ERROR_INTERNAL, "Internal Error" },
{ WBXML_ERROR_LANG_TABLE_UNDEFINED, "Languages Table Undefined" },
{ WBXML_ERROR_NOT_ENOUGH_MEMORY, "Not Enough Memory" },
{ WBXML_ERROR_NOT_IMPLEMENTED, "Not Implemented" },
{ WBXML_ERROR_TAG_TABLE_UNDEFINED, "Tag Table Undefined" },
{ WBXML_ERROR_B64_ENC, "Failed to encode Base64" },
#if defined( WBXML_SUPPORT_WV )
{ WBXML_ERROR_WV_DATETIME_FORMAT, "Bad Wireless-Village Date and Time Format" },
#endif /* WBXML_SUPPORT_WV */
{ WBXML_ERROR_NO_CHARSET_CONV, "No built-in charset convertor (Compiled without libiconv)" },
{ WBXML_ERROR_CHARSET_STR_LEN, "Bad string length, can't convert" },
/* WBXML Parser Errors */
{ WBXML_ERROR_ATTR_VALUE_TABLE_UNDEFINED, "Attribute Value Table Undefined" },
{ WBXML_ERROR_BAD_LITERAL_INDEX, "Bad Literal Index" },
{ WBXML_ERROR_BAD_NULL_TERMINATED_STRING_IN_STRING_TABLE, "Not NULL Terminated String in String Table" },
{ WBXML_ERROR_BAD_OPAQUE_LENGTH, "Bad Opaque Length" },
{ WBXML_ERROR_EMPTY_WBXML, "Empty WBXML" },
{ WBXML_ERROR_END_OF_BUFFER, "Unexpected End Of WBXML Buffer" },
{ WBXML_ERROR_ENTITY_CODE_OVERFLOW, "Entity Code Overflow" },
{ WBXML_ERROR_EXT_VALUE_TABLE_UNDEFINED, "Extension Value Table Undefined" },
{ WBXML_ERROR_INVALID_STRTBL_INDEX, "Invalid String Table Index" },
{ WBXML_ERROR_LITERAL_NOT_NULL_TERMINATED_IN_STRING_TABLE, "Literal Not NULL Terminated in String Table" },
{ WBXML_ERROR_NOT_NULL_TERMINATED_INLINE_STRING, "Not NULL Terminated Inline String" },
{ WBXML_ERROR_NULL_PARSER, "Null Parser" },
{ WBXML_ERROR_NULL_STRING_TABLE, "No String Table In Document" },
{ WBXML_ERROR_STRING_EXPECTED, "String Expected" },
{ WBXML_ERROR_STRTBL_LENGTH, "Bad String Table Length" },
{ WBXML_ERROR_UNKNOWN_ATTR, "Unknown Attribute" },
{ WBXML_ERROR_UNKNOWN_ATTR_VALUE, "Unknown Attribute Value" },
{ WBXML_ERROR_UNKNOWN_EXTENSION_TOKEN, "Unknown Extension Token" },
{ WBXML_ERROR_UNKNOWN_EXTENSION_VALUE, "Unknown Extension Value token" },
{ WBXML_ERROR_UNKNOWN_PUBLIC_ID, "Unknown Public ID" },
{ WBXML_ERROR_UNKNOWN_TAG, "Unknown Tag" },
{ WBXML_ERROR_UNVALID_MBUINT32, "Unvalid MultiByte UINT32" },
#if defined( WBXML_SUPPORT_WV )
{ WBXML_ERROR_WV_INTEGER_OVERFLOW, "Wireless-Village Integer Overflow" },
#endif /* WBXML_SUPPORT_WV */
/* WBXML Encoder Errors */
{ WBXML_ERROR_ENCODER_APPEND_DATA, "Can't append data to output buffer" },
{ WBXML_ERROR_STRTBL_DISABLED, "String Table generation disabled: can't encode Literal" },
{ WBXML_ERROR_XML_NODE_NOT_ALLOWED, "XML Node Type not allowed" },
{ WBXML_ERROR_XML_NULL_ATTR_NAME, "NULL XML Attribute Name" },
{ WBXML_ERROR_XML_PARSING_FAILED, "Parsing of XML Document Failed" },
#if defined( WBXML_SUPPORT_SYNCML )
{ WBXML_ERROR_XML_DEVINF_CONV_FAILED, "Convertion of XML DevInf document Failed" },
#endif /* WBXML_SUPPORT_WV */
{ WBXML_ERROR_NO_XMLPARSER, "Can't parse XML (Compiled without Expat): XML to WBXML conversion not possible" },
{ WBXML_ERROR_XMLPARSER_OUTPUT_UTF16, "XML Parser (Expat) is outputting UTF-16, so you have two choices :\n"
" - Get the iconv library (http://www.gnu.org/software/libiconv/)\n"
" - Use a version of Expat that output UTF-8" }
};
#define ERROR_TABLE_SIZE ((WB_ULONG) (sizeof(error_table) / sizeof(error_table[0])))
/***************************************************
* Public Functions
*/
WBXML_DECLARE(const WB_UTINY *) wbxml_errors_string(WBXMLError error_code)
{
WB_ULONG i;
for (i=0; i < ERROR_TABLE_SIZE; i++) {
if (error_table[i].code == error_code)
return (const WB_UTINY *)error_table[i].string;
}
return (const WB_UTINY *)"Unknown Error Code";
}