os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

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 }