Avoid doubly tagging parse.y when both parse.c and parse.y are given on
authorFrancesco Potortì <pot@gnu.org>
Mon, 15 Apr 2002 14:18:47 +0000 (14:18 +0000)
committerFrancesco Potortì <pot@gnu.org>
Mon, 15 Apr 2002 14:18:47 +0000 (14:18 +0000)
commit9e0a3f98766d3828cb08374e474fdfd5d7ec2188
tree63df83ab9c7e6c0c4126d12b26d26d1de3360b84
parentc150db2349b25b552c6a5419e9dd21504a25e6b3
Avoid doubly tagging parse.y when both parse.c and parse.y are given on
the command line, in either order.

* etags.c (find_entries): Delete tags previously obtained from
file xxx.c's #line directives when parsing file xxx.y.  This is
generally done for automatically generated files containing
#line directives.  This handles the case when xxx.y is tagged
before xxx.c, and the entries of xxx.c pointing to xxx.y should
be discarded.
(language): Added the metasource member.  Initializers changed.
(invalidate_nodes): New function.
(readline): Discard lines after having found a #line
   directive pointing to an already tagged file.  This handles the
case when xxx.y is tagged before xxx.c, and the entries of
xxx.c pointing to xxx.y should be discarded.
(fdesc): New structure for keeping track of input files.
(fdesc): Remove `file' member (a string) and use instead a pointer
to a file description structure.
(curfile, curfiledir, curtagfname, curlang, nocharno,
forced_lang): Global variables removed in favor of fdhead and
curfdp, pointers to file description strucures.
(longopts, main, print_help): Use the CTAGS conditional to include
or exclude options that work on etags or ctags only.
(process_file, find_entries, pfnote, add_node, put_entries,
readline): Use fdhead and curfdp.
(process_file, find_entries): Do not take an arg string, all
callers changed.

* etags.c (longopts, print_help, main): Test CTAGS to disallow
options that are not right for either etags or ctags.

* etags.c (number_len, total_size_of_entries): Define them also
in CTAGS mode, because gcc does not compile all refs away.
lib-src/etags.c