ref: 4e656a4f039b9230c820f12d3b1e4a5c8e55cf47
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) ;; }