ref: abadb828b42e44dd0e50be143745a0c15d8c6c83
dir: /lib/std/syswrap-ss+osx.myr/
use sys
use "errno"
use "cstrconv"
use "slcp"
use "die"
pkg std =
$noret const exit : (status:int -> void)
pkglocal const bgetcwd : (buf : byte[:] -> errno)
;;
const exit = {status; sys.exit(status)}
const bgetcwd = {buf
var path : byte[sys.Maxpathlen]
var fd, len, err
fd = sys.open(".", sys.Ordonly)
if fd < 0
-> fd castto(errno)
;;
/*
FIXME: if the path is longer than sys.Pathmax, we should fall back to
the ugly method of finding the path.
*/
err = sys.fcntl(fd, sys.Fgetpath, path[:] castto(byte#)) castto(errno)
if err < 0
-> err
;;
len = cstrlen(path[:])
if len >= buf.len
-> Erange
;;
slcp(buf[:len], path[:len])
-> len castto(errno)
}