ref: 4932b5f0cf6f495208a0c1e1f4b2810ecf84fb9a
dir: /libstd/dirname.myr/
use "alloc.use"
use "slcp.use"
use "die.use"
use "sldup.use"
use "strfind.use"
use "option.use"
pkg std =
const dirname : (p : byte[:] -> byte[:])
const basename : (p : byte[:] -> byte[:])
;;
const dirname = {p
match std.strrfind(p, "/")
| `std.Some idx:
-> std.sldup(p[:idx])
| `std.None:
-> std.sldup(".")
;;
}
const basename = {p
:again
if p.len == 0
-> std.sldup(".")
;;
match std.strrfind(p, "/")
| `std.Some idx:
if idx == p.len - 1
goto again
;;
-> std.sldup(p[idx+1:])
| `std.None:
-> std.sldup(p)
;;
}