LibC: Implement gai_strerror and add stubs for {get,free}addrinfo

This commit is contained in:
Bananymous 2024-08-09 16:59:49 +03:00
parent 7ebd0699e3
commit 83e2ad40d6
1 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,4 @@
#include <BAN/Assert.h>
#include <BAN/Bitcast.h>
#include <arpa/inet.h>
@ -11,6 +12,35 @@
int h_errno = 0;
void freeaddrinfo(struct addrinfo*)
{
ASSERT_NOT_REACHED();
}
const char* gai_strerror(int ecode)
{
switch (ecode)
{
case 0: return "Success";
case EAI_AGAIN: return "The name could not be resolved at this time.";
case EAI_BADFLAGS: return "The flags had an invalid value.";
case EAI_FAIL: return "A non-recoverable error occurred.";
case EAI_FAMILY: return "The address family was not recognized or the address length was invalid for the specified family.";
case EAI_MEMORY: return "There was a memory allocation failure.";
case EAI_NONAME: return "The name does not resolve for the supplied parameters. ";
case EAI_SERVICE: return "The service passed was not recognized for the specified socket type.";
case EAI_SOCKTYPE: return "The intended socket type was not recognized.";
case EAI_SYSTEM: return "A system error occurred. The error code can be found in errno.";
case EAI_OVERFLOW: return "An argument buffer overflowed.";
default: return "Unknown error.";
}
}
int getaddrinfo(const char* __restrict, const char* __restrict, const struct addrinfo* __restrict, struct addrinfo** __restrict)
{
ASSERT_NOT_REACHED();
}
struct hostent* gethostbyname(const char* name)
{
static char name_buffer[HOST_NAME_MAX + 1];