updated tlibc

This commit is contained in:
Timerix 2025-08-04 19:28:38 +03:00
parent eb1daa721a
commit f1a8a186e0
5 changed files with 22 additions and 20 deletions

2
dependencies/tlibc vendored

@ -1 +1 @@
Subproject commit 0e80a568922ae579213d5a99329fa32420f0bcb0 Subproject commit 223406d4e45503318b197bd069d8f75335fee64f

View File

@ -1,4 +1,4 @@
#include "std_includes.h" #include "internal.h"
#include "endpoint.h" #include "endpoint.h"
struct sockaddr_in EndpointIPv4_toSockaddr(EndpointIPv4 end){ struct sockaddr_in EndpointIPv4_toSockaddr(EndpointIPv4 end){

View File

@ -1,9 +1,11 @@
#pragma once #pragma once
#if defined(_WIN64) || defined(_WIN32) #if !defined(KN_USE_WINSOCK)
#define KN_USE_WINSOCK 1 #if defined(_WIN64) || defined(_WIN32)
#else #define KN_USE_WINSOCK 1
#define KN_USE_WINSOCK 0 #else
#define KN_USE_WINSOCK 0
#endif
#endif #endif
#if KN_USE_WINSOCK #if KN_USE_WINSOCK

View File

@ -1,5 +1,5 @@
#include "network.h" #include "network.h"
#include "std_includes.h" #include "internal.h"
Result(void) network_init(){ Result(void) network_init(){
#if _WIN32 #if _WIN32
@ -7,7 +7,7 @@ Result(void) network_init(){
WSADATA wsaData = {0}; WSADATA wsaData = {0};
int result = WSAStartup(MAKEWORD(2,2), &wsaData); int result = WSAStartup(MAKEWORD(2,2), &wsaData);
if (result != 0) { if (result != 0) {
return RESULT_ERROR(sprintf_malloc(64, "WSAStartup failed with error code 0x%X", result), true); return RESULT_ERROR_FMT("WSAStartup failed with error code 0x%X", result);
} }
#endif #endif
return RESULT_VOID; return RESULT_VOID;
@ -18,7 +18,7 @@ Result(void) network_deinit(){
// Deinitialize Winsock // Deinitialize Winsock
int result = WSACleanup(); int result = WSACleanup();
if (result != 0) { if (result != 0) {
return RESULT_ERROR(sprintf_malloc(64, "WSACleanup failed with error code 0x%X", result), true); return RESULT_ERROR_FMT("WSACleanup failed with error code 0x%X", result);
} }
#endif #endif
return RESULT_VOID; return RESULT_VOID;

View File

@ -1,4 +1,4 @@
#include "std_includes.h" #include "internal.h"
#include "socket.h" #include "socket.h"
#include "errno.h" #include "errno.h"
#include "assert.h" #include "assert.h"
@ -6,7 +6,7 @@
Result(Socket) socket_open_TCP(){ Result(Socket) socket_open_TCP(){
Socket s = socket(AF_INET, SOCK_STREAM, 0); Socket s = socket(AF_INET, SOCK_STREAM, 0);
if(s == -1){ if(s == -1){
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
} }
return RESULT_VALUE(i, s); return RESULT_VALUE(i, s);
@ -22,20 +22,20 @@ void socket_close(Socket s){
Result(void) socket_shutdown(Socket s, SocketShutdownType direction){ Result(void) socket_shutdown(Socket s, SocketShutdownType direction){
if(shutdown(s, (int)direction) == -1) if(shutdown(s, (int)direction) == -1)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
return RESULT_VOID; return RESULT_VOID;
} }
Result(void) socket_bind(Socket s, EndpointIPv4 local_end){ Result(void) socket_bind(Socket s, EndpointIPv4 local_end){
struct sockaddr_in sockaddr = EndpointIPv4_toSockaddr(local_end); struct sockaddr_in sockaddr = EndpointIPv4_toSockaddr(local_end);
if(bind(s, (void*)&sockaddr, sizeof(sockaddr)) != 0) if(bind(s, (void*)&sockaddr, sizeof(sockaddr)) != 0)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
return RESULT_VOID; return RESULT_VOID;
} }
Result(void) socket_listen(Socket s, i32 backlog){ Result(void) socket_listen(Socket s, i32 backlog){
if(listen(s, backlog) != 0) if(listen(s, backlog) != 0)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
return RESULT_VOID; return RESULT_VOID;
} }
@ -44,7 +44,7 @@ Result(Socket) socket_accept(Socket main_socket, NULLABLE(EndpointIPv4*) remote_
i32 sockaddr_size = sizeof(remote_addr); i32 sockaddr_size = sizeof(remote_addr);
Socket user_connection = accept(main_socket, (void*)&remote_addr, (void*)&sockaddr_size); Socket user_connection = accept(main_socket, (void*)&remote_addr, (void*)&sockaddr_size);
if(user_connection == -1) if(user_connection == -1)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
//TODO: add IPV6 support (struct sockaddr_in6) //TODO: add IPV6 support (struct sockaddr_in6)
assert(sockaddr_size == sizeof(remote_addr)); assert(sockaddr_size == sizeof(remote_addr));
@ -56,14 +56,14 @@ Result(Socket) socket_accept(Socket main_socket, NULLABLE(EndpointIPv4*) remote_
Result(void) socket_connect(Socket s, EndpointIPv4 remote_end){ Result(void) socket_connect(Socket s, EndpointIPv4 remote_end){
struct sockaddr_in sockaddr = EndpointIPv4_toSockaddr(remote_end); struct sockaddr_in sockaddr = EndpointIPv4_toSockaddr(remote_end);
if(connect(s, (void*)&sockaddr, sizeof(sockaddr)) != 0) if(connect(s, (void*)&sockaddr, sizeof(sockaddr)) != 0)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
return RESULT_VOID; return RESULT_VOID;
} }
Result(void) socket_send(Socket s, Array(u8) buffer){ Result(void) socket_send(Socket s, Array(u8) buffer){
i32 r = send(s, buffer.data, buffer.size, 0); i32 r = send(s, buffer.data, buffer.size, 0);
if(r < 0) if(r < 0)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
return RESULT_VOID; return RESULT_VOID;
} }
@ -71,14 +71,14 @@ Result(void) socket_sendto(Socket s, Array(u8) buffer, EndpointIPv4 dst){
struct sockaddr_in sockaddr = EndpointIPv4_toSockaddr(dst); struct sockaddr_in sockaddr = EndpointIPv4_toSockaddr(dst);
i32 r = sendto(s, buffer.data, buffer.size, 0, (void*)&sockaddr, sizeof(sockaddr)); i32 r = sendto(s, buffer.data, buffer.size, 0, (void*)&sockaddr, sizeof(sockaddr));
if(r < 0) if(r < 0)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
return RESULT_VOID; return RESULT_VOID;
} }
Result(i32) socket_recv(Socket s, Array(u8) buffer){ Result(i32) socket_recv(Socket s, Array(u8) buffer){
i32 r = recv(s, buffer.data, buffer.size, 0); i32 r = recv(s, buffer.data, buffer.size, 0);
if(r < 0) if(r < 0)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
return RESULT_VALUE(i, r); return RESULT_VALUE(i, r);
} }
@ -89,7 +89,7 @@ Result(i32) socket_recvfrom(Socket s, Array(u8) buffer, NULLABLE(EndpointIPv4*)
i32 r = recvfrom(s, buffer.data, buffer.size, 0, i32 r = recvfrom(s, buffer.data, buffer.size, 0,
(struct sockaddr*)&remote_addr, (void*)&sockaddr_size); (struct sockaddr*)&remote_addr, (void*)&sockaddr_size);
if(r < 0) if(r < 0)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR_ERRNO();
//TODO: add IPV6 support (struct sockaddr_in6) //TODO: add IPV6 support (struct sockaddr_in6)
assert(sockaddr_size == sizeof(remote_addr)); assert(sockaddr_size == sizeof(remote_addr));