COMPLETE(3)                                           COMPLETE(3)

     NAME
          complete, freecompletion - file name completion

     SYNOPSIS
          #include <u.h>
          #include <libc.h>
          #include <complete.h>

          typedef struct CompletionCompletion;
          struct Completion{
              uchar advance;
              uchar complete;
              char *string;
              int nmatch;
              int nfile;
              char **filename;
          };

          Completion* complete(char *dir, char *s);

          void freecompletion(Completion *c);

     DESCRIPTION
          The complete function implements file name completion.
          Given a directory dir and a string s, it returns an analysis
          of the file names in that directory that begin with the
          string s. The fields nmatch and nfile will be set to the
          number of files that match the prefix and filename will be
          filled in with their names.  If the file named is a direc-
          tory, a slash character will be appended to it.

          If no files match the string, nmatch will be zero, but
          complete will return the full set of files in the directory,
          with nfile set to their number.

          The flag advance reports whether the string s can be
          extended without changing the set of files that match.  If
          true, string will be set to the extension; that is, the
          value of string may be appended to s by the caller to extend
          the embryonic file name unambiguously.

          The flag complete reports whether the extended file name
          uniquely identifies a file.  If true, string will be suf-
          fixed with a blank, or a slash and a blank, depending on
          whether the resulting file name identifies a plain file or a
          directory.

          The freecompletion function frees a Completion structure and
          its contents.

     COMPLETE(3)                                           COMPLETE(3)

          In rio(1) and acme(1), file name completion is triggered by
          a control-F character or an Insert character.

     SOURCE
          /src/libcomplete

     SEE ALSO
          rio(1), acme(1)

     DIAGNOSTICS
          The complete function returns a null pointer and sets errstr
          if the directory is unreadable or there is some other error.

     BUGS
          The behavior of file name completion should be controlled by
          the plumber.