ref: e5ecc330e4eba798ee447f1e90669051b66b1879
dir: /libstd/slurp.myr/
use "types.use"
use "alloc.use"
use "die.use"
use "sys.use"
use "fmt.use"
use "extremum.use"
pkg std =
const slurp : (path : byte[:] -> byte[:])
;;
const Bufinc = 4096
const slurp = {path
var fd
var n
var len
var buf
fd = open(path, Ordonly, 0o777)
if fd < 0
die("Could not open file")
;;
len = 0
buf = slalloc(Bufinc)
while true
n = read(fd, buf[len:])
if n == 0
goto done
;;
len += n
buf = slgrow(buf, len + Bufinc)
;;
:done
-> buf[:len]
}