xref: /inferno-os/appl/cmd/cleanname.b (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1implement Cleanname;
2
3include "sys.m";
4	sys: Sys;
5
6include "draw.m";
7
8include "names.m";
9	names: Names;
10
11include "arg.m";
12
13Cleanname: module
14{
15	init:	fn(nil: ref Draw->Context, nil: list of string);
16};
17
18init(nil: ref Draw->Context, args: list of string)
19{
20	sys = load Sys Sys->PATH;
21	names = load Names Names->PATH;
22	arg := load Arg Arg->PATH;
23
24	dir: string;
25	arg->init(args);
26	arg->setusage("cleanname [-d pwd] name ...");
27	while((o := arg->opt()) != 0)
28		case o {
29		'd' =>
30			dir = arg->earg();
31		* =>
32			arg->usage();
33		}
34	args = arg->argv();
35	if(args == nil)
36		arg->usage();
37	arg = nil;
38
39	for(; args != nil; args = tl args){
40		n := hd args;
41		if(dir != nil && n != nil && n[0] != '/' && n[0] != '#')
42			n = dir+"/"+n;
43		sys->print("%s\n", names->cleanname(n));	# %q?
44	}
45}
46