📄 apierrno.c
字号:
/*************************************************************************** Copyright : 2001-2002, ASPIRE TECHNOLOGIES (SHENZHEN) LTD. Program ID : apierrno.c Description : 函数调用的错误描述的操作函数 Version : NEWCMPPAPI Functions : 内部函数 Modification Log: DATE AUTHOR DESCRIPTION -------------------------------------------------------------------------- 11/25/2002 wenyz Create***************************************************************************/#include "cmppapi.h"#include "seterrno.h"#define BUFFERLEN 128static char g_ErrorDetail[ BUFFERLEN+1 ]; /*详细错误描述*/#define REASONBUFFERLEN 256static char g_ReasonDetail[ REASONBUFFERLEN+1 ]; /* 原因的错误描述 *//* *描述:打印详细错误描述 (到标准输出和错误输出) *输入:无 *输出:无 *返回值:无 * */void vPrintErrorDetail( ){ if( strlen( g_ErrorDetail ) == 0 ) { fprintf( stdout, "%s", "no error info\n" ); fflush( stdout ); fprintf( stderr, "%s", "no error info\n" ); } else { fprintf( stdout, "%s\n", g_ErrorDetail ); fflush( stdout ); fprintf( stderr, "%s\n", g_ErrorDetail ); } return;}/* *描述:得到详细错误描述字符串 (到标准输出和错误输出) *输入:无 *输出:无 *返回值:const char* 详细错误描述字符串指针 * */const char* ASPAPI sGetErrorDetail( ){ if( strlen( g_ErrorDetail ) == 0 ) { /* vsnprintf( g_ErrorDetail, sizeof(g_ErrorDetail)-1, "%s", "no error info\n" ); */ snprintf( g_ErrorDetail, sizeof(g_ErrorDetail)-1, "%s", "no error info\n" ); } return g_ErrorDetail;}/* *描述:设置详细错误描述 *输入:变参 *输出:无 *返回值:无 * */void vSetErrorDetail(const char *fmt, ...){ va_list ap; va_start(ap, fmt); //////////////// //清空上次的内容 memset( g_ErrorDetail, 0, sizeof(g_ErrorDetail) ); /* this is safe */ vsnprintf( g_ErrorDetail, sizeof(g_ErrorDetail)-1, fmt, ap ); va_end(ap); return;}const char* strGetErrorDetailString( ){ if( strlen( g_ErrorDetail ) == 0 ) { /* vsnprintf( g_ErrorDetail, sizeof(g_ErrorDetail)-1, "%s", "no error info\n" ); */ snprintf( g_ErrorDetail, sizeof(g_ErrorDetail)-1, "%s", "no error info\n" ); } return g_ErrorDetail;}/* * 描述:通过错误返回值得到详细错误描述字符串 * 输入:int nErrReturn 调用API得到的错误返回值 * 输出:无 * 返回值:const char* 详细错误描述字符串指针 */const char* ASPAPI sGetErrorReason( int nErrReturn ){ char* pchStart = g_ReasonDetail; //////////////// //清空上次的内容 memset( g_ReasonDetail, 0, sizeof(g_ReasonDetail) ); switch( nErrReturn ) { case API_ERR_INVALID : ///* 非法的输入参数 */ snprintf( g_ReasonDetail, sizeof(g_ReasonDetail)-1, "%s", "[Invalid Input Parameter]:" ); break; case API_ERR_NETWORK : ///* 网络错误 */ snprintf( g_ReasonDetail, sizeof(g_ReasonDetail)-1, "%s", "[Network Error]:" ); break; case API_ERR_INIFILE : ///* 配置文件错误 */ snprintf( g_ReasonDetail, sizeof(g_ReasonDetail)-1, "%s", "[Config File Error]:" ); break; case API_ERR_TIMEOUT : ///* 超时错误 */ snprintf( g_ReasonDetail, sizeof(g_ReasonDetail)-1, "%s", "[TimeOut Error]:" ); break; case API_ERR_PROTOCOL: ///* 协议错误 */ snprintf( g_ReasonDetail, sizeof(g_ReasonDetail)-1, "%s", "[Protocol Error]:" ); break; case API_ERR_RESP : ///* 网关返回错误 */ snprintf( g_ReasonDetail, sizeof(g_ReasonDetail)-1, "%s", "[Response Error]:" ); break; case API_ERR_OTHER: ///* 其它错误 */ snprintf( g_ReasonDetail, sizeof(g_ReasonDetail)-1, "%s", "[Other Error]:" ); break; default: snprintf( g_ReasonDetail, sizeof(g_ReasonDetail)-1, "%s", "invalid input parameter" ); return g_ReasonDetail; break; } pchStart += strlen( g_ReasonDetail ); snprintf( pchStart, sizeof(g_ReasonDetail)-1-strlen( g_ReasonDetail ), "%s", sGetErrorDetail( ) ); return g_ReasonDetail; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -