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/22/24) 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/22/24)