blob: 8d0ad5a8043ad2e1a0c026196f2276a5f5b10050 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
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));
}
|