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 3/28/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 3/28/24)