ref: 62a0866a13cb0e7d0f982b1681be85ae1040f8c1
dir: /libstd/syswrap-ss+osx.myr/
use sys use "errno.use" use "cstrconv.use" use "slcp.use" use "die.use" pkg std = 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) }