spl

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit c1a5309b05c504d7c3913826e097c5f1ddd0d73a
parent cf7cf45038e0ed96b310481014e19260d7d44605
Author: Brian Swetland <swetland@frotz.net>
Date:   Sat, 14 Oct 2023 00:31:34 -0700

library: argc/argv handling

Diffstat:
Ademo/args.spl | 11+++++++++++
Minc/library.impl.c | 16++++++++++++++++
Minc/library.impl.h | 3+++
3 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/demo/args.spl b/demo/args.spl @@ -0,0 +1,11 @@ + +fn start() i32 { + var n i32 = 0; + while (n < os_arg_count()) { + writes(1, os_arg(n)); + writes(1, " "); + n++; + } + writes(1, "\n"); + return 0; +} diff --git a/inc/library.impl.c b/inc/library.impl.c @@ -30,9 +30,25 @@ int fn_readc(int fd) { } } +static int os_argc; +static char **os_argv; + int main(int argc, char** argv) { + os_argc = argc; + os_argv = argv; int x = fn_start(); printf("X %08x\n", x); return 0; } +t$u8* fn_os_arg(int n) { + if ((n < 0) || (n >= os_argc)) { + return (void*) ""; + } + return (void*) os_argv[n]; +} + +t$i32 fn_os_arg_count(void) { + return os_argc; +} + diff --git a/inc/library.impl.h b/inc/library.impl.h @@ -6,3 +6,6 @@ void fn_writes(t$i32 fd, t$str s); void fn_writex(t$i32 fd, t$i32 n); void fn_writec(t$i32 fd, t$i32 c); t$i32 fn_readc(t$i32 fd); + +t$u8* fn_os_arg(t$i32 n); +t$i32 fn_os_arg_count(void);