mirror of
https://github.com/cahirwpz/libnix.git
synced 2026-09-13 20:24:40 +00:00
37 lines
1.0 KiB
C
37 lines
1.0 KiB
C
#include <netdb.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
//
|
|
#include "socket.h"
|
|
|
|
char *hstrerror(int err)
|
|
{ static char *const h_errlist[] = {
|
|
"Resolver Error 0 (no error)",
|
|
"Unknown host", /* 1 HOST_NOT_FOUND */
|
|
"Host name lookup failure", /* 2 TRY_AGAIN */
|
|
"Unknown server error", /* 3 NO_RECOVERY */
|
|
"No address associated with name", /* 4 NO_ADDRESS */
|
|
};
|
|
struct SocketSettings *lss = _lx_get_socket_settings();
|
|
|
|
if (lss->lx_network_type == LX_AMITCP) {
|
|
struct TagItem list[] = {
|
|
{SBTM_GETREF(SBTC_HERRNOSTRPTR),0}, {TAG_END,TAG_END}
|
|
};
|
|
list[0].ti_Data=(ULONG)&err; return (char *)TCP_SocketBaseTagList(list);
|
|
}
|
|
else if (err < 0)
|
|
return "Resolver internal error";
|
|
else if (err < (int)(sizeof(h_errlist)/sizeof(h_errlist[0])))
|
|
return h_errlist[err];
|
|
return "Unknown resolver error";
|
|
}
|
|
|
|
void herror(const char *s)
|
|
{
|
|
if (s && *s)
|
|
write(STDERR_FILENO,s,strlen(s)),write(STDERR_FILENO,": ",2);
|
|
s = hstrerror(h_errno);
|
|
write(STDERR_FILENO,s,strlen(s)),write(STDERR_FILENO,"\n",1);
|
|
}
|