@@@STARTPACK(idutils;Identifier database utilities)

@@@UW2DIST(uw7/shellutil/idutils/)
@@@SOURCE(ftp://prep.ai.mit.edu/gnu/id-utils/)
<P>
   An "ID database" is a binary file containing a list of file names, a
list of tokens, and a sparse matrix indicating which tokens appear in
which files.
<P>
   With this database and some tools to query it,
many text-searching tasks become simpler and faster.  For
example, you can list all files that reference a particular #include
file throughout a huge source hierarchy, search for all the memos
containing references to a project, or automatically invoke an editor
on all files containing references to some function or variable.
Anyone with a large software project to maintain, or a large set of text
files to organize, can benefit from the ID utilities.
<P>
   Although the name ID is short for identifier, the ID utilities
handle more than just identifiers; they also treat other kinds of
tokens, most notably numeric constants, and the contents of certain
character strings.  
<P>
   There are several programs in the ID utilities family:
<DL>
<DT>mkid
<DD>
     scans files for tokens and builds the ID database file.

<DT>lid
<DD>
     queries the ID database for tokens, then reports matching file
     names or matching lines.

<DT>fid
<DD>
     lists all tokens recorded in the database for given files, or
     tokens common to two files.

<DT>fnid
<DD>
     matches the file names in the database, rather than the tokens.

<DT>xtokid
<DD>
     extracts raw tokens--helps with testing of new mkid scanners.
</DL>
   In addition, the ID utilities have historically provided several
query programs which are specializations of lid:
<DL>
<DT>gid
<DD>
     (alias for lid -R grep) lists all lines containing the requested
     pattern.

<DT>eid
<DD>
     (alias for lid -R edit) invokes an editor on all files
     containing the requested pattern, and if possible, initiates a
     text search for that pattern.

<DT>aid
<DD>
     (alias for lid -ils) treats the requested pattern as a
     case-insensitive literal substring.
</DL>
</P>

@@@ENDPACK

