1
mirror of https://code.videolan.org/videolan/vlc synced 2024-07-21 07:24:15 +02:00

Common socket error handling

This commit is contained in:
Rémi Denis-Courmont 2006-03-09 22:56:37 +00:00
parent 341c52d2c7
commit 768327adb4
3 changed files with 72 additions and 0 deletions

View File

@ -38,6 +38,8 @@
# include <winsock2.h>
# include <ws2tcpip.h>
# define ENETUNREACH WSAENETUNREACH
# define net_errno (WSAGetLastError())
extern const char *net_strerror( int val );
#else
# if HAVE_SYS_SOCKET_H
# include <sys/socket.h>
@ -51,6 +53,8 @@
# include <net/netdb.h>
# endif
# include <netdb.h>
# define net_errno errno
# define net_strerror strerror
#endif
# ifdef __cplusplus

View File

@ -305,6 +305,7 @@ SOURCES_libvlc_common = \
network/acl.c \
network/getaddrinfo.c \
network/io.c \
network/net_error.c \
network/tcp.c \
network/udp.c \
network/httpd.c \

67
src/network/net_error.c Normal file
View File

@ -0,0 +1,67 @@
/*****************************************************************************
* net_error.c: Network error handling
*****************************************************************************
* Copyright (C) 2006 Rémi Denis-Courmont
* $Id$
*
* Author : Rémi Denis-Courmont <rem # videolan.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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <vlc/vlc.h>
#include <errno.h>
#include "network.h"
#if defined (WIN32) || defined (UNDER_CE)
const char *net_strerror( int value )
{
/* There doesn't seem to be any portable error message generation for
* Winsock errors. Some old versions had s_error, but it appears to be
* gone, and is not documented.
*/
switch( value )
{
/* Feel free to add any error message as you see fit */
case WSAENETUNREACH:
return "Destination unreachable";
case WSAETIMEDOUT:
return "Connection timed out";
case WSAECONNREFUSED:
return "Connection refused";
default:
{
static char errmsg[14 + 5 + 1];
/* Given PE don't support thread-local storage, this cannot be
* implemented in a thread-safe manner, I'm afraid. */
if( ((unsigned)value) > 99999 ) /* avoid overflow */
return "Invalid error code";
sprintf( errmsg, "Winsock error %u", (unsigned)value );
return errmsg;
}
}
return strerror( value );
}
#endif