NAMES(2) NAMES(2)
NAME
Names: basename, cleanname, dirname, elements, isprefix,
pathname, relative, rooted - file name manipulation
SYNOPSIS
include "names.m";
names := load Names Names->PATH;
basename: fn(name: string, suffix: string): string;
cleanname: fn(name: string): string;
dirname: fn(name: string): string;
elements: fn(name: string): list of string;
isprefix: fn(a: string, b: string): int;
pathname: fn(els: list of string): string;
relative: fn(name: string, root: string): string;
rooted: fn(root: string, name: string): string;
DESCRIPTION
Names provides operations on file names (path names):
basename Return the trailing component of name (the text
after the final `/'), shorn of suffix (which may
be null).
cleanname Return a `cleaner' version of name: there are no
redundant and trailing slashes, and directory
names `.' and `..' have been interpreted lexi-
cally. If the result would otherwise be the
empty string, the name `.' is returned instead.
dirname Return the directory component of name: the
string up to but not including the final
slash(es).
elements Return a list of the path elements of name: the
words between slashes. If name starts with a
`/', the head of the list will be the string "/"
but otherwise slashes do not appear.
pathname Return a path name formed from a list of elements
as produced by elements.
isprefix Return true iff path name a is a prefix of path
name b.
relative If name is root/X for some X, return X; otherwise
return name unchanged.
rooted Return the path name for name relative to a given
Page 1 Plan 9 (printed 12/14/25)
NAMES(2) NAMES(2)
root directory (either name may be nil). If name
itself starts with `/' or `#', the result is
name; otherwise it is root/name.
See sys-intro(2) for details of file name syntax and its
interpretation.
SOURCE
/appl/lib/names.b
SEE ALSO
sys-intro(2), sys-fd2path(2), workdir(2)
Page 2 Plan 9 (printed 12/14/25)