improving sockets, fixed some bugs

This commit is contained in:
Daniel Ledda
2025-11-28 15:29:24 +01:00
parent 9b772e2046
commit 45d3f28546
5 changed files with 225 additions and 81 deletions

37
core.c
View File

@@ -71,9 +71,6 @@ Scratch scratchStart(Arena **conflicts, size_t conflictCount) {
return scratch;
}
#define DeferLoop(begin_stmnt, end_stmnt) for(int __defer_i = ((begin_stmnt), 0); __defer_i < 1; (++__defer_i, (end_stmnt)))
#define WithScratch(scratchName) Scratch scratchName; DeferLoop(scratchName = scratchStart(0, 0), scratchEnd(scratchName))
void scratchEnd(Scratch scratch) {
arenaFreeFrom(scratch.arena, scratch.start);
}
@@ -206,8 +203,8 @@ StringList strSplit(Arena *arena, string splitStr, string inputStr) {
size_t splitCount = 0;
size_t c = 0;
size_t start = 0;
void *beginning = (char *)arena->memory + arena->head;
while (c < inputStr.length - splitStr.length) {
void *beginning = arena->memory + arena->head;
while (c < inputStr.length) {
string mystr = strSlice(inputStr, c, c + splitStr.length);
if (strEql(mystr, splitStr)) {
string *splitString = PushStruct(arena, string);
@@ -337,13 +334,20 @@ string formatTimeYmd(Arena *arena, Timestamp *time) {
return buf;
}
void printStderr(const char *fmt, ...) {
function void printStderr(const char *fmt, ...) {
va_list argList;
va_start(argList, fmt);
os_print(StdStream_stdout, fmt, argList);
va_end(argList);
}
function void printlnStderr(const char *fmt, ...) {
va_list argList;
va_start(argList, fmt);
os_println(StdStream_stdout, fmt, argList);
va_end(argList);
}
function void printStdout(const char *fmt, ...) {
va_list argList;
va_start(argList, fmt);
@@ -351,8 +355,27 @@ function void printStdout(const char *fmt, ...) {
va_end(argList);
}
function void printlnStdout(const char *fmt, ...) {
va_list argList;
va_start(argList, fmt);
os_println(StdStream_stdout, fmt, argList);
va_end(argList);
}
void (*print)(const char *fmt, ...) = &printStdout;
#define SetStdErr() DeferLoop(print = &printStderr, print = &printStdout)
void (*println)(const char *fmt, ...) = &printlnStdout;
void setStdout() {
print = &printStdout;
println = &printlnStdout;
}
void setStderr() {
print = &printStderr;
println = &printlnStderr;
}
#define UseStderr() DeferLoop(setStderr(), setStdout())
// TODO(dledda): mat print functions
/*