set default newlib dir's structure
git-svn-id: svn://kolibrios.org@4874 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
838
contrib/sdk/sources/newlib/libc/string/strerror.c
Normal file
838
contrib/sdk/sources/newlib/libc/string/strerror.c
Normal file
@@ -0,0 +1,838 @@
|
||||
/***
|
||||
**** CAUTION!!! KEEP DOC CONSISTENT---if you change text of a message
|
||||
**** here, change two places:
|
||||
**** 1) the leading doc section (alphabetized by macro)
|
||||
**** 2) the real text inside switch(errnum)
|
||||
***/
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
<<strerror>>---convert error number to string
|
||||
|
||||
INDEX
|
||||
strerror
|
||||
|
||||
ANSI_SYNOPSIS
|
||||
#include <string.h>
|
||||
char *strerror(int <[errnum]>);
|
||||
char *_strerror_r(struct _reent <[ptr]>, int <[errnum]>,
|
||||
int <[internal]>, int *<[error]>);
|
||||
|
||||
TRAD_SYNOPSIS
|
||||
#include <string.h>
|
||||
char *strerror(<[errnum]>)
|
||||
int <[errnum]>;
|
||||
|
||||
DESCRIPTION
|
||||
<<strerror>> converts the error number <[errnum]> into a
|
||||
string. The value of <[errnum]> is usually a copy of <<errno>>.
|
||||
If <<errnum>> is not a known error number, the result points to an
|
||||
empty string.
|
||||
|
||||
This implementation of <<strerror>> prints out the following strings
|
||||
for each of the values defined in `<<errno.h>>':
|
||||
|
||||
o+
|
||||
o 0
|
||||
Success
|
||||
|
||||
o E2BIG
|
||||
Arg list too long
|
||||
|
||||
o EACCES
|
||||
Permission denied
|
||||
|
||||
o EADDRINUSE
|
||||
Address already in use
|
||||
|
||||
o EADV
|
||||
Advertise error
|
||||
|
||||
o EAFNOSUPPORT
|
||||
Address family not supported by protocol family
|
||||
|
||||
o EAGAIN
|
||||
No more processes
|
||||
|
||||
o EALREADY
|
||||
Socket already connected
|
||||
|
||||
o EBADF
|
||||
Bad file number
|
||||
|
||||
o EBADMSG
|
||||
Bad message
|
||||
|
||||
o EBUSY
|
||||
Device or resource busy
|
||||
|
||||
o ECHILD
|
||||
No children
|
||||
|
||||
o ECOMM
|
||||
Communication error
|
||||
|
||||
o ECONNABORTED
|
||||
Software caused connection abort
|
||||
|
||||
o ECONNREFUSED
|
||||
Connection refused
|
||||
|
||||
o EDEADLK
|
||||
Deadlock
|
||||
|
||||
o EDESTADDRREQ
|
||||
Destination address required
|
||||
|
||||
o EEXIST
|
||||
File exists
|
||||
|
||||
o EDOM
|
||||
Math argument
|
||||
|
||||
o EFAULT
|
||||
Bad address
|
||||
|
||||
o EFBIG
|
||||
File too large
|
||||
|
||||
o EHOSTDOWN
|
||||
Host is down
|
||||
|
||||
o EHOSTUNREACH
|
||||
Host is unreachable
|
||||
|
||||
o EIDRM
|
||||
Identifier removed
|
||||
|
||||
o EINPROGRESS
|
||||
Connection already in progress
|
||||
|
||||
o EINTR
|
||||
Interrupted system call
|
||||
|
||||
o EINVAL
|
||||
Invalid argument
|
||||
|
||||
o EIO
|
||||
I/O error
|
||||
|
||||
o EISCONN
|
||||
Socket is already connected
|
||||
|
||||
o EISDIR
|
||||
Is a directory
|
||||
|
||||
o ELIBACC
|
||||
Cannot access a needed shared library
|
||||
|
||||
o ELIBBAD
|
||||
Accessing a corrupted shared library
|
||||
|
||||
o ELIBEXEC
|
||||
Cannot exec a shared library directly
|
||||
|
||||
o ELIBMAX
|
||||
Attempting to link in more shared libraries than system limit
|
||||
|
||||
o ELIBSCN
|
||||
<<.lib>> section in a.out corrupted
|
||||
|
||||
o EMFILE
|
||||
Too many open files
|
||||
|
||||
o EMLINK
|
||||
Too many links
|
||||
|
||||
o EMSGSIZE
|
||||
Message too long
|
||||
|
||||
o EMULTIHOP
|
||||
Multihop attempted
|
||||
|
||||
o ENAMETOOLONG
|
||||
File or path name too long
|
||||
|
||||
o ENETDOWN
|
||||
Network interface not configured
|
||||
|
||||
o ENETUNREACH
|
||||
Network is unreachable
|
||||
|
||||
o ENFILE
|
||||
Too many open files in system
|
||||
|
||||
o ENODEV
|
||||
No such device
|
||||
|
||||
o ENOENT
|
||||
No such file or directory
|
||||
|
||||
o ENOEXEC
|
||||
Exec format error
|
||||
|
||||
o ENOLCK
|
||||
No lock
|
||||
|
||||
o ENOLINK
|
||||
Virtual circuit is gone
|
||||
|
||||
o ENOMEM
|
||||
Not enough space
|
||||
|
||||
o ENOMSG
|
||||
No message of desired type
|
||||
|
||||
o ENONET
|
||||
Machine is not on the network
|
||||
|
||||
o ENOPKG
|
||||
No package
|
||||
|
||||
o ENOPROTOOPT
|
||||
Protocol not available
|
||||
|
||||
o ENOSPC
|
||||
No space left on device
|
||||
|
||||
o ENOSR
|
||||
No stream resources
|
||||
|
||||
o ENOSTR
|
||||
Not a stream
|
||||
|
||||
o ENOSYS
|
||||
Function not implemented
|
||||
|
||||
o ENOTBLK
|
||||
Block device required
|
||||
|
||||
o ENOTCONN
|
||||
Socket is not connected
|
||||
|
||||
o ENOTDIR
|
||||
Not a directory
|
||||
|
||||
o ENOTEMPTY
|
||||
Directory not empty
|
||||
|
||||
o ENOTSOCK
|
||||
Socket operation on non-socket
|
||||
|
||||
o ENOTSUP
|
||||
Not supported
|
||||
|
||||
o ENOTTY
|
||||
Not a character device
|
||||
|
||||
o ENXIO
|
||||
No such device or address
|
||||
|
||||
o EPERM
|
||||
Not owner
|
||||
|
||||
o EPIPE
|
||||
Broken pipe
|
||||
|
||||
o EPROTO
|
||||
Protocol error
|
||||
|
||||
o EPROTOTYPE
|
||||
Protocol wrong type for socket
|
||||
|
||||
o EPROTONOSUPPORT
|
||||
Unknown protocol
|
||||
|
||||
o ERANGE
|
||||
Result too large
|
||||
|
||||
o EREMOTE
|
||||
Resource is remote
|
||||
|
||||
o EROFS
|
||||
Read-only file system
|
||||
|
||||
o ESHUTDOWN
|
||||
Can't send after socket shutdown
|
||||
|
||||
o ESOCKTNOSUPPORT
|
||||
Socket type not supported
|
||||
|
||||
o ESPIPE
|
||||
Illegal seek
|
||||
|
||||
o ESRCH
|
||||
No such process
|
||||
|
||||
o ESRMNT
|
||||
Srmount error
|
||||
|
||||
o ETIME
|
||||
Stream ioctl timeout
|
||||
|
||||
o ETIMEDOUT
|
||||
Connection timed out
|
||||
|
||||
o ETXTBSY
|
||||
Text file busy
|
||||
|
||||
o EXDEV
|
||||
Cross-device link
|
||||
|
||||
o ECANCELED
|
||||
Operation canceled
|
||||
|
||||
o ENOTRECOVERABLE
|
||||
State not recoverable
|
||||
|
||||
o EOWNERDEAD
|
||||
Previous owner died
|
||||
|
||||
o ESTRPIPE
|
||||
Strings pipe error
|
||||
|
||||
o-
|
||||
|
||||
<<_strerror_r>> is a reentrant version of the above.
|
||||
|
||||
RETURNS
|
||||
This function returns a pointer to a string. Your application must
|
||||
not modify that string.
|
||||
|
||||
PORTABILITY
|
||||
ANSI C requires <<strerror>>, but does not specify the strings used
|
||||
for each error number.
|
||||
|
||||
Although this implementation of <<strerror>> is reentrant (depending
|
||||
on <<_user_strerror>>), ANSI C declares that subsequent calls to
|
||||
<<strerror>> may overwrite the result string; therefore portable
|
||||
code cannot depend on the reentrancy of this subroutine.
|
||||
|
||||
Although this implementation of <<strerror>> guarantees a non-null
|
||||
result with a NUL-terminator, some implementations return <<NULL>>
|
||||
on failure. Although POSIX allows <<strerror>> to set <<errno>>
|
||||
to EINVAL on failure, this implementation does not do so (unless
|
||||
you provide <<_user_strerror>>).
|
||||
|
||||
POSIX recommends that unknown <[errnum]> result in a message
|
||||
including that value, however it is not a requirement and this
|
||||
implementation does not provide that information (unless you
|
||||
provide <<_user_strerror>>).
|
||||
|
||||
This implementation of <<strerror>> provides for user-defined
|
||||
extensibility. <<errno.h>> defines <[__ELASTERROR]>, which can be
|
||||
used as a base for user-defined error values. If the user supplies a
|
||||
routine named <<_user_strerror>>, and <[errnum]> passed to
|
||||
<<strerror>> does not match any of the supported values,
|
||||
<<_user_strerror>> is called with three arguments. The first is of
|
||||
type <[int]>, and is the <[errnum]> value unknown to <<strerror>>.
|
||||
The second is of type <[int]>, and matches the <[internal]> argument
|
||||
of <<_strerror_r>>; this should be zero if called from <<strerror>>
|
||||
and non-zero if called from any other function; <<_user_strerror>> can
|
||||
use this information to satisfy the POSIX rule that no other
|
||||
standardized function can overwrite a static buffer reused by
|
||||
<<strerror>>. The third is of type <[int *]>, and matches the
|
||||
<[error]> argument of <<_strerror_r>>; if a non-zero value is stored
|
||||
into that location (usually <[EINVAL]>), then <<strerror>> will set
|
||||
<<errno>> to that value, and the XPG variant of <<strerror_r>> will
|
||||
return that value instead of zero or <[ERANGE]>. <<_user_strerror>>
|
||||
returns a <[char *]> value; returning <[NULL]> implies that the user
|
||||
function did not choose to handle <[errnum]>. The default
|
||||
<<_user_strerror>> returns <[NULL]> for all input values. Note that
|
||||
<<_user_sterror>> must be thread-safe, and only denote errors via the
|
||||
third argument rather than modifying <<errno>>, if <<strerror>> and
|
||||
<<strerror_r>> are are to comply with POSIX.
|
||||
|
||||
<<strerror>> requires no supporting OS subroutines.
|
||||
|
||||
QUICKREF
|
||||
strerror ansi pure
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
|
||||
char *
|
||||
_DEFUN (_strerror_r, (ptr, errnum, internal, errptr),
|
||||
struct _reent *ptr _AND
|
||||
int errnum _AND
|
||||
int internal _AND
|
||||
int *errptr)
|
||||
{
|
||||
char *error;
|
||||
extern char *_user_strerror _PARAMS ((int, int, int *));
|
||||
|
||||
switch (errnum)
|
||||
{
|
||||
case 0:
|
||||
error = "Success";
|
||||
break;
|
||||
/* go32 defines EPERM as EACCES */
|
||||
#if defined (EPERM) && (!defined (EACCES) || (EPERM != EACCES))
|
||||
case EPERM:
|
||||
error = "Not owner";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOENT
|
||||
case ENOENT:
|
||||
error = "No such file or directory";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ESRCH
|
||||
case ESRCH:
|
||||
error = "No such process";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EINTR
|
||||
case EINTR:
|
||||
error = "Interrupted system call";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EIO
|
||||
case EIO:
|
||||
error = "I/O error";
|
||||
break;
|
||||
#endif
|
||||
/* go32 defines ENXIO as ENODEV */
|
||||
#if defined (ENXIO) && (!defined (ENODEV) || (ENXIO != ENODEV))
|
||||
case ENXIO:
|
||||
error = "No such device or address";
|
||||
break;
|
||||
#endif
|
||||
#ifdef E2BIG
|
||||
case E2BIG:
|
||||
error = "Arg list too long";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOEXEC
|
||||
case ENOEXEC:
|
||||
error = "Exec format error";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EALREADY
|
||||
case EALREADY:
|
||||
error = "Socket already connected";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EBADF
|
||||
case EBADF:
|
||||
error = "Bad file number";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ECHILD
|
||||
case ECHILD:
|
||||
error = "No children";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EDESTADDRREQ
|
||||
case EDESTADDRREQ:
|
||||
error = "Destination address required";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EAGAIN
|
||||
case EAGAIN:
|
||||
error = "No more processes";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOMEM
|
||||
case ENOMEM:
|
||||
error = "Not enough space";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EACCES
|
||||
case EACCES:
|
||||
error = "Permission denied";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EFAULT
|
||||
case EFAULT:
|
||||
error = "Bad address";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOTBLK
|
||||
case ENOTBLK:
|
||||
error = "Block device required";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EBUSY
|
||||
case EBUSY:
|
||||
error = "Device or resource busy";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EEXIST
|
||||
case EEXIST:
|
||||
error = "File exists";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EXDEV
|
||||
case EXDEV:
|
||||
error = "Cross-device link";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENODEV
|
||||
case ENODEV:
|
||||
error = "No such device";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOTDIR
|
||||
case ENOTDIR:
|
||||
error = "Not a directory";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EHOSTDOWN
|
||||
case EHOSTDOWN:
|
||||
error = "Host is down";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EINPROGRESS
|
||||
case EINPROGRESS:
|
||||
error = "Connection already in progress";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EISDIR
|
||||
case EISDIR:
|
||||
error = "Is a directory";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EINVAL
|
||||
case EINVAL:
|
||||
error = "Invalid argument";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENETDOWN
|
||||
case ENETDOWN:
|
||||
error = "Network interface is not configured";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENFILE
|
||||
case ENFILE:
|
||||
error = "Too many open files in system";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EMFILE
|
||||
case EMFILE:
|
||||
error = "Too many open files";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOTTY
|
||||
case ENOTTY:
|
||||
error = "Not a character device";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ETXTBSY
|
||||
case ETXTBSY:
|
||||
error = "Text file busy";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EFBIG
|
||||
case EFBIG:
|
||||
error = "File too large";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EHOSTUNREACH
|
||||
case EHOSTUNREACH:
|
||||
error = "Host is unreachable";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOSPC
|
||||
case ENOSPC:
|
||||
error = "No space left on device";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOTSUP
|
||||
case ENOTSUP:
|
||||
error = "Not supported";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ESPIPE
|
||||
case ESPIPE:
|
||||
error = "Illegal seek";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EROFS
|
||||
case EROFS:
|
||||
error = "Read-only file system";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EMLINK
|
||||
case EMLINK:
|
||||
error = "Too many links";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EPIPE
|
||||
case EPIPE:
|
||||
error = "Broken pipe";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EDOM
|
||||
case EDOM:
|
||||
error = "Math argument";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ERANGE
|
||||
case ERANGE:
|
||||
error = "Result too large";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOMSG
|
||||
case ENOMSG:
|
||||
error = "No message of desired type";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EIDRM
|
||||
case EIDRM:
|
||||
error = "Identifier removed";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EDEADLK
|
||||
case EDEADLK:
|
||||
error = "Deadlock";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENETUNREACH
|
||||
case ENETUNREACH:
|
||||
error = "Network is unreachable";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOLCK
|
||||
case ENOLCK:
|
||||
error = "No lock";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOSTR
|
||||
case ENOSTR:
|
||||
error = "Not a stream";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ETIME
|
||||
case ETIME:
|
||||
error = "Stream ioctl timeout";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOSR
|
||||
case ENOSR:
|
||||
error = "No stream resources";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENONET
|
||||
case ENONET:
|
||||
error = "Machine is not on the network";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOPKG
|
||||
case ENOPKG:
|
||||
error = "No package";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EREMOTE
|
||||
case EREMOTE:
|
||||
error = "Resource is remote";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOLINK
|
||||
case ENOLINK:
|
||||
error = "Virtual circuit is gone";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EADV
|
||||
case EADV:
|
||||
error = "Advertise error";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ESRMNT
|
||||
case ESRMNT:
|
||||
error = "Srmount error";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ECOMM
|
||||
case ECOMM:
|
||||
error = "Communication error";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EPROTO
|
||||
case EPROTO:
|
||||
error = "Protocol error";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EPROTONOSUPPORT
|
||||
case EPROTONOSUPPORT:
|
||||
error = "Unknown protocol";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EMULTIHOP
|
||||
case EMULTIHOP:
|
||||
error = "Multihop attempted";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EBADMSG
|
||||
case EBADMSG:
|
||||
error = "Bad message";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ELIBACC
|
||||
case ELIBACC:
|
||||
error = "Cannot access a needed shared library";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ELIBBAD
|
||||
case ELIBBAD:
|
||||
error = "Accessing a corrupted shared library";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ELIBSCN
|
||||
case ELIBSCN:
|
||||
error = ".lib section in a.out corrupted";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ELIBMAX
|
||||
case ELIBMAX:
|
||||
error = "Attempting to link in more shared libraries than system limit";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ELIBEXEC
|
||||
case ELIBEXEC:
|
||||
error = "Cannot exec a shared library directly";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOSYS
|
||||
case ENOSYS:
|
||||
error = "Function not implemented";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENMFILE
|
||||
case ENMFILE:
|
||||
error = "No more files";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOTEMPTY
|
||||
case ENOTEMPTY:
|
||||
error = "Directory not empty";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENAMETOOLONG
|
||||
case ENAMETOOLONG:
|
||||
error = "File or path name too long";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ELOOP
|
||||
case ELOOP:
|
||||
error = "Too many symbolic links";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOBUFS
|
||||
case ENOBUFS:
|
||||
error = "No buffer space available";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EAFNOSUPPORT
|
||||
case EAFNOSUPPORT:
|
||||
error = "Address family not supported by protocol family";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EPROTOTYPE
|
||||
case EPROTOTYPE:
|
||||
error = "Protocol wrong type for socket";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOTSOCK
|
||||
case ENOTSOCK:
|
||||
error = "Socket operation on non-socket";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOPROTOOPT
|
||||
case ENOPROTOOPT:
|
||||
error = "Protocol not available";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ESHUTDOWN
|
||||
case ESHUTDOWN:
|
||||
error = "Can't send after socket shutdown";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ECONNREFUSED
|
||||
case ECONNREFUSED:
|
||||
error = "Connection refused";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EADDRINUSE
|
||||
case EADDRINUSE:
|
||||
error = "Address already in use";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ECONNABORTED
|
||||
case ECONNABORTED:
|
||||
error = "Software caused connection abort";
|
||||
break;
|
||||
#endif
|
||||
#if (defined(EWOULDBLOCK) && (!defined (EAGAIN) || (EWOULDBLOCK != EAGAIN)))
|
||||
case EWOULDBLOCK:
|
||||
error = "Operation would block";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOTCONN
|
||||
case ENOTCONN:
|
||||
error = "Socket is not connected";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ESOCKTNOSUPPORT
|
||||
case ESOCKTNOSUPPORT:
|
||||
error = "Socket type not supported";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EISCONN
|
||||
case EISCONN:
|
||||
error = "Socket is already connected";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ECANCELED
|
||||
case ECANCELED:
|
||||
error = "Operation canceled";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ENOTRECOVERABLE
|
||||
case ENOTRECOVERABLE:
|
||||
error = "State not recoverable";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EOWNERDEAD
|
||||
case EOWNERDEAD:
|
||||
error = "Previous owner died";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ESTRPIPE
|
||||
case ESTRPIPE:
|
||||
error = "Streams pipe error";
|
||||
break;
|
||||
#endif
|
||||
#if defined(EOPNOTSUPP) && (!defined(ENOTSUP) || (ENOTSUP != EOPNOTSUPP))
|
||||
case EOPNOTSUPP:
|
||||
error = "Operation not supported on socket";
|
||||
break;
|
||||
#endif
|
||||
#ifdef EMSGSIZE
|
||||
case EMSGSIZE:
|
||||
error = "Message too long";
|
||||
break;
|
||||
#endif
|
||||
#ifdef ETIMEDOUT
|
||||
case ETIMEDOUT:
|
||||
error = "Connection timed out";
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
if (!errptr)
|
||||
errptr = &ptr->_errno;
|
||||
if ((error = _user_strerror (errnum, internal, errptr)) == 0)
|
||||
error = "";
|
||||
break;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
char *
|
||||
_DEFUN(strerror, (int),
|
||||
int errnum)
|
||||
{
|
||||
return _strerror_r (_REENT, errnum, 0, NULL);
|
||||
}
|
Reference in New Issue
Block a user