ref: 49f6758a734dc98ed7764d2f2ff8dfb77d4c75b0
dir: /lib/std/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) ;; }