_offc_argv_open.nx source
↩ module page · 31 lines · 726 B
1// _offc_argv_open.nx -- diagnostic for Wheeler DDC argv path bug.
2// Echoes argv[1], opens it, prints result.
3
4import "syscalls.nx"
5
6func main(argc: i64, argv: *i64) -> i64 {
7 if argc < 2 {
8 sys_write(1, "no_argv\n" as *u8, 8)
9 return 1
10 }
11
12 let path: *u8 = (argv[1]) as *u8
13
14 sys_write(1, "got: " as *u8, 5)
15 var k: i64 = 0
16 while path[k] != 0 {
17 k = k + 1
18 if k > 256 { return 2 }
19 }
20 sys_write(1, path, k)
21 sys_write(1, "\n" as *u8, 1)
22
23 let fd: i64 = sys_openat_rd(path)
24 if fd < 0 {
25 sys_write(1, "open_failed\n" as *u8, 12)
26 return 3
27 }
28 sys_write(1, "open_ok\n" as *u8, 8)
29 sys_close(fd)
30 return 0
31}