/* Copyright (C) 1997,2001,02 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Philip Blundell <pjb27@cam.ac.uk>, 1997.
The GNU C Library 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.
The GNU C Library 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 the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <netdb.h>
/* It's possible that <netdb.h> doesn't define EAI_ values. */
#ifndef EAI_BADFLAGS
# define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */
#endif
#ifndef EAI_NONAME
# define EAI_NONAME -2 /* NAME or SERVICE is unknown. */
#endif
#ifndef EAI_AGAIN
# define EAI_AGAIN -3 /* Temporary failure in name resolution. */
#endif
#ifndef EAI_FAIL
# define EAI_FAIL -4 /* Non-recoverable failure in name res. */
#endif
#ifndef EAI_NODATA
# define EAI_NODATA -5 /* No address associated with NAME. */
#endif
#ifndef EAI_FAMILY
# define EAI_FAMILY -6 /* `ai_family' not supported. */
#endif
#ifndef EAI_SOCKTYPE
# define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */
#endif
#ifndef EAI_SERVICE
# define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */
#endif
#ifndef EAI_ADDRFAMILY
# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */
#endif
#ifndef EAI_MEMORY
# define EAI_MEMORY -10 /* Memory allocation failure. */
#endif
#ifndef EAI_SYSTEM
# define EAI_SYSTEM -11 /* System error returned in `errno'. */
#endif
/* GNU-specific EAI values. */
#ifndef EAI_INPROGRESS
# define EAI_INPROGRESS -100 /* Processing request in progress. */
#endif
#ifndef EAI_CANCELED
# define EAI_CANCELED -101 /* Request canceled. */
#endif
#ifndef EAI_NOTCANCELED
# define EAI_NOTCANCELED -102 /* Request not canceled. */
#endif
#ifndef EAI_ALLDONE
# define EAI_ALLDONE -103 /* All requests done. */
#endif
#ifndef EAI_INTR
# define EAI_INTR -104 /* Interrupted by a signal. */
#endif
static struct {
int code;
const char *msg;
} values[] = {
{ EAI_ADDRFAMILY, "Address family for hostname not supported" },
{ EAI_AGAIN, "Temporary failure in name resolution" },
{ EAI_BADFLAGS, "Bad value for ai_flags" },
{ EAI_FAIL, "Non-recoverable failure in name resolution" },
{ EAI_FAMILY, "ai_family not supported" },
{ EAI_MEMORY, "Memory allocation failure" },
{ EAI_NODATA, "No address associated with hostname" },
{ EAI_NONAME, "Name or service not known" },
{ EAI_SERVICE, "Servname not supported for ai_socktype" },
{ EAI_SOCKTYPE, "ai_socktype not supported" },
{ EAI_SYSTEM, "System error" },
{ EAI_INPROGRESS, "Processing request in progress" },
{ EAI_CANCELED, "Request canceled" },
{ EAI_NOTCANCELED, "Request not canceled" },
{ EAI_ALLDONE, "All requests done" },
{ EAI_INTR, "Interrupted by a signal" }
};
const char *pr_gai_strerror(int code) {
register unsigned int i;
for (i = 0; i < sizeof(values) / sizeof(values[0]); ++i)
if (values[i].code == code)
return values[i].msg;
return "Unknown error";
}
Last Updated: Thu Feb 23 11:06:48 2006
HTML generated by tj's src2html script