improving sockets, fixed some bugs
This commit is contained in:
37
core.c
37
core.c
@@ -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
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user