ctags(1)




NAME

     ctags - create a tags file for use with ex and vi


SYNOPSIS

     /usr/bin/ctags [-aBFtuvwx] [-f tagsfile] file...

     /usr/xpg4/bin/ctags [-aBFuvwx] [-f tagsfile] file...


DESCRIPTION

     The ctags utility makes a  tags  file  for  ex(1)  from  the
     specified  C,  C++,  Pascal,  FORTRAN,  yacc(1), and  lex(1)
     sources. A  tags  file  gives  the  locations  of  specified
     objects  (in this case functions and typedefs) in a group of
     files.  Each line of the tags file contains the object name,
     the  file  in which it is defined, and an address specifica-
     tion for the object definition. Functions are searched  with
     a pattern, typedefs with a line number. Specifiers are given
     in separate fields on the  line,  separated  by  <SPACE>  or
     <TAB>  characters.  Using the tags file, ex can quickly find
     these objects' definitions.

     Normally,  ctags places  the  tag  descriptions  in  a  file
     called tags; this may be overridden with the -f option.

     Files with names ending in  .c  or  .h  are  assumed  to  be
     either  C  or  C++  source  files and are searched for C/C++
     routine and macro definitions. Files with  names  ending  in
     .cc, .C, or  .cxx, are assumed to be C++ source files. Files
     with names ending in .y  are  assumed  to  be   yacc  source
     files.  Files with names ending in .l are assumed to be  lex
     files.  Others are first examined to see if they contain any
     Pascal or FORTRAN routine definitions; if not, they are pro-
     cessed again looking for C  definitions.

     The tag main is treated specially in C or C++ programs.  The
     tag formed is created by prepending M to file, with a trail-
     ing  .c , .cc .C, or .cxx removed, if any, and leading  path
     name  components  also  removed.    This  makes use of ctags
     practical in directories with more than one program.


OPTIONS

     The precedence of the options that pertain  to  printing  is
     -x,  -v,  then  the remaining options. The following options
     are supported:

     -a    Appends output to an existing tags file.

     -B    Uses backward searching patterns (?...?).

     -f tagsfile
           Places the tag descriptions in a file called  tagsfile
           instead of tags.

     -F    Uses forward searching patterns (/.../) (default).

     -t    Creates tags for typedefs. /usr/xpg4/bin/ctags creates
           tags for typedefs by default.

     -u    Updates the specified files  in  tags,  that  is,  all
           references to them are deleted, and the new values are
           appended to the file. Beware: this  option  is  imple-
           mented  in  a  way  that is rather slow; it is usually
           faster to simply rebuild the tags file.

     -v    Produces on the standard output an index  listing  the
           function name, file name, and page number (assuming 64
           line pages). Since the output will be sorted into lex-
           icographic  order, it may be desired to run the output
           through sort -f.

     -w    Suppresses warning diagnostics.

     -x    Produces a list of object names, the line  number  and
           file  name  on  which  each is defined, as well as the
           text of that line and prints this on the standard out-
           put.  This  is a simple index which can be printed out
           as an off-line readable function index.


OPERANDS

     The following file operands are supported:

     file.c
           Files with basenames ending with  the  .c  suffix  are
           treated as C-language source code.

     file.h
           Files with basenames ending with  the  .h  suffix  are
           treated as C-language source code.

     file.f
           Files with basenames ending with  the  .f  suffix  are
           treated as FORTRAN-language source code.


USAGE

     The -v option is mainly used with vgrind which will be  part
     of the optional BSD Compatibility Package.


EXAMPLES

     Example 1: Producing entries in alphabetical order

     Using ctags with the -v option produces entries in an  order
     which  may  not always be appropriate for vgrind. To produce
     results in alphabetical order, you may want to run the  out-
     put through sort -f.

     example% ctags -v filename.c filename.h | sort -f > index
     example% vgrind -x index

     Example 2: Building a tags file

     To build a tags file for C sources in a directory  hierarchy
     rooted  at  sourcedir,  first create an empty tags file, and
     then run  find(1)

     example% cd sourcedir  ; rm -f tags ; touch tags
     example% find . \( -name SCCS -prune -name \\
            '*.c' -o -name '*.h' \) -exec ctags -u {} \;

     Notice that spaces must be entered exactly as shown.


ENVIRONMENT VARIABLES

     See environ(5) for descriptions of the following environment
     variables  that affect the execution of ctags: LANG, LC_ALL,
     LC_COLLATE, LC_CTYPE, LC_MESSAGES, and NLSPATH.


EXIT STATUS

     The following exit values are returned:

     0     Successful completion.

     >0    An error occurred.


FILES

     tags  output tags file


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

  /usr/bin/ctags
     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Availability                | SUNWtoo                     |
    |_____________________________|_____________________________|

  /usr/xpg4/bin/ctags
     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Availability                | SUNWxcu4                    |
    |_____________________________|_____________________________|
    | Interface Stability         | Standard                    |
    |_____________________________|_____________________________|


SEE ALSO

     ex(1), lex(1),  vgrind(1),  vi(1),  yacc(1),  attributes(5),
     environ(5), standards(5)


NOTES

     Recognition of functions, subroutines,  and  procedures  for
     FORTRAN  and  Pascal  is done in a very simpleminded way. No
     attempt is made to deal with block structure;  if  you  have
     two  Pascal  procedures  in  different  blocks with the same
     name, you lose.

     The method of deciding whether to look for C or  Pascal  and
     FORTRAN functions is a hack.

     The ctags utility does not know about #ifdefs.

     The ctags utility should know about Pascal types. Relies  on
     the  input  being well formed to detect typedefs. Use of -tx
     shows only the last line of typedefs.


Man(1) output converted with man2html