1
/* $Id: errno.c 3553 2011-05-05 06:14:19Z nanang $ */
3
* Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
4
* Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24
#include <pj/compat/socket.h>
25
#include <pj/string.h>
27
#if INCLUDE_ERRNO_TEST
29
#define THIS_FILE "errno"
31
#if defined(PJ_WIN32) && PJ_WIN32 != 0
35
#if defined(PJ_HAS_ERRNO_H) && PJ_HAS_ERRNO_H != 0
39
static void trim_newlines(char *s)
42
if (*s == '\r' || *s == '\n')
48
int my_strncasecmp(const char *s1, const char *s2, int max_len)
50
while (*s1 && *s2 && max_len > 0) {
51
if (pj_tolower(*s1) != pj_tolower(*s2))
60
const char *my_stristr(const char *whole, const char *part)
62
int part_len = strlen(part);
64
if (my_strncasecmp(whole, part, part_len) == 0)
77
PJ_LOG(3,(THIS_FILE, "...errno test: check the msg carefully"));
82
* Windows platform error.
84
# ifdef ERROR_INVALID_DATA
85
rc = PJ_STATUS_FROM_OS(ERROR_INVALID_DATA);
89
pj_strerror(rc, errbuf, sizeof(errbuf));
90
trim_newlines(errbuf);
91
PJ_LOG(3,(THIS_FILE, "...msg for rc=ERROR_INVALID_DATA: '%s'", errbuf));
92
if (my_stristr(errbuf, "invalid") == NULL) {
94
"...error: expecting \"invalid\" string in the msg"));
95
#ifndef PJ_WIN32_WINCE
101
pj_strerror(rc, errbuf, CUT);
102
PJ_LOG(3,(THIS_FILE, "...msg for rc=ERROR_INVALID_DATA (cut): '%s'", errbuf));
108
# if defined(EINVAL) && !defined(PJ_SYMBIAN)
109
rc = PJ_STATUS_FROM_OS(EINVAL);
113
pj_strerror(rc, errbuf, sizeof(errbuf));
114
trim_newlines(errbuf);
115
PJ_LOG(3,(THIS_FILE, "...msg for rc=EINVAL: '%s'", errbuf));
116
if (my_stristr(errbuf, "invalid") == NULL) {
117
PJ_LOG(3, (THIS_FILE,
118
"...error: expecting \"invalid\" string in the msg"));
123
pj_strerror(rc, errbuf, CUT);
124
PJ_LOG(3,(THIS_FILE, "...msg for rc=EINVAL (cut): '%s'", errbuf));
131
rc = PJ_STATUS_FROM_OS(WSAEINVAL);
135
pj_strerror(rc, errbuf, sizeof(errbuf));
136
trim_newlines(errbuf);
137
PJ_LOG(3,(THIS_FILE, "...msg for rc=WSAEINVAL: '%s'", errbuf));
138
if (my_stristr(errbuf, "invalid") == NULL) {
139
PJ_LOG(3, (THIS_FILE,
140
"...error: expecting \"invalid\" string in the msg"));
145
pj_strerror(rc, errbuf, CUT);
146
PJ_LOG(3,(THIS_FILE, "...msg for rc=WSAEINVAL (cut): '%s'", errbuf));
149
pj_strerror(PJ_EBUG, errbuf, sizeof(errbuf));
150
PJ_LOG(3,(THIS_FILE, "...msg for rc=PJ_EBUG: '%s'", errbuf));
151
if (my_stristr(errbuf, "BUG") == NULL) {
152
PJ_LOG(3, (THIS_FILE,
153
"...error: expecting \"BUG\" string in the msg"));
157
pj_strerror(PJ_EBUG, errbuf, CUT);
158
PJ_LOG(3,(THIS_FILE, "...msg for rc=PJ_EBUG, cut at %d chars: '%s'",
162
pj_perror(3, THIS_FILE, PJ_SUCCESS, "...testing %s", "pj_perror");
163
PJ_PERROR(3,(THIS_FILE, PJ_SUCCESS, "...testing %s", "PJ_PERROR"));
169
#endif /* INCLUDE_ERRNO_TEST */