ref: 7ef2abad32fe3b273f16eeb28d63a63229dca3a6
dir: /lib/std/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)
}