Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
CTAGS(1)		FreeBSD	General	Commands Manual		      CTAGS(1)

     ctags -- create a tags file

     ctags [-BFadtuwvx]	[-f tagsfile] name ...

     The ctags utility makes a tags file for ex(1) from	the specified C, Pas-
     cal, Fortran, yacc(1), lex(1), and	Lisp sources.  A tags file gives the
     locations of specified objects in a group of files.  Each line of the
     tags file contains	the object name, the file in which it is defined, and
     a search pattern for the object definition, separated by white-space.
     Using the tags file, ex(1)	can quickly locate these object	definitions.
     Depending upon the	options	provided to ctags, objects will	consist	of
     subroutines, typedefs, defines, structs, enums and	unions.

     The following options are available:

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

     -F	     Use forward searching patterns (/.../) (the default).

     -a	     Append to tags file.

     -d	     Create tags for #defines that do not take arguments; #defines
	     that take arguments are tagged automatically.

     -f	     Place the tag descriptions	in a file called tagsfile.  The
	     default behaviour is to place them	in a file called tags.

     -t	     Create tags for typedefs, structs,	unions,	and enums.

     -u	     Update the	specified files	in the tags file, that is, all refer-
	     ences to them are deleted,	and the	new values are appended	to the
	     file.  (Beware: this option is implemented	in a way which is
	     rather slow; it is	usually	faster to simply rebuild the tags

     -v	     An	index of the form expected by vgrind(1)	is produced on the
	     standard output.  This listing contains the object	name, file
	     name, and page number (assuming 64	line pages).  Since the	output
	     will be sorted into lexicographic order, it may be	desired	to run
	     the output	through	sort(1).  Sample use:

		   ctags -v files | sort -f > index
		   vgrind -x index

     -w	     Suppress warning diagnostics.

     -x	     ctags 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 output.  This is a	simple index
	     which can be printed out as an off-line readable function index.

     Files whose names end in .c or .h are assumed to be C source files	and
     are searched for C	style routine and macro	definitions.  Files whose
     names end in .y are assumed to be yacc(1) source files.  Files whose
     names end in .l are assumed to be Lisp files if their first non-blank
     character is `;', `(', or `[', otherwise, they are	treated	as lex(1)
     files.  Other files are first examined to see if they contain any Pascal
     or	Fortran	routine	definitions, and, if not, are searched for C style

     The tag ``main'' is treated specially in C	programs.  The tag formed is
     created by	prepending `M' to the name of the file,	with the trailing .c
     and any leading pathname components removed.  This	makes use of ctags
     practical in directories with more	than one program.

     yacc(1) and lex(1)	files each have	a special tag.	``yyparse'' is the
     start of the second section of the	yacc(1)	file, and ``yylex'' is the
     start of the second section of the	lex(1) file.

     tags  default output tags file

     The ctags utility exits with a value of 1 if an error occurred, 0 other-
     wise.  Duplicate objects are not considered errors.

     ex(1), vi(1)

     Recognition of functions, subroutines and procedures for Fortran and Pas-
     cal 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.  ctags does not understand about Pascal

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

     ctags relies on the input being well formed, and any syntactical errors
     will completely confuse it.  It also finds	some legal syntax confusing;
     for example, since	it does	not understand #ifdef's	(incidentally, that is
     a feature,	not a bug), any	code with unbalanced braces inside #ifdef's
     will cause	it to become somewhat disoriented.  In a similar fashion, mul-
     tiple line	changes	within a definition will cause it to enter the last
     line of the object, rather	than the first,	as the searching pattern.  The
     last line of multiple line	typedef's will similarly be noted.

     The ctags utility appeared	in 3.0BSD.

FreeBSD	10.3			 June 6, 1993			  FreeBSD 10.3


Want to link to this manual page? Use this URL:

home | help