⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 errno.c

📁 基于sip协议的网络电话源码
💻 C
字号:
/* $Id: errno.c 974 2007-02-19 01:13:53Z bennylp $ *//*  * Copyright (C)2003-2007 Benny Prijono <benny@prijono.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  */#include "test.h"#include <pj/errno.h>#include <pj/log.h>#include <pj/ctype.h>#include <pj/compat/socket.h>#include <pj/string.h>#if INCLUDE_ERRNO_TEST#define THIS_FILE   "errno"#if defined(PJ_WIN32) && PJ_WIN32 != 0#   include <windows.h>#endif#if defined(PJ_HAS_ERRNO_H) && PJ_HAS_ERRNO_H != 0#   include <errno.h>#endifstatic void trim_newlines(char *s){    while (*s) {        if (*s == '\r' || *s == '\n')            *s = ' ';        ++s;    }}int my_strncasecmp(const char *s1, const char *s2, int max_len){    while (*s1 && *s2 && max_len > 0) {        if (pj_tolower(*s1) != pj_tolower(*s2))            return -1;        ++s1;        ++s2;        --max_len;    }    return 0;}const char *my_stristr(const char *whole, const char *part){    int part_len = strlen(part);    while (*whole) {        if (my_strncasecmp(whole, part, part_len) == 0)            return whole;        ++whole;    }    return NULL;}int errno_test(void){    enum { CUT = 6 };    pj_status_t rc;    char errbuf[256];    PJ_LOG(3,(THIS_FILE, "...errno test: check the msg carefully"));    /*      * Windows platform error.      */#   ifdef ERROR_INVALID_DATA    rc = PJ_STATUS_FROM_OS(ERROR_INVALID_DATA);    pj_set_os_error(rc);    /* Whole */    pj_strerror(rc, errbuf, sizeof(errbuf));    trim_newlines(errbuf);    PJ_LOG(3,(THIS_FILE, "...msg for rc=ERROR_INVALID_DATA: '%s'", errbuf));    if (my_stristr(errbuf, "invalid") == NULL) {        PJ_LOG(3, (THIS_FILE,                    "...error: expecting \"invalid\" string in the msg"));#ifndef PJ_WIN32_WINCE        return -20;#endif    }    /* Cut version. */    pj_strerror(rc, errbuf, CUT);    PJ_LOG(3,(THIS_FILE, "...msg for rc=ERROR_INVALID_DATA (cut): '%s'", errbuf));#   endif    /*     * Unix errors     */#   ifdef EINVAL    rc = PJ_STATUS_FROM_OS(EINVAL);    pj_set_os_error(rc);    /* Whole */    pj_strerror(rc, errbuf, sizeof(errbuf));    trim_newlines(errbuf);    PJ_LOG(3,(THIS_FILE, "...msg for rc=EINVAL: '%s'", errbuf));    if (my_stristr(errbuf, "invalid") == NULL) {        PJ_LOG(3, (THIS_FILE,                    "...error: expecting \"invalid\" string in the msg"));        return -30;    }    /* Cut */    pj_strerror(rc, errbuf, CUT);    PJ_LOG(3,(THIS_FILE, "...msg for rc=EINVAL (cut): '%s'", errbuf));#   endif    /*      * Windows WSA errors     */#   ifdef WSAEINVAL    rc = PJ_STATUS_FROM_OS(WSAEINVAL);    pj_set_os_error(rc);    /* Whole */    pj_strerror(rc, errbuf, sizeof(errbuf));    trim_newlines(errbuf);    PJ_LOG(3,(THIS_FILE, "...msg for rc=WSAEINVAL: '%s'", errbuf));    if (my_stristr(errbuf, "invalid") == NULL) {        PJ_LOG(3, (THIS_FILE,                    "...error: expecting \"invalid\" string in the msg"));        return -40;    }    /* Cut */    pj_strerror(rc, errbuf, CUT);    PJ_LOG(3,(THIS_FILE, "...msg for rc=WSAEINVAL (cut): '%s'", errbuf));#   endif    pj_strerror(PJ_EBUG, errbuf, sizeof(errbuf));    PJ_LOG(3,(THIS_FILE, "...msg for rc=PJ_EBUG: '%s'", errbuf));    if (my_stristr(errbuf, "BUG") == NULL) {        PJ_LOG(3, (THIS_FILE,                    "...error: expecting \"BUG\" string in the msg"));        return -20;    }    pj_strerror(PJ_EBUG, errbuf, CUT);    PJ_LOG(3,(THIS_FILE, "...msg for rc=PJ_EBUG, cut at %d chars: '%s'",               CUT, errbuf));    return 0;}#endif	/* INCLUDE_ERRNO_TEST */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -