ref: babf901b4a508c3ec5d1f89655f10377bbdf9637
dir: /appl/cmd/basename.b/
implement Basename;
include "sys.m";
sys: Sys;
include "draw.m";
include "names.m";
names: Names;
include "arg.m";
Basename: module
{
init: fn(nil: ref Draw->Context, nil: list of string);
};
init(nil: ref Draw->Context, args: list of string)
{
sys = load Sys Sys->PATH;
names = load Names Names->PATH;
arg := load Arg Arg->PATH;
dirname := 0;
arg->init(args);
arg->setusage("basename [-d] string [suffix]");
while((o := arg->opt()) != 0)
case o {
'd' =>
dirname = 1;
* =>
arg->usage();
}
args = arg->argv();
if(args == nil || tl args != nil && (dirname || tl tl args != nil))
arg->usage();
arg = nil;
if(dirname){
s := names->dirname(hd args);
if(s == nil)
s = ".";
sys->print("%s\n", s);
exit;
}
suffix: string;
if(tl args != nil)
suffix = hd tl args;
sys->print("%s\n", names->basename(hd args, suffix));
}