ref: 62375ca259df19a32b791ab67256e24a5c75c1db
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)
;;
}