commit c1a5309b05c504d7c3913826e097c5f1ddd0d73a
parent cf7cf45038e0ed96b310481014e19260d7d44605
Author: Brian Swetland <swetland@frotz.net>
Date: Sat, 14 Oct 2023 00:31:34 -0700
library: argc/argv handling
Diffstat:
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);