ls.om (574B)
1 func main(argc: int, argv: **byte, envp: **byte) { 2 var fd: int; 3 var i: int; 4 var n: int; 5 var len: int; 6 var a: alloc; 7 var out: *file; 8 var buf: *byte; 9 10 setup_alloc(&a); 11 12 out = fopen(1, &a); 13 14 fd = open(".", O_DIRECTORY, 0); 15 if fd < 0 { 16 exit(1); 17 } 18 19 buf = alloc(&a, 4096); 20 21 loop { 22 n = getdirents(fd, buf, 4096); 23 if n == 0 { 24 break; 25 } 26 27 if n < 0 { 28 die("getdirents failed"); 29 } 30 31 loop { 32 if i + 20 >= n { 33 break; 34 } 35 36 fputs(out, &buf[i + 19]); 37 fputc(out, ' '); 38 39 i = i + ((&buf[i + 16]) as *int[0] & 0xffff); 40 } 41 } 42 43 fputc(out, '\n'); 44 }