From 7165bb7ae9e34e69d0c8802d6e356851cffe0f07 Mon Sep 17 00:00:00 2001 From: nasr Date: Tue, 3 Mar 2026 20:05:11 +0000 Subject: feature(main): loading and printing csv file --- .gitignore | 1 + source/base/base_os.h | 41 +++++++++++++---------------------------- source/base/base_string.h | 4 ++++ source/engine/engine.c | 33 ++++++++++++++++++++------------- source/storage/csv_reader.c | 9 +++++++++ source/storage/csv_reader.h | 6 ++++++ 6 files changed, 53 insertions(+), 41 deletions(-) diff --git a/.gitignore b/.gitignore index 48a750d..8bebb0b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ idea/* .idea /build /notes.txt +/test diff --git a/source/base/base_os.h b/source/base/base_os.h index ec0a3de..23587c6 100644 --- a/source/base/base_os.h +++ b/source/base/base_os.h @@ -14,39 +14,24 @@ load_file(const char *path) { string8 result = {0}; struct stat sbuf = {0}; - int err = 0; + i32 file = open(path, O_RDONLY); + if(file == -1) return result; - if(file) + if(fstat(file, &sbuf) == -1) { + print("error: fstat failed"); + close(file); + return result; + } - if(file != -1) - { - err = fstat(file, &sbuf); - check(err != -1); - - result.size = (u64)sbuf.st_size; - - if(result.size != 0) - { - result.data = (u8 *)mmap(0, - result.size, - PROT_READ, - MAP_PRIVATE, - file, - 0); - - check(result.data != MAP_FAILED); - } - - close(file); - } - else - { - // TODO(nasr): logging - } - + result.size = (u64)sbuf.st_size; + if(result.size != 0) + { + result.data = (u8 *)mmap(0, result.size, PROT_READ, MAP_PRIVATE, file, 0); } + + close(file); return result; } diff --git a/source/base/base_string.h b/source/base/base_string.h index 941dc53..64a3162 100644 --- a/source/base/base_string.h +++ b/source/base/base_string.h @@ -9,6 +9,10 @@ #define PushString(arena, size) \ (string8){ (u8 *)PushArray((arena), u8, (size)), (u64)(size) } +#define StringFmt "%.*s" +#define ULongFmt "%lu" +#define ULLongFmt "%llu" + typedef struct string8 string8; struct string8 { diff --git a/source/engine/engine.c b/source/engine/engine.c index 609101e..ada4ecb 100644 --- a/source/engine/engine.c +++ b/source/engine/engine.c @@ -10,25 +10,32 @@ #include "../repl/repl.h" #include "../repl/repl.c" -int main(int c, char **v) -{ - mem_arena *global_arena = arena_create(MiB(1)); +#include "../storage/csv_reader.h" +#include "../storage/csv_reader.c" + +#if 1 +#include +#endif - unused(c); - unused(v); - string8 buffer = PushString(global_arena, 5); - unused(buffer); +int main(int c, char **v) +{ + if(c < 2) return -999; + string8 buffer = load_file(v[1]); + read_csv(buffer); - for (;;) - { - print("reading user input..."); - // TODO(nasr): design a repl system - sleep(1); - } + // for(;;) + // { + // print("reading user input..."); + // // TODO(nasr): design a repl system + // + // sleep(1); + // } + // + return 0; } diff --git a/source/storage/csv_reader.c b/source/storage/csv_reader.c index e69de29..6023a3a 100644 --- a/source/storage/csv_reader.c +++ b/source/storage/csv_reader.c @@ -0,0 +1,9 @@ +#if 1 +#include +#endif + +internal void +read_csv(string8 buffer) +{ + printf("\nsize:%lu\ndata %s\n", buffer.size, buffer.data); +} diff --git a/source/storage/csv_reader.h b/source/storage/csv_reader.h index e69de29..29ac8ab 100644 --- a/source/storage/csv_reader.h +++ b/source/storage/csv_reader.h @@ -0,0 +1,6 @@ +#ifndef CSV_READER_H +#define CSV_READER_H + + + +#endif /* CSV_READER_H */ -- cgit v1.3