ref: 89b3d0c393d0fc58ce185fad5e841edf077b810b
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) }