NAME

     ctags - Generates "tags" and (optionally) "refs" files


SYNOPSIS

     ctags [-stvra] filesnames...


DESCRIPTION

     ctags generates the "tags" and "refs" files from a group  of
     C  source  files.   The "tags" file is used by Elvis' ":tag"
     command, control-] command, and -t option.  The "refs"  file
     is sometimes used by the ref(1) program.

     Each C source file is scanned  for  #define  statements  and
     global function definitions.  The name of the macro or func-
     tion becomes the name of a tag.  For each  tag,  a  line  is
     added to the "tags" file which contains:
                 - the name of the tag
                 - a tab character
                 - the name of the file containing the tag
                 - a tab character
                 - a way to find the particular line within the file.

     The filenames list will typically be  the  names  of  all  C
     source files in the current directory, like this:
          $ ctags -stv *.[ch]


OPTIONS

     -t   Include typedefs.  A tag will  be  generated  for  each
          user-defined  type.   Also  tags  will be generated for
          struct and enum names.  Types are considered to be glo-
          bal if they are defined in a header file, and static if
          they are defined in a C source file.

     -v   Include variable declarations.  A tag will be generated
          for  each  variable, except for those that are declared
          inside the body of a function.

     -s   Include static tags.  Ctags will  normally  put  global
          tags in the "tags" file, and silently ignore the static
          tags.  This flag causes both global and static tags  to
          be  added.   The  name  of a static tag is generated by
          prefixing the name of the declared item with  the  name
          of  the  file  where  it  is  defined,  with a colon in
          between.  For  example,  "static  foo(){}"  in  "bar.c"
          results in a tag named "bar.c:foo".

     -r   This causes ctags to generate both "tags"  and  "refs".
          Without -r, it would only generate "tags".

     -a   Append to "tags", and maybe  "refs".   Normally,  ctags
          overwrites  these  files each time it is invoked.  This
          flag is useful when you  have  to  many  files  in  the
          current  directory  for  you  to  list them on a single
          command-line; it allows  you  to  split  the  arguments
          among several invocations.


FILES

     tags A cross-reference that lists each tag name, the name of
          the source file that contains it, and a way to locate a
          particular line in the source file.

     refs The "refs" file contains the definitions for  each  tag
          in  the  "tags"  file, and very little else.  This file
          can be useful, for example, when licensing restrictions
          prevent you from making the source code to the standard
          C library readable by everybody, but you  still  every-
          body to know what arguments the library functions need.


BUGS

     ctags is sensitive to indenting  and  line  breaks.   Conse-
     quently,  it  might  not  discover all of the tags in a file
     that is formatted in an unusual way.


SEE ALSO

     elvis(1), refs(1)


AUTHOR

     Steve Kirkendall
     kirkenda@cs.pdx.edu