/* Copyright (C) 1997,2001,02 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Philip Blundell , 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 /* It's possible that 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"; }