LibC: Add herror() and hstrerror()

This commit is contained in:
Michał Lach 2022-05-10 13:01:40 +02:00 committed by Andreas Kling
parent bc18fa75ec
commit 6a7d3006d7
2 changed files with 26 additions and 0 deletions

View file

@ -829,4 +829,26 @@ int getnameinfo(const struct sockaddr* __restrict addr, socklen_t addrlen, char*
return 0;
}
void herror(char const* s)
{
dbgln("herror(): {}: {}", s, hstrerror(h_errno));
warnln("{}: {}", s, hstrerror(h_errno));
}
char const* hstrerror(int err)
{
switch (err) {
case HOST_NOT_FOUND:
return "The specified host is unknown.";
case NO_DATA:
return "The requested name is valid but does not have an IP address.";
case NO_RECOVERY:
return "A nonrecoverable name server error occurred.";
case TRY_AGAIN:
return "A temporary error occurred on an authoritative name server. Try again later.";
default:
return "Unknown error.";
}
}
}

View file

@ -56,6 +56,7 @@ extern __thread int h_errno;
#define HOST_NOT_FOUND 101
#define NO_DATA 102
#define NO_ADDRESS NO_DATA
#define NO_RECOVERY 103
#define TRY_AGAIN 104
@ -105,4 +106,7 @@ void freeaddrinfo(struct addrinfo* res);
char const* gai_strerror(int errcode);
int getnameinfo(const struct sockaddr* __restrict addr, socklen_t addrlen, char* __restrict host, socklen_t hostlen, char* __restrict serv, socklen_t servlen, int flags);
void herror(char const* s);
char const* hstrerror(int err);
__END_DECLS