ref: 62a0866a13cb0e7d0f982b1681be85ae1040f8c1
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)
;;
}