Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
4e7185eb
Commit
4e7185eb
authored
Dec 28, 2013
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
win32: implement vlc_strerror and vlc_strerror_c
parent
a37d20cc
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
155 additions
and
118 deletions
+155
-118
src/Makefile.am
src/Makefile.am
+1
-0
src/win32/error.c
src/win32/error.c
+153
-0
src/win32/winsock.c
src/win32/winsock.c
+1
-118
No files found.
src/Makefile.am
View file @
4e7185eb
...
...
@@ -284,6 +284,7 @@ SOURCES_libvlc_linux = \
SOURCES_libvlc_win32
=
\
win32/dirs.c
\
win32/error.c
\
win32/filesystem.c
\
win32/netconf.c
\
win32/plugin.c
\
...
...
src/win32/error.c
0 → 100644
View file @
4e7185eb
/*****************************************************************************
* error.c: DOS and Winsock error messages formatting
*****************************************************************************
* Copyright © 2006-2013 Rémi Denis-Courmont
*
* This program 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 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser 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.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <stdlib.h>
#include <errno.h>
#include <winerror.h>
#include <vlc_common.h>
#ifndef WSA_QOS_EUNKNOWNPSOBJ
# define WSA_QOS_EUNKNOWNPSOBJ 11024L
#endif
typedef
struct
{
int
code
;
const
char
*
msg
;
}
wsaerrmsg_t
;
static
const
wsaerrmsg_t
wsaerrmsg
[]
=
{
{
WSAEINTR
,
"Interrupted function call"
},
{
WSAEBADF
,
"File handle is not valid"
},
{
WSAEACCES
,
"Access denied"
},
{
WSAEFAULT
,
"Invalid memory address"
},
{
WSAEINVAL
,
"Invalid argument"
},
{
WSAEMFILE
,
"Too many open sockets"
},
{
WSAEWOULDBLOCK
,
"Resource temporarily unavailable"
},
{
WSAEINPROGRESS
,
"Operation now in progress"
},
{
WSAEALREADY
,
"Operation already in progress"
},
{
WSAENOTSOCK
,
"Non-socket handle specified"
},
{
WSAEDESTADDRREQ
,
"Missing destination address"
},
{
WSAEMSGSIZE
,
"Message too long"
},
{
WSAEPROTOTYPE
,
"Protocol wrong type for socket"
,
},
{
WSAENOPROTOOPT
,
"Option not supported by protocol"
},
{
WSAEPROTONOSUPPORT
,
"Protocol not supported"
},
{
WSAESOCKTNOSUPPORT
,
"Socket type not supported"
},
{
WSAEOPNOTSUPP
,
"Operation not supported"
},
{
WSAEPFNOSUPPORT
,
"Protocol family not supported"
},
{
WSAEAFNOSUPPORT
,
"Address family not supported by protocol family"
},
{
WSAEADDRINUSE
,
"Address already in use"
},
{
WSAEADDRNOTAVAIL
,
"Cannot assign requested address"
},
{
WSAENETDOWN
,
"Network is down"
},
{
WSAENETUNREACH
,
"Network unreachable"
},
{
WSAENETRESET
,
"Network dropped connection on reset"
},
{
WSAECONNABORTED
,
"Software caused connection abort"
},
{
WSAECONNRESET
,
"Connection reset by peer"
},
{
WSAENOBUFS
,
"No buffer space available (not enough memory)"
},
{
WSAEISCONN
,
"Socket is already connected"
},
{
WSAENOTCONN
,
"Socket is not connected"
},
{
WSAESHUTDOWN
,
"Cannot send after socket shutdown"
},
{
WSAETOOMANYREFS
,
"Too many references"
},
{
WSAETIMEDOUT
,
"Connection timed out"
},
{
WSAECONNREFUSED
,
"Connection refused by peer"
},
{
WSAELOOP
,
"Cannot translate name"
},
{
WSAENAMETOOLONG
,
"Name too long"
},
{
WSAEHOSTDOWN
,
"Remote host is down"
},
{
WSAEHOSTUNREACH
,
"No route to host (unreachable)"
},
{
WSAENOTEMPTY
,
"Directory not empty"
},
{
WSAEPROCLIM
,
"Too many processes"
},
{
WSAEUSERS
,
"User quota exceeded"
},
{
WSAEDQUOT
,
"Disk quota exceeded"
},
{
WSAESTALE
,
"Stale file handle reference"
},
{
WSAEREMOTE
,
"Item is remote"
,
},
{
WSASYSNOTREADY
,
"Network subsystem is unavailable (network stack not ready)"
},
{
WSAVERNOTSUPPORTED
,
"Winsock.dll version out of range (network stack version not supported"
},
{
WSANOTINITIALISED
,
"Network not initialized"
},
{
WSAEDISCON
,
"Graceful shutdown in progress"
},
{
WSAENOMORE
,
"No more results"
},
{
WSAECANCELLED
,
"Call has been cancelled"
},
{
WSAEINVALIDPROCTABLE
,
"Procedure call table is invalid"
},
{
WSAEINVALIDPROVIDER
,
"Service provider is invalid"
},
{
WSAEPROVIDERFAILEDINIT
,
"Service provider failed to initialize"
},
{
WSASYSCALLFAILURE
,
"System call failure"
},
{
WSASERVICE_NOT_FOUND
,
"Service not found"
},
{
WSATYPE_NOT_FOUND
,
"Class type not found"
},
{
WSA_E_NO_MORE
,
"No more results"
},
{
WSA_E_CANCELLED
,
"Call was cancelled"
},
{
WSAEREFUSED
,
"Database query was refused"
},
{
WSAHOST_NOT_FOUND
,
"Host not found"
},
{
WSATRY_AGAIN
,
"Nonauthoritative host not found (temporary hostname error)"
},
{
WSANO_RECOVERY
,
"Non-recoverable hostname error"
},
{
WSANO_DATA
,
"Valid name, no data record of requested type"
},
{
WSA_QOS_RECEIVERS
,
"QOS receivers"
},
{
WSA_QOS_SENDERS
,
"QOS senders"
},
{
WSA_QOS_NO_SENDERS
,
"No QOS senders"
},
{
WSA_QOS_NO_RECEIVERS
,
"QOS no receivers"
},
{
WSA_QOS_REQUEST_CONFIRMED
,
"QOS request confirmed"
},
{
WSA_QOS_ADMISSION_FAILURE
,
"QOS admission error"
},
{
WSA_QOS_POLICY_FAILURE
,
"QOS policy failure"
},
{
WSA_QOS_BAD_STYLE
,
"QOS bad style"
},
{
WSA_QOS_BAD_OBJECT
,
"QOS bad object"
},
{
WSA_QOS_TRAFFIC_CTRL_ERROR
,
"QOS traffic control error"
},
{
WSA_QOS_GENERIC_ERROR
,
"QOS generic error"
},
{
WSA_QOS_ESERVICETYPE
,
"QOS service type error"
},
{
WSA_QOS_EFLOWSPEC
,
"QOS flowspec error"
},
{
WSA_QOS_EPROVSPECBUF
,
"Invalid QOS provider buffer"
},
{
WSA_QOS_EFILTERSTYLE
,
"Invalid QOS filter style"
},
{
WSA_QOS_EFILTERTYPE
,
"Invalid QOS filter type"
},
{
WSA_QOS_EFILTERCOUNT
,
"Incorrect QOS filter count"
},
{
WSA_QOS_EOBJLENGTH
,
"Invalid QOS object length"
},
{
WSA_QOS_EFLOWCOUNT
,
"Incorrect QOS flow count"
},
{
WSA_QOS_EUNKNOWNPSOBJ
,
"Unrecognized QOS object"
},
{
WSA_QOS_EPOLICYOBJ
,
"Invalid QOS policy object"
},
{
WSA_QOS_EFLOWDESC
,
"Invalid QOS flow descriptor"
},
{
WSA_QOS_EPSFLOWSPEC
,
"Invalid QOS provider-specific flowspec"
},
{
WSA_QOS_EPSFILTERSPEC
,
"Invalid QOS provider-specific filterspec"
},
{
WSA_QOS_ESDMODEOBJ
,
"Invalid QOS shape discard mode object"
},
{
WSA_QOS_ESHAPERATEOBJ
,
"Invalid QOS shaping rate object"
},
{
WSA_QOS_RESERVED_PETYPE
,
"Reserved policy QOS element type"
},
{
0
,
NULL
}
/* Winsock2 error codes are missing, they "never" occur */
};
const
char
*
vlc_strerror_c
(
int
errnum
)
{
/* C run-time errors */
if
((
unsigned
)
errnum
<
(
unsigned
)
_sys_nerr
)
return
_sys_errlist
[
errnum
];
/* Windows socket errors */
for
(
const
wsaerrmsg_t
*
e
=
wsaerrmsg
;
e
->
msg
!=
NULL
;
e
++
)
if
(
e
->
code
==
errnum
)
return
e
->
msg
;
return
"Unknown error"
;
}
const
char
*
vlc_strerror
(
int
errnum
)
{
return
/*vlc_gettext*/
(
vlc_strerror_c
(
errnum
));
}
src/win32/winsock.c
View file @
4e7185eb
...
...
@@ -26,130 +26,13 @@
#include <errno.h>
#include <vlc_network.h>
#ifndef WSA_QOS_EUNKNOWNPSOBJ
# define WSA_QOS_EUNKNOWNPSOBJ 11024L
#endif
typedef
struct
{
int
code
;
const
char
*
msg
;
}
wsaerrmsg_t
;
static
const
wsaerrmsg_t
wsaerrmsg
[]
=
{
{
WSA_INVALID_HANDLE
,
"Specified event object handle is invalid"
},
{
WSA_NOT_ENOUGH_MEMORY
,
"Insufficient memory available"
},
{
WSA_INVALID_PARAMETER
,
"One or more parameters are invalid"
},
{
WSA_OPERATION_ABORTED
,
"Overlapped operation aborted"
},
{
WSA_IO_INCOMPLETE
,
"Overlapped I/O event object not in signaled state"
},
{
WSA_IO_PENDING
,
"Overlapped operations will complete later"
},
{
WSAEINTR
,
"Interrupted function call"
},
{
WSAEBADF
,
"File handle is not valid"
},
{
WSAEACCES
,
"Access denied"
},
{
WSAEFAULT
,
"Invalid memory address"
},
{
WSAEINVAL
,
"Invalid argument"
},
{
WSAEMFILE
,
"Too many open sockets"
},
{
WSAEWOULDBLOCK
,
"Resource temporarily unavailable"
},
{
WSAEINPROGRESS
,
"Operation now in progress"
},
{
WSAEALREADY
,
"Operation already in progress"
},
{
WSAENOTSOCK
,
"Non-socket handle specified"
},
{
WSAEDESTADDRREQ
,
"Missing destination address"
},
{
WSAEMSGSIZE
,
"Message too long"
},
{
WSAEPROTOTYPE
,
"Protocol wrong type for socket"
,
},
{
WSAENOPROTOOPT
,
"Option not supported by protocol"
},
{
WSAEPROTONOSUPPORT
,
"Protocol not supported"
},
{
WSAESOCKTNOSUPPORT
,
"Socket type not supported"
},
{
WSAEOPNOTSUPP
,
"Operation not supported"
},
{
WSAEPFNOSUPPORT
,
"Protocol family not supported"
},
{
WSAEAFNOSUPPORT
,
"Address family not supported by protocol family"
},
{
WSAEADDRINUSE
,
"Address already in use"
},
{
WSAEADDRNOTAVAIL
,
"Cannot assign requested address"
},
{
WSAENETDOWN
,
"Network is down"
},
{
WSAENETUNREACH
,
"Network unreachable"
},
{
WSAENETRESET
,
"Network dropped connection on reset"
},
{
WSAECONNABORTED
,
"Software caused connection abort"
},
{
WSAECONNRESET
,
"Connection reset by peer"
},
{
WSAENOBUFS
,
"No buffer space available (not enough memory)"
},
{
WSAEISCONN
,
"Socket is already connected"
},
{
WSAENOTCONN
,
"Socket is not connected"
},
{
WSAESHUTDOWN
,
"Cannot send after socket shutdown"
},
{
WSAETOOMANYREFS
,
"Too many references"
},
{
WSAETIMEDOUT
,
"Connection timed out"
},
{
WSAECONNREFUSED
,
"Connection refused by peer"
},
{
WSAELOOP
,
"Cannot translate name"
},
{
WSAENAMETOOLONG
,
"Name too long"
},
{
WSAEHOSTDOWN
,
"Remote host is down"
},
{
WSAEHOSTUNREACH
,
"No route to host (unreachable)"
},
{
WSAENOTEMPTY
,
"Directory not empty"
},
{
WSAEPROCLIM
,
"Too many processes"
},
{
WSAEUSERS
,
"User quota exceeded"
},
{
WSAEDQUOT
,
"Disk quota exceeded"
},
{
WSAESTALE
,
"Stale file handle reference"
},
{
WSAEREMOTE
,
"Item is remote"
,
},
{
WSASYSNOTREADY
,
"Network subsystem is unavailable (network stack not ready)"
},
{
WSAVERNOTSUPPORTED
,
"Winsock.dll version out of range (network stack version not supported"
},
{
WSANOTINITIALISED
,
"Network not initialized"
},
{
WSAEDISCON
,
"Graceful shutdown in progress"
},
{
WSAENOMORE
,
"No more results"
},
{
WSAECANCELLED
,
"Call has been cancelled"
},
{
WSAEINVALIDPROCTABLE
,
"Procedure call table is invalid"
},
{
WSAEINVALIDPROVIDER
,
"Service provider is invalid"
},
{
WSAEPROVIDERFAILEDINIT
,
"Service provider failed to initialize"
},
{
WSASYSCALLFAILURE
,
"System call failure"
},
{
WSASERVICE_NOT_FOUND
,
"Service not found"
},
{
WSATYPE_NOT_FOUND
,
"Class type not found"
},
{
WSA_E_NO_MORE
,
"No more results"
},
{
WSA_E_CANCELLED
,
"Call was cancelled"
},
{
WSAEREFUSED
,
"Database query was refused"
},
{
WSAHOST_NOT_FOUND
,
"Host not found"
},
{
WSATRY_AGAIN
,
"Nonauthoritative host not found (temporary hostname error)"
},
{
WSANO_RECOVERY
,
"Non-recoverable hostname error"
},
{
WSANO_DATA
,
"Valid name, no data record of requested type"
},
{
WSA_QOS_RECEIVERS
,
"QOS receivers"
},
{
WSA_QOS_SENDERS
,
"QOS senders"
},
{
WSA_QOS_NO_SENDERS
,
"No QOS senders"
},
{
WSA_QOS_NO_RECEIVERS
,
"QOS no receivers"
},
{
WSA_QOS_REQUEST_CONFIRMED
,
"QOS request confirmed"
},
{
WSA_QOS_ADMISSION_FAILURE
,
"QOS admission error"
},
{
WSA_QOS_POLICY_FAILURE
,
"QOS policy failure"
},
{
WSA_QOS_BAD_STYLE
,
"QOS bad style"
},
{
WSA_QOS_BAD_OBJECT
,
"QOS bad object"
},
{
WSA_QOS_TRAFFIC_CTRL_ERROR
,
"QOS traffic control error"
},
{
WSA_QOS_GENERIC_ERROR
,
"QOS generic error"
},
{
WSA_QOS_ESERVICETYPE
,
"QOS service type error"
},
{
WSA_QOS_EFLOWSPEC
,
"QOS flowspec error"
},
{
WSA_QOS_EPROVSPECBUF
,
"Invalid QOS provider buffer"
},
{
WSA_QOS_EFILTERSTYLE
,
"Invalid QOS filter style"
},
{
WSA_QOS_EFILTERTYPE
,
"Invalid QOS filter type"
},
{
WSA_QOS_EFILTERCOUNT
,
"Incorrect QOS filter count"
},
{
WSA_QOS_EOBJLENGTH
,
"Invalid QOS object length"
},
{
WSA_QOS_EFLOWCOUNT
,
"Incorrect QOS flow count"
},
{
WSA_QOS_EUNKNOWNPSOBJ
,
"Unrecognized QOS object"
},
{
WSA_QOS_EPOLICYOBJ
,
"Invalid QOS policy object"
},
{
WSA_QOS_EFLOWDESC
,
"Invalid QOS flow descriptor"
},
{
WSA_QOS_EPSFLOWSPEC
,
"Invalid QOS provider-specific flowspec"
},
{
WSA_QOS_EPSFILTERSPEC
,
"Invalid QOS provider-specific filterspec"
},
{
WSA_QOS_ESDMODEOBJ
,
"Invalid QOS shape discard mode object"
},
{
WSA_QOS_ESHAPERATEOBJ
,
"Invalid QOS shaping rate object"
},
{
WSA_QOS_RESERVED_PETYPE
,
"Reserved policy QOS element type"
},
{
0
,
NULL
}
/* Winsock2 error codes are missing, they "never" occur */
};
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.
*/
for
(
const
wsaerrmsg_t
*
e
=
wsaerrmsg
;
e
->
msg
!=
NULL
;
e
++
)
if
(
e
->
code
==
value
)
return
e
->
msg
;
/* Remember to update src/misc/messages.c if you change this one */
return
"Unknown network stack error"
;
return
vlc_strerror
(
value
);
}
#if 0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment