minix/lib/libc/ip/gai_strerror.c

65 lines
1.5 KiB
C
Executable file

#include <errno.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
/*
* gai_strerror is based on
* http://www.opengroup.org/onlinepubs/009695399/functions/gai_strerror.html
*/
const char *gai_strerror(int ecode)
{
static char buffer[256];
/* check for each known error code */
switch (ecode)
{
case EAI_AGAIN:
return "The name could not be resolved at this time";
case EAI_BADFLAGS:
return "The flags had an invalid value";
case EAI_FAIL:
return "A non-recoverable error occurred";
case EAI_FAMILY:
return "The address family was not recognized or the "
"address length was invalid for the specified "
"family";
case EAI_MEMORY:
return "There was a memory allocation failure";
case EAI_NONAME:
return "The name does not resolve for the supplied "
"parameters, NI_NAMEREQD is set and the host's "
"name cannot be located, or both nodename and "
"servname were null";
case EAI_SERVICE:
return "The service passed was not recognized for the "
"specified socket type";
case EAI_SOCKTYPE:
return "The intended socket type was not recognized";
case EAI_SYSTEM:
snprintf(buffer,
sizeof(buffer),
"A system error occurred: %s",
strerror(errno));
return buffer;
case EAI_OVERFLOW:
return "An argument buffer overflowed";
}
/* unknown error code */
snprintf(buffer,
sizeof(buffer),
"An unknown error code was passed to gai_strerror: %d",
ecode);
return buffer;
}