mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-03 16:15:27 +00:00
lwres_gai_strerror()'s return value is massaged to remove the const qualifier,
as specified by RFC 2133. It's still ultimately const, just not with the qualifier.
This commit is contained in:
@@ -12,32 +12,48 @@ you didn't get a copy, you may request one from <license@inner.net>.
|
|||||||
|
|
||||||
char *
|
char *
|
||||||
lwres_gai_strerror(int errnum) {
|
lwres_gai_strerror(int errnum) {
|
||||||
|
union {
|
||||||
|
const char *konst;
|
||||||
|
char *var;
|
||||||
|
} u;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The union game is played here because RFC 2133 specifies
|
||||||
|
* gai_strerror as returning just "char *", not qualified by
|
||||||
|
* const, but the most reasonably way to implement this function
|
||||||
|
* is with const strings.
|
||||||
|
*
|
||||||
|
* The caller had better not attempt to modify the return string.
|
||||||
|
*/
|
||||||
|
|
||||||
switch(errnum) {
|
switch(errnum) {
|
||||||
case 0:
|
case 0:
|
||||||
return ("no error");
|
u.konst = "no error";
|
||||||
case EAI_BADFLAGS:
|
case EAI_BADFLAGS:
|
||||||
return ("invalid value for ai_flags");
|
u.konst = "invalid value for ai_flags";
|
||||||
case EAI_NONAME:
|
case EAI_NONAME:
|
||||||
return ("name or service is not known");
|
u.konst = "name or service is not known";
|
||||||
case EAI_AGAIN:
|
case EAI_AGAIN:
|
||||||
return ("temporary failure in name resolution");
|
u.konst = "temporary failure in name resolution";
|
||||||
case EAI_FAIL:
|
case EAI_FAIL:
|
||||||
return ("non-recoverable failure in name resolution");
|
u.konst = "non-recoverable failure in name resolution";
|
||||||
case EAI_NODATA:
|
case EAI_NODATA:
|
||||||
return ("no address associated with name");
|
u.konst = "no address associated with name";
|
||||||
case EAI_FAMILY:
|
case EAI_FAMILY:
|
||||||
return ("ai_family not supported");
|
u.konst = "ai_family not supported";
|
||||||
case EAI_SOCKTYPE:
|
case EAI_SOCKTYPE:
|
||||||
return ("ai_socktype not supported");
|
u.konst = "ai_socktype not supported";
|
||||||
case EAI_SERVICE:
|
case EAI_SERVICE:
|
||||||
return ("service not supported for ai_socktype");
|
u.konst = "service not supported for ai_socktype";
|
||||||
case EAI_ADDRFAMILY:
|
case EAI_ADDRFAMILY:
|
||||||
return ("address family for name not supported");
|
u.konst = "address family for name not supported";
|
||||||
case EAI_MEMORY:
|
case EAI_MEMORY:
|
||||||
return ("memory allocation failure");
|
u.konst = "memory allocation failure";
|
||||||
case EAI_SYSTEM:
|
case EAI_SYSTEM:
|
||||||
return ("system error");
|
u.konst = "system error";
|
||||||
default:
|
default:
|
||||||
return ("unknown error");
|
u.konst = "unknown error";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return (u.var);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user