Mercurial > emacs
annotate lib-src/etags.c @ 27692:bb0e45f6ca86
* regex.h (RE_SYNTAX_EMACS): Add RE_CHAR_CLASSES and RE_INTERVALS
to Emacs' syntax. Also fix the comment about set/not-set meanings
since Emacs syntax is not the value 0 any more.
* search.c (compile_pattern_1): Remove RE_CHAR_CLASSES from the syntax
since it's now part of RE_SYNTAX_EMACS.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Mon, 14 Feb 2000 17:00:16 +0000 |
parents | c8b3e7e83e09 |
children | 994203eb3753 |
rev | line source |
---|---|
240 | 1 /* Tags file maker to go with GNU Emacs |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
24879
diff
changeset
|
2 Copyright (C) 1984, 87, 88, 89, 93, 94, 95, 98, 99 |
11231 | 3 Free Software Foundation, Inc. and Ken Arnold |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14144
diff
changeset
|
4 |
2932
b68f975d505a
Change permission notice (not "part of Emacs").
Richard M. Stallman <rms@gnu.org>
parents:
2911
diff
changeset
|
5 This file is not considered part of GNU Emacs. |
240 | 6 |
2932
b68f975d505a
Change permission notice (not "part of Emacs").
Richard M. Stallman <rms@gnu.org>
parents:
2911
diff
changeset
|
7 This program is free software; you can redistribute it and/or modify |
240 | 8 it under the terms of the GNU General Public License as published by |
2932
b68f975d505a
Change permission notice (not "part of Emacs").
Richard M. Stallman <rms@gnu.org>
parents:
2911
diff
changeset
|
9 the Free Software Foundation; either version 2 of the License, or |
b68f975d505a
Change permission notice (not "part of Emacs").
Richard M. Stallman <rms@gnu.org>
parents:
2911
diff
changeset
|
10 (at your option) any later version. |
240 | 11 |
2932
b68f975d505a
Change permission notice (not "part of Emacs").
Richard M. Stallman <rms@gnu.org>
parents:
2911
diff
changeset
|
12 This program is distributed in the hope that it will be useful, |
240 | 13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14144
diff
changeset
|
18 along with this program; if not, write to the Free Software Foundation, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14144
diff
changeset
|
19 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
240 | 20 |
21 /* | |
22 * Authors: | |
23 * Ctags originally by Ken Arnold. | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
24 * Fortran added by Jim Kleckner. |
240 | 25 * Ed Pelegri-Llopart added C typedefs. |
26 * Gnu Emacs TAGS format and modifications by RMS? | |
27 * Sam Kendall added C++. | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
28 * Francesco Potorti` reorganised C and C++ based on work by Joe Wells. |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
29 * Regexp tags by Tom Tromey. |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
30 * |
26340
f1ae5b57d9db
Changed the mail addess of the maintainer.
Francesco Potortì <pot@gnu.org>
parents:
26323
diff
changeset
|
31 * Francesco Potorti` (pot@gnu.org) is the current maintainer. |
240 | 32 */ |
10761
7aa80669e697
* etags.c (C_entries): Bug corrected in xrealloc of token_str.
Francesco Potortì <pot@gnu.org>
parents:
10754
diff
changeset
|
33 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
34 char pot_etags_version[] = "@(#) pot revision number is 13.44"; |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
35 |
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
36 #define TRUE 1 |
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
37 #define FALSE 0 |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
38 |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
39 #ifndef DEBUG |
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
40 # define DEBUG FALSE |
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
41 #endif |
10754
cd1c0b5e8634
* etags.c (C_entries): Initialise the new members of TOKEN.
Francesco Potortì <pot@gnu.org>
parents:
10623
diff
changeset
|
42 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
43 #if defined(__STDC__) && (__STDC__ || defined(__SUNPRO_C)) |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
44 # define P_(proto) proto |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
45 #else |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
46 # define P_(proto) () |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
47 #endif |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
48 |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
24879
diff
changeset
|
49 #ifdef HAVE_CONFIG_H |
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
24879
diff
changeset
|
50 # include <config.h> |
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
24879
diff
changeset
|
51 /* On some systems, Emacs defines static as nothing for the sake |
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
24879
diff
changeset
|
52 of unexec. We don't want that here since we don't use unexec. */ |
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
24879
diff
changeset
|
53 # undef static |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
54 # define ETAGS_REGEXPS /* use the regexp features */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
55 # define LONG_OPTIONS /* accept long options */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
56 #endif /* HAVE_CONFIG_H */ |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
24879
diff
changeset
|
57 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
58 #ifndef _GNU_SOURCE |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
59 # define _GNU_SOURCE 1 /* enables some compiler checks on GNU */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
60 #endif |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
61 |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
5044
diff
changeset
|
62 #ifdef MSDOS |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
63 # undef MSDOS |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
64 # define MSDOS TRUE |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
65 # include <fcntl.h> |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
66 # include <sys/param.h> |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
67 # include <io.h> |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
68 # ifndef HAVE_CONFIG_H |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
69 # define DOS_NT |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
70 # include <sys/config.h> |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
71 # endif |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
72 #else |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
73 # define MSDOS FALSE |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
5044
diff
changeset
|
74 #endif /* MSDOS */ |
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
5044
diff
changeset
|
75 |
9773
bd49556a7552
(main, etags_getcwd): Test DOS_NT instead of MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
9635
diff
changeset
|
76 #ifdef WINDOWSNT |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
77 # include <stdlib.h> |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
78 # include <fcntl.h> |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
79 # include <string.h> |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
80 # include <direct.h> |
14982
b470e33ce4a9
[WINDOWSNT]: Include io.h.
Richard M. Stallman <rms@gnu.org>
parents:
14924
diff
changeset
|
81 # include <io.h> |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
82 # define MAXPATHLEN _MAX_PATH |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
83 # ifdef HAVE_CONFIG_H |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
84 # undef HAVE_NTGUI |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
85 # else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
86 # define DOS_NT |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
87 # endif /* not HAVE_CONFIG_H */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
88 # ifndef HAVE_GETCWD |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
89 # define HAVE_GETCWD |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
90 # endif /* undef HAVE_GETCWD */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
91 #else /* !WINDOWSNT */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
92 # ifdef STDC_HEADERS |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
93 # include <stdlib.h> |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
94 # include <string.h> |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
95 # else |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
96 extern char *getenv (); |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
97 # endif |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
98 #endif /* !WINDOWSNT */ |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
99 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
100 #ifdef HAVE_UNISTD_H |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
101 # include <unistd.h> |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
102 #else |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
103 # if defined (HAVE_GETCWD) && !WINDOWSNT |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
104 extern char *getcwd (char *buf, size_t size); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
105 # endif |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
106 #endif /* HAVE_UNISTD_H */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
107 |
3921
e5e5b3634dd0
* etags.c: #include "config.h" and the alloca CPP tangle before
Jim Blandy <jimb@redhat.com>
parents:
3838
diff
changeset
|
108 #include <stdio.h> |
e5e5b3634dd0
* etags.c: #include "config.h" and the alloca CPP tangle before
Jim Blandy <jimb@redhat.com>
parents:
3838
diff
changeset
|
109 #include <ctype.h> |
9975
e21b0674f37c
* etags.c (<errno.h>): #include added.
Francesco Potortì <pot@gnu.org>
parents:
9773
diff
changeset
|
110 #include <errno.h> |
e21b0674f37c
* etags.c (<errno.h>): #include added.
Francesco Potortì <pot@gnu.org>
parents:
9773
diff
changeset
|
111 #ifndef errno |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
112 extern int errno; |
9975
e21b0674f37c
* etags.c (<errno.h>): #include added.
Francesco Potortì <pot@gnu.org>
parents:
9773
diff
changeset
|
113 #endif |
3921
e5e5b3634dd0
* etags.c: #include "config.h" and the alloca CPP tangle before
Jim Blandy <jimb@redhat.com>
parents:
3838
diff
changeset
|
114 #include <sys/types.h> |
e5e5b3634dd0
* etags.c: #include "config.h" and the alloca CPP tangle before
Jim Blandy <jimb@redhat.com>
parents:
3838
diff
changeset
|
115 #include <sys/stat.h> |
e5e5b3634dd0
* etags.c: #include "config.h" and the alloca CPP tangle before
Jim Blandy <jimb@redhat.com>
parents:
3838
diff
changeset
|
116 |
4804
810826b6e19a
* etags.c (process_file): dead code removed.
Francesco Potortì <pot@gnu.org>
parents:
4750
diff
changeset
|
117 #if !defined (S_ISREG) && defined (S_IFREG) |
810826b6e19a
* etags.c (process_file): dead code removed.
Francesco Potortì <pot@gnu.org>
parents:
4750
diff
changeset
|
118 # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) |
810826b6e19a
* etags.c (process_file): dead code removed.
Francesco Potortì <pot@gnu.org>
parents:
4750
diff
changeset
|
119 #endif |
810826b6e19a
* etags.c (process_file): dead code removed.
Francesco Potortì <pot@gnu.org>
parents:
4750
diff
changeset
|
120 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
121 #ifdef LONG_OPTIONS |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
122 # include <getopt.h> |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
123 #else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
124 # define getopt_long(argc,argv,optstr,lopts,lind) getopt (argc, argv, optstr) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
125 extern char *optarg; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
126 extern int optind, opterr; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
127 #endif /* LONG_OPTIONS */ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
128 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
129 #ifdef ETAGS_REGEXPS |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
130 # include <regex.h> |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
131 #endif /* ETAGS_REGEXPS */ |
3921
e5e5b3634dd0
* etags.c: #include "config.h" and the alloca CPP tangle before
Jim Blandy <jimb@redhat.com>
parents:
3838
diff
changeset
|
132 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
133 /* Define CTAGS to make the program "ctags" compatible with the usual one. |
17168
53314a257690
* etags.c (add_regex): reset *putbuf before using it.
Francesco Potortì <pot@gnu.org>
parents:
16733
diff
changeset
|
134 Leave it undefined to make the program "etags", which makes emacs-style |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
135 tag tables and tags typedefs, #defines and struct/union/enum by default. */ |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
136 #ifdef CTAGS |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
137 # undef CTAGS |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
138 # define CTAGS TRUE |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
139 #else |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
140 # define CTAGS FALSE |
240 | 141 #endif |
142 | |
143 /* Exit codes for success and failure. */ | |
144 #ifdef VMS | |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
145 # define GOOD 1 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
146 # define BAD 0 |
240 | 147 #else |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
148 # define GOOD 0 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
149 # define BAD 1 |
240 | 150 #endif |
151 | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
152 /* C extensions. */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
153 #define C_PLPL 0x00001 /* C++ */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
154 #define C_STAR 0x00003 /* C* */ |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
155 #define C_JAVA 0x00005 /* JAVA */ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
156 #define YACC 0x10000 /* yacc file */ |
240 | 157 |
16733
a8927c5085fe
(streq, strneq): Use == NULL rather than !.
Richard M. Stallman <rms@gnu.org>
parents:
16607
diff
changeset
|
158 #define streq(s,t) ((DEBUG && (s) == NULL && (t) == NULL \ |
a8927c5085fe
(streq, strneq): Use == NULL rather than !.
Richard M. Stallman <rms@gnu.org>
parents:
16607
diff
changeset
|
159 && (abort (), 1)) || !strcmp (s, t)) |
a8927c5085fe
(streq, strneq): Use == NULL rather than !.
Richard M. Stallman <rms@gnu.org>
parents:
16607
diff
changeset
|
160 #define strneq(s,t,n) ((DEBUG && (s) == NULL && (t) == NULL \ |
a8927c5085fe
(streq, strneq): Use == NULL rather than !.
Richard M. Stallman <rms@gnu.org>
parents:
16607
diff
changeset
|
161 && (abort (), 1)) || !strncmp (s, t, n)) |
240 | 162 |
16573
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
163 #define lowcase(c) tolower ((char)c) |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
164 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
165 #define CHARS 256 /* 2^sizeof(char) */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
166 #define CHAR(x) ((unsigned int)x & (CHARS - 1)) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
167 #define iswhite(c) (_wht[CHAR(c)]) /* c is white */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
168 #define notinname(c) (_nin[CHAR(c)]) /* c is not in a name */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
169 #define begtoken(c) (_btk[CHAR(c)]) /* c can start token */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
170 #define intoken(c) (_itk[CHAR(c)]) /* c can be in token */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
171 #define endtoken(c) (_etk[CHAR(c)]) /* c ends tokens */ |
240 | 172 |
12344
7e7941d8cceb
* etags.c (find_entries): rewind before rereading the input file.
Francesco Potortì <pot@gnu.org>
parents:
12242
diff
changeset
|
173 |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
174 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
175 * xnew, xrnew -- allocate, reallocate storage |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
176 * |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
177 * SYNOPSIS: Type *xnew (int n, Type); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
178 * Type *xrnew (OldPointer, int n, Type); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
179 */ |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
180 #ifdef chkmalloc |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
181 # include "chkmalloc.h" |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
182 # define xnew(n,Type) ((Type *) trace_malloc (__FILE__, __LINE__, \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
183 (n) * sizeof (Type))) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
184 # define xrnew(op,n,Type) ((Type *) trace_realloc (__FILE__, __LINE__, \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
185 (op), (n) * sizeof (Type))) |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
186 #else |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
187 # define xnew(n,Type) ((Type *) xmalloc ((n) * sizeof (Type))) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
188 # define xrnew(op,n,Type) ((Type *) xrealloc ((op), (n) * sizeof (Type))) |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
189 #endif |
240 | 190 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
191 typedef int bool; |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
192 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
193 typedef void Lang_function P_((FILE *)); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
194 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
195 typedef struct |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
196 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
197 char *suffix; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
198 char *command; /* Takes one arg and decompresses to stdout */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
199 } compressor; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
200 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
201 typedef struct |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
202 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
203 char *name; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
204 Lang_function *function; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
205 char **suffixes; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
206 char **interpreters; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
207 } language; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
208 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
209 typedef struct node_st |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
210 { /* sorting structure */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
211 char *name; /* function or type name */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
212 char *file; /* file name */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
213 bool is_func; /* use pattern or line no */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
214 bool been_warned; /* set if noticed dup */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
215 int lno; /* line number tag is on */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
216 long cno; /* character number line starts on */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
217 char *pat; /* search pattern */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
218 struct node_st *left, *right; /* left and right sons */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
219 } node; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
220 |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
221 /* |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
222 * A `linebuffer' is a structure which holds a line of text. |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
223 * `readline_internal' reads a line from a stream into a linebuffer |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
224 * and works regardless of the length of the line. |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
225 * SIZE is the size of BUFFER, LEN is the length of the string in |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
226 * BUFFER after readline reads it. |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
227 */ |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
228 typedef struct |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
229 { |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
230 long size; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
231 int len; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
232 char *buffer; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
233 } linebuffer; |
240 | 234 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
235 /* Many compilers barf on this: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
236 Lang_function Ada_funcs; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
237 so let's write it this way */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
238 static void Ada_funcs P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
239 static void Asm_labels P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
240 static void C_entries P_((int c_ext, FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
241 static void default_C_entries P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
242 static void plain_C_entries P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
243 static void Cjava_entries P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
244 static void Cobol_paragraphs P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
245 static void Cplusplus_entries P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
246 static void Cstar_entries P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
247 static void Erlang_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
248 static void Fortran_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
249 static void Yacc_entries P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
250 static void Lisp_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
251 static void Pascal_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
252 static void Perl_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
253 static void Postscript_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
254 static void Prolog_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
255 static void Python_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
256 static void Scheme_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
257 static void TeX_functions P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
258 static void just_read_file P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
259 |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
260 static void print_language_names P_((void)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
261 static void print_version P_((void)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
262 static void print_help P_((void)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
263 int main P_((int, char **)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
264 static int number_len P_((long)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
265 |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
266 static compressor *get_compressor_from_suffix P_((char *, char **)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
267 static language *get_language_from_name P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
268 static language *get_language_from_interpreter P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
269 static language *get_language_from_suffix P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
270 static int total_size_of_entries P_((node *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
271 static long readline P_((linebuffer *, FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
272 static long readline_internal P_((linebuffer *, FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
273 static void get_tag P_((char *)); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
274 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
275 #ifdef ETAGS_REGEXPS |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
276 static void analyse_regex P_((char *, bool)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
277 static void add_regex P_((char *, bool, language *)); |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
278 static void free_patterns P_((void)); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
279 #endif /* ETAGS_REGEXPS */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
280 static void error P_((const char *, const char *)); |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
281 static void suggest_asking_for_help P_((void)); |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
282 static void fatal P_((char *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
283 static void pfatal P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
284 static void add_node P_((node *, node **)); |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
285 |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
286 static void init P_((void)); |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
287 static void initbuffer P_((linebuffer *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
288 static void find_entries P_((char *, FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
289 static void free_tree P_((node *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
290 static void pfnote P_((char *, bool, char *, int, int, long)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
291 static void new_pfnote P_((char *, int, bool, char *, int, int, long)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
292 static void process_file P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
293 static void put_entries P_((node *)); |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
294 static void takeprec P_((void)); |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
295 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
296 static char *concat P_((char *, char *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
297 static char *skip_spaces P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
298 static char *skip_non_spaces P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
299 static char *savenstr P_((char *, int)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
300 static char *savestr P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
301 static char *etags_strchr P_((const char *, int)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
302 static char *etags_strrchr P_((const char *, int)); |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
303 static char *etags_getcwd P_((void)); |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
304 static char *relative_filename P_((char *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
305 static char *absolute_filename P_((char *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
306 static char *absolute_dirname P_((char *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
307 static bool filename_is_absolute P_((char *f)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
308 static void canonicalize_filename P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
309 static void grow_linebuffer P_((linebuffer *, int)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
310 static long *xmalloc P_((unsigned int)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
311 static long *xrealloc P_((char *, unsigned int)); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
312 |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
313 |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
314 char searchar = '/'; /* use /.../ searches */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
315 |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
316 char *tagfile; /* output file */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
317 char *progname; /* name this program was invoked with */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
318 char *cwd; /* current working directory */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
319 char *tagfiledir; /* directory of tagfile */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
320 FILE *tagf; /* ioptr for tags file */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
321 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
322 char *curfile; /* current input file name */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
323 language *curlang; /* current language */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
324 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
325 int lineno; /* line number of current line */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
326 long charno; /* current character number */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
327 long linecharno; /* charno of start of current line */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
328 char *dbp; /* pointer to start of current tag */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
329 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
330 node *head; /* the head of the binary tree of tags */ |
240 | 331 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
332 linebuffer lb; /* the current line */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
333 linebuffer token_name; /* used by C_entries as a temporary area */ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
334 struct |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
335 { |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
336 long linepos; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
337 linebuffer lb; /* used by C_entries instead of lb */ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
338 } lbs[2]; |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
339 |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
340 /* boolean "functions" (see init) */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
341 bool _wht[CHARS], _nin[CHARS], _itk[CHARS], _btk[CHARS], _etk[CHARS]; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
342 char |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
343 /* white chars */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
344 *white = " \f\t\n\r\v", |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
345 /* not in a name */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
346 *nonam = " \f\t\n\r(=,[;", |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
347 /* token ending chars */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
348 *endtk = " \t\n\r\"'#()[]{}=-+%*/&|^~!<>;,.:?", |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
349 /* token starting chars */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
350 *begtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$~@", |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
351 /* valid in-token chars */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
352 *midtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789"; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
353 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
354 bool append_to_tagfile; /* -a: append to tags */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
355 /* The following four default to TRUE for etags, but to FALSE for ctags. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
356 bool typedefs; /* -t: create tags for C and Ada typedefs */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
357 bool typedefs_and_cplusplus; /* -T: create tags for C typedefs, level */ |
240 | 358 /* 0 struct/enum/union decls, and C++ */ |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
359 /* member functions. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
360 bool constantypedefs; /* -d: create tags for C #define, enum */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
361 /* constants and variables. */ |
240 | 362 /* -D: opposite of -d. Default under ctags. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
363 bool declarations; /* --declarations: tag them and extern in C&Co*/ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
364 bool globals; /* create tags for global variables */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
365 bool members; /* create tags for C member variables */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
366 bool update; /* -u: update tags */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
367 bool vgrind_style; /* -v: create vgrind style index output */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
368 bool no_warnings; /* -w: suppress warnings */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
369 bool cxref_style; /* -x: create cxref style output */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
370 bool cplusplus; /* .[hc] means C++, not C */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
371 bool noindentypedefs; /* -I: ignore indentation in C */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
372 bool packages_only; /* --packages-only: in Ada, only tag packages*/ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
373 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
374 #ifdef LONG_OPTIONS |
10047
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
375 struct option longopts[] = |
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
376 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
377 { "packages-only", no_argument, &packages_only, TRUE }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
378 { "append", no_argument, NULL, 'a' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
379 { "backward-search", no_argument, NULL, 'B' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
380 { "c++", no_argument, NULL, 'C' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
381 { "cxref", no_argument, NULL, 'x' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
382 { "defines", no_argument, NULL, 'd' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
383 { "declarations", no_argument, &declarations, TRUE }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
384 { "no-defines", no_argument, NULL, 'D' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
385 { "globals", no_argument, &globals, TRUE }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
386 { "no-globals", no_argument, &globals, FALSE }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
387 { "help", no_argument, NULL, 'h' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
388 { "help", no_argument, NULL, 'H' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
389 { "ignore-indentation", no_argument, NULL, 'I' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
390 { "include", required_argument, NULL, 'i' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
391 { "language", required_argument, NULL, 'l' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
392 { "members", no_argument, &members, TRUE }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
393 { "no-members", no_argument, &members, FALSE }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
394 { "no-warn", no_argument, NULL, 'w' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
395 { "output", required_argument, NULL, 'o' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
396 #ifdef ETAGS_REGEXPS |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
397 { "regex", required_argument, NULL, 'r' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
398 { "no-regex", no_argument, NULL, 'R' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
399 { "ignore-case-regex", required_argument, NULL, 'c' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
400 #endif /* ETAGS_REGEXPS */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
401 { "typedefs", no_argument, NULL, 't' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
402 { "typedefs-and-c++", no_argument, NULL, 'T' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
403 { "update", no_argument, NULL, 'u' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
404 { "version", no_argument, NULL, 'V' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
405 { "vgrind", no_argument, NULL, 'v' }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
406 { NULL } |
621 | 407 }; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
408 #endif /* LONG_OPTIONS */ |
621 | 409 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
410 #ifdef ETAGS_REGEXPS |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
411 /* Structure defining a regular expression. Elements are |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
412 the compiled pattern, and the name string. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
413 typedef struct pattern |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
414 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
415 struct pattern *p_next; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
416 language *language; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
417 char *regex; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
418 struct re_pattern_buffer *pattern; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
419 struct re_registers regs; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
420 char *name_pattern; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
421 bool error_signaled; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
422 } pattern; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
423 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
424 /* List of all regexps. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
425 pattern *p_head = NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
426 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
427 /* How many characters in the character set. (From regex.c.) */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
428 #define CHAR_SET_SIZE 256 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
429 /* Translation table for case-insensitive matching. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
430 char lc_trans[CHAR_SET_SIZE]; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
431 #endif /* ETAGS_REGEXPS */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
432 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
433 compressor compressors[] = |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
434 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
435 { "z", "gzip -d -c"}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
436 { "Z", "gzip -d -c"}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
437 { "gz", "gzip -d -c"}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
438 { "GZ", "gzip -d -c"}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
439 { "bz2", "bzip2 -d -c" }, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
440 { NULL } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
441 }; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
442 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
443 /* |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
444 * Language stuff. |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
445 */ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
446 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
447 /* Non-NULL if language fixed. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
448 language *forced_lang = NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
449 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
450 /* Ada code */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
451 char *Ada_suffixes [] = |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
452 { "ads", "adb", "ada", NULL }; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
453 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
454 /* Assembly code */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
455 char *Asm_suffixes [] = { "a", /* Unix assembler */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
456 "asm", /* Microcontroller assembly */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
457 "def", /* BSO/Tasking definition includes */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
458 "inc", /* Microcontroller include files */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
459 "ins", /* Microcontroller include files */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
460 "s", "sa", /* Unix assembler */ |
19185
77910f9661a9
(Yacc_suffixes, Asm_suffixes): Add some alternatives.
Richard M. Stallman <rms@gnu.org>
parents:
18881
diff
changeset
|
461 "S", /* cpp-processed Unix assembler */ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
462 "src", /* BSO/Tasking C compiler output */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
463 NULL |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
464 }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
465 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
466 /* Note that .c and .h can be considered C++, if the --c++ flag was |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
467 given. That is why default_C_entries is called here. */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
468 char *default_C_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
469 { "c", "h", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
470 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
471 char *Cplusplus_suffixes [] = |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
472 { "C", "H", "c++", "cc", "cpp", "cxx", "h++", "hh", "hpp", "hxx", |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
473 "M", /* Objective C++ */ |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
474 "pdb", /* Postscript with C syntax */ |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
475 NULL }; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
476 |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
477 char *Cjava_suffixes [] = |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
478 { "java", NULL }; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
479 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
480 char *Cobol_suffixes [] = |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
481 { "COB", "cob", NULL }; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
482 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
483 char *Cstar_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
484 { "cs", "hs", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
485 |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
486 char *Erlang_suffixes [] = |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
487 { "erl", "hrl", NULL }; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
488 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
489 char *Fortran_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
490 { "F", "f", "f90", "for", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
491 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
492 char *Lisp_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
493 { "cl", "clisp", "el", "l", "lisp", "lsp", "ml", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
494 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
495 char *Pascal_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
496 { "p", "pas", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
497 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
498 char *Perl_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
499 { "pl", "pm", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
500 char *Perl_interpreters [] = |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
501 { "perl", "@PERL@", NULL }; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
502 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
503 char *plain_C_suffixes [] = |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
504 { "pc", /* Pro*C file */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
505 "m", /* Objective C file */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
506 "lm", /* Objective lex file */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
507 NULL }; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
508 |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
509 char *Postscript_suffixes [] = |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
510 { "ps", "psw", NULL }; /* .psw is for PSWrap */ |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
511 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
512 char *Prolog_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
513 { "prolog", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
514 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
515 char *Python_suffixes [] = |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
516 { "py", NULL }; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
517 |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
518 /* Can't do the `SCM' or `scm' prefix with a version number. */ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
519 char *Scheme_suffixes [] = |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
520 { "SCM", "SM", "oak", "sch", "scheme", "scm", "sm", "ss", "t", NULL }; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
521 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
522 char *TeX_suffixes [] = |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
523 { "TeX", "bib", "clo", "cls", "ltx", "sty", "tex", NULL }; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
524 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
525 char *Yacc_suffixes [] = |
19185
77910f9661a9
(Yacc_suffixes, Asm_suffixes): Add some alternatives.
Richard M. Stallman <rms@gnu.org>
parents:
18881
diff
changeset
|
526 { "y", "ym", "yy", "yxx", "y++", NULL }; /* .ym is Objective yacc file */ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
527 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
528 /* |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
529 * Table of languages. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
530 * |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
531 * It is ok for a given function to be listed under more than one |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
532 * name. I just didn't. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
533 */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
534 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
535 language lang_names [] = |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
536 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
537 { "ada", Ada_funcs, Ada_suffixes, NULL }, |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
538 { "asm", Asm_labels, Asm_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
539 { "c", default_C_entries, default_C_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
540 { "c++", Cplusplus_entries, Cplusplus_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
541 { "c*", Cstar_entries, Cstar_suffixes, NULL }, |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
542 { "cobol", Cobol_paragraphs, Cobol_suffixes, NULL }, |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
543 { "erlang", Erlang_functions, Erlang_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
544 { "fortran", Fortran_functions, Fortran_suffixes, NULL }, |
17785
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
545 { "java", Cjava_entries, Cjava_suffixes, NULL }, |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
546 { "lisp", Lisp_functions, Lisp_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
547 { "pascal", Pascal_functions, Pascal_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
548 { "perl", Perl_functions, Perl_suffixes, Perl_interpreters }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
549 { "postscript", Postscript_functions, Postscript_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
550 { "proc", plain_C_entries, plain_C_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
551 { "prolog", Prolog_functions, Prolog_suffixes, NULL }, |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
552 { "python", Python_functions, Python_suffixes, NULL }, |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
553 { "scheme", Scheme_functions, Scheme_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
554 { "tex", TeX_functions, TeX_suffixes, NULL }, |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
555 { "yacc", Yacc_entries, Yacc_suffixes, NULL }, |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
556 { "auto", NULL }, /* default guessing scheme */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
557 { "none", just_read_file }, /* regexp matching only */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
558 { NULL, NULL } /* end of list */ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
559 }; |
240 | 560 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
561 static void |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
562 print_language_names () |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
563 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
564 language *lang; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
565 char **ext; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
566 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
567 puts ("\nThese are the currently supported languages, along with the\n\ |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
568 default file name suffixes:"); |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
569 for (lang = lang_names; lang->name != NULL; lang++) |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
570 { |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
571 printf ("\t%s\t", lang->name); |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
572 if (lang->suffixes != NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
573 for (ext = lang->suffixes; *ext != NULL; ext++) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
574 printf (" .%s", *ext); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
575 puts (""); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
576 } |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
577 puts ("Where `auto' means use default language for files based on file\n\ |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
578 name suffix, and `none' means only do regexp processing on files.\n\ |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
579 If no language is specified and no matching suffix is found,\n\ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
580 the first line of the file is read for a sharp-bang (#!) sequence\n\ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
581 followed by the name of an interpreter. If no such sequence is found,\n\ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
582 Fortran is tried first; if no tags are found, C is tried next.\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
583 Compressed files are supported using gzip and bzip2."); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
584 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
585 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
586 #ifndef EMACS_NAME |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
587 # define EMACS_NAME "GNU Emacs" |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
588 #endif |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
589 #ifndef VERSION |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
590 # define VERSION "21" |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
591 #endif |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
592 static void |
621 | 593 print_version () |
594 { | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
595 printf ("%s (%s %s)\n", (CTAGS) ? "ctags" : "etags", EMACS_NAME, VERSION); |
26083
134b57acef68
Add support for large files. Merge glibc 2.1.2.
Paul Eggert <eggert@twinsun.com>
parents:
24879
diff
changeset
|
596 puts ("Copyright (C) 1999 Free Software Foundation, Inc. and Ken Arnold"); |
16373
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
597 puts ("This program is distributed under the same terms as Emacs"); |
621 | 598 |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
599 exit (GOOD); |
621 | 600 } |
601 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
602 static void |
621 | 603 print_help () |
604 { | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
605 printf ("Usage: %s [options] [[regex-option ...] file-name] ...\n\ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
606 \n\ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
607 These are the options accepted by %s.\n", progname, progname); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
608 #ifdef LONG_OPTIONS |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
609 puts ("You may use unambiguous abbreviations for the long option names."); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
610 #else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
611 puts ("Long option names do not work with this executable, as it is not\n\ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
612 linked with GNU getopt."); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
613 #endif /* LONG_OPTIONS */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
614 puts ("A - as file name means read names from stdin (one per line)."); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
615 if (!CTAGS) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
616 printf (" Absolute names are stored in the output file as they are.\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
617 Relative ones are stored relative to the output file's directory."); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
618 puts ("\n"); |
621 | 619 |
4126
9a906e5f9b28
* etags.c (print_help): Break up the very long strings containing
Jim Blandy <jimb@redhat.com>
parents:
4052
diff
changeset
|
620 puts ("-a, --append\n\ |
9a906e5f9b28
* etags.c (print_help): Break up the very long strings containing
Jim Blandy <jimb@redhat.com>
parents:
4052
diff
changeset
|
621 Append tag entries to existing tags file."); |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
622 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
623 puts ("--packages-only\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
624 For Ada files, only generate tags for packages ."); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
625 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
626 if (CTAGS) |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
627 puts ("-B, --backward-search\n\ |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
628 Write the search commands for the tag entries using '?', the\n\ |
6945
63ab519f7057
* etags.c (main, print_help): eliminate the -F option.
Francesco Potortì <pot@gnu.org>
parents:
6944
diff
changeset
|
629 backward-search command instead of '/', the forward-search command."); |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
630 |
4126
9a906e5f9b28
* etags.c (print_help): Break up the very long strings containing
Jim Blandy <jimb@redhat.com>
parents:
4052
diff
changeset
|
631 puts ("-C, --c++\n\ |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
632 Treat files whose name suffix defaults to C language as C++ files."); |
621 | 633 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
634 puts ("--declarations\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
635 In C and derived languages, create tags for function declarations,"); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
636 if (CTAGS) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
637 puts ("\tand create tags for extern variables if --globals is used."); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
638 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
639 puts |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
640 ("\tand create tags for extern variables unless --no-globals is used."); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
641 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
642 if (CTAGS) |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
643 puts ("-d, --defines\n\ |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
644 Create tag entries for C #define constants and enum constants, too."); |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
645 else |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
646 puts ("-D, --no-defines\n\ |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
647 Don't create tag entries for C #define constants and enum constants.\n\ |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
648 This makes the tags file smaller."); |
621 | 649 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
650 if (!CTAGS) |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
651 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
652 puts ("-i FILE, --include=FILE\n\ |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
653 Include a note in tag file indicating that, when searching for\n\ |
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
654 a tag, one should also consult the tags file FILE after\n\ |
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
655 checking the current file."); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
656 puts ("-l LANG, --language=LANG\n\ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
657 Force the following files to be considered as written in the\n\ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
658 named language up to the next --language=LANG option."); |
10047
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
659 } |
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
660 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
661 if (CTAGS) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
662 puts ("--globals\n\ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
663 Create tag entries for global variables in some languages."); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
664 else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
665 puts ("--no-globals\n\ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
666 Do not create tag entries for global variables in some\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
667 languages. This makes the tags file smaller."); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
668 puts ("--members\n\ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
669 Create tag entries for member variables in C and derived languages."); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
670 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
671 #ifdef ETAGS_REGEXPS |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
672 puts ("-r /REGEXP/, --regex=/REGEXP/ or --regex=@regexfile\n\ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
673 Make a tag for each line matching pattern REGEXP in the following\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
674 files. {LANGUAGE}/REGEXP/ uses REGEXP for LANGUAGE files only.\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
675 regexfile is a file containing one REGEXP per line.\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
676 REGEXP is anchored (as if preceded by ^).\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
677 The form /REGEXP/NAME/ creates a named tag.\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
678 For example Tcl named tags can be created with:\n\ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
679 --regex=/proc[ \\t]+\\([^ \\t]+\\)/\\1/."); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
680 puts ("-c /REGEXP/, --ignore-case-regex=/REGEXP/ or --ignore-case-regex=@regexfile\n\ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
681 Like -r, --regex but ignore case when matching expressions."); |
10047
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
682 puts ("-R, --no-regex\n\ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
683 Don't create tags from regexps for the following files."); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
684 #endif /* ETAGS_REGEXPS */ |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
685 puts ("-o FILE, --output=FILE\n\ |
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
686 Write the tags to FILE."); |
10449
2266157d9bcc
* etags.c (longopts, print_help, main): Use -I as abbreviation
Francesco Potortì <pot@gnu.org>
parents:
10404
diff
changeset
|
687 puts ("-I, --ignore-indentation\n\ |
621 | 688 Don't rely on indentation quite as much as normal. Currently,\n\ |
689 this means not to assume that a closing brace in the first\n\ | |
690 column is the final brace of a function or structure\n\ | |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
691 definition in C and C++."); |
621 | 692 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
693 if (CTAGS) |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
694 { |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
695 puts ("-t, --typedefs\n\ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
696 Generate tag entries for C and Ada typedefs."); |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
697 puts ("-T, --typedefs-and-c++\n\ |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
698 Generate tag entries for C typedefs, C struct/enum/union tags,\n\ |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
699 and C++ member functions."); |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
700 puts ("-u, --update\n\ |
621 | 701 Update the tag entries for the given files, leaving tag\n\ |
702 entries for other files in place. Currently, this is\n\ | |
703 implemented by deleting the existing entries for the given\n\ | |
704 files and then rewriting the new entries at the end of the\n\ | |
705 tags file. It is often faster to simply rebuild the entire\n\ | |
4126
9a906e5f9b28
* etags.c (print_help): Break up the very long strings containing
Jim Blandy <jimb@redhat.com>
parents:
4052
diff
changeset
|
706 tag file than to use this."); |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
707 puts ("-v, --vgrind\n\ |
621 | 708 Generates an index of items intended for human consumption,\n\ |
709 similar to the output of vgrind. The index is sorted, and\n\ | |
4126
9a906e5f9b28
* etags.c (print_help): Break up the very long strings containing
Jim Blandy <jimb@redhat.com>
parents:
4052
diff
changeset
|
710 gives the page number of each item."); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
711 puts ("-w, --no-warn\n\ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
712 Suppress warning messages about entries defined in multiple\n\ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
713 files."); |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
714 puts ("-x, --cxref\n\ |
621 | 715 Like --vgrind, but in the style of cxref, rather than vgrind.\n\ |
716 The output uses line numbers instead of page numbers, but\n\ | |
717 beyond that the differences are cosmetic; try both to see\n\ | |
4126
9a906e5f9b28
* etags.c (print_help): Break up the very long strings containing
Jim Blandy <jimb@redhat.com>
parents:
4052
diff
changeset
|
718 which you like."); |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
719 } |
621 | 720 |
721 puts ("-V, --version\n\ | |
722 Print the version of the program.\n\ | |
10047
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
723 -h, --help\n\ |
621 | 724 Print this help message."); |
725 | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
726 print_language_names (); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
727 |
16373
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
728 puts (""); |
26323
98d99afb5ffb
* etags.c (print_help): Change email address to send bugs to.
Gerd Moellmann <gerd@gnu.org>
parents:
26262
diff
changeset
|
729 puts ("Report bugs to bug-gnu-emacs@gnu.org"); |
16373
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
730 |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
731 exit (GOOD); |
621 | 732 } |
733 | |
734 | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
735 enum argument_type |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
736 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
737 at_language, |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
738 at_regexp, |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
739 at_filename, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
740 at_icregexp |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
741 }; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
742 |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
743 /* This structure helps us allow mixing of --lang and file names. */ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
744 typedef struct |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
745 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
746 enum argument_type arg_type; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
747 char *what; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
748 language *lang; /* language of the regexp */ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
749 } argument; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
750 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
751 #ifdef VMS /* VMS specific functions */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
752 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
753 #define EOS '\0' |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
754 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
755 /* This is a BUG! ANY arbitrary limit is a BUG! |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
756 Won't someone please fix this? */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
757 #define MAX_FILE_SPEC_LEN 255 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
758 typedef struct { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
759 short curlen; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
760 char body[MAX_FILE_SPEC_LEN + 1]; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
761 } vspec; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
762 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
763 /* |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
764 v1.05 nmm 26-Jun-86 fn_exp - expand specification of list of file names |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
765 returning in each successive call the next file name matching the input |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
766 spec. The function expects that each in_spec passed |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
767 to it will be processed to completion; in particular, up to and |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
768 including the call following that in which the last matching name |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
769 is returned, the function ignores the value of in_spec, and will |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
770 only start processing a new spec with the following call. |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
771 If an error occurs, on return out_spec contains the value |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
772 of in_spec when the error occurred. |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
773 |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
774 With each successive file name returned in out_spec, the |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
775 function's return value is one. When there are no more matching |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
776 names the function returns zero. If on the first call no file |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
777 matches in_spec, or there is any other error, -1 is returned. |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
778 */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
779 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
780 #include <rmsdef.h> |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
781 #include <descrip.h> |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
782 #define OUTSIZE MAX_FILE_SPEC_LEN |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
783 static short |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
784 fn_exp (out, in) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
785 vspec *out; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
786 char *in; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
787 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
788 static long context = 0; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
789 static struct dsc$descriptor_s o; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
790 static struct dsc$descriptor_s i; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
791 static bool pass1 = TRUE; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
792 long status; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
793 short retval; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
794 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
795 if (pass1) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
796 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
797 pass1 = FALSE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
798 o.dsc$a_pointer = (char *) out; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
799 o.dsc$w_length = (short)OUTSIZE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
800 i.dsc$a_pointer = in; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
801 i.dsc$w_length = (short)strlen(in); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
802 i.dsc$b_dtype = DSC$K_DTYPE_T; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
803 i.dsc$b_class = DSC$K_CLASS_S; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
804 o.dsc$b_dtype = DSC$K_DTYPE_VT; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
805 o.dsc$b_class = DSC$K_CLASS_VS; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
806 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
807 if ((status = lib$find_file(&i, &o, &context, 0, 0)) == RMS$_NORMAL) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
808 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
809 out->body[out->curlen] = EOS; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
810 return 1; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
811 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
812 else if (status == RMS$_NMF) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
813 retval = 0; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
814 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
815 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
816 strcpy(out->body, in); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
817 retval = -1; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
818 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
819 lib$find_file_end(&context); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
820 pass1 = TRUE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
821 return retval; |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
822 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
823 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
824 /* |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
825 v1.01 nmm 19-Aug-85 gfnames - return in successive calls the |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
826 name of each file specified by the provided arg expanding wildcards. |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
827 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
828 static char * |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
829 gfnames (arg, p_error) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
830 char *arg; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
831 bool *p_error; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
832 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
833 static vspec filename = {MAX_FILE_SPEC_LEN, "\0"}; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
834 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
835 switch (fn_exp (&filename, arg)) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
836 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
837 case 1: |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
838 *p_error = FALSE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
839 return filename.body; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
840 case 0: |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
841 *p_error = FALSE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
842 return NULL; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
843 default: |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
844 *p_error = TRUE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
845 return filename.body; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
846 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
847 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
848 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
849 #ifndef OLD /* Newer versions of VMS do provide `system'. */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
850 system (cmd) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
851 char *cmd; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
852 { |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
853 error ("%s", "system() function not implemented under VMS"); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
854 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
855 #endif |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
856 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
857 #define VERSION_DELIM ';' |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
858 char *massage_name (s) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
859 char *s; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
860 { |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
861 char *start = s; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
862 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
863 for ( ; *s; s++) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
864 if (*s == VERSION_DELIM) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
865 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
866 *s = EOS; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
867 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
868 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
869 else |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
870 *s = lowcase (*s); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
871 return start; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
872 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
873 #endif /* VMS */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
874 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
875 |
15683 | 876 int |
240 | 877 main (argc, argv) |
878 int argc; | |
879 char *argv[]; | |
880 { | |
881 int i; | |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
882 unsigned int nincluded_files; |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
883 char **included_files; |
240 | 884 char *this_file; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
885 argument *argbuffer; |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
886 int current_arg, file_count; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
887 linebuffer filename_lb; |
240 | 888 #ifdef VMS |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
889 bool got_err; |
240 | 890 #endif |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
891 |
9773
bd49556a7552
(main, etags_getcwd): Test DOS_NT instead of MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
9635
diff
changeset
|
892 #ifdef DOS_NT |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
893 _fmode = O_BINARY; /* all of files are treated as binary files */ |
9773
bd49556a7552
(main, etags_getcwd): Test DOS_NT instead of MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
9635
diff
changeset
|
894 #endif /* DOS_NT */ |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
5044
diff
changeset
|
895 |
240 | 896 progname = argv[0]; |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
897 nincluded_files = 0; |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
898 included_files = xnew (argc, char *); |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
899 current_arg = 0; |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
900 file_count = 0; |
240 | 901 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
902 /* Allocate enough no matter what happens. Overkill, but each one |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
903 is small. */ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
904 argbuffer = xnew (argc, argument); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
905 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
906 #ifdef ETAGS_REGEXPS |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
907 /* Set syntax for regular expression routines. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
908 re_set_syntax (RE_SYNTAX_EMACS | RE_INTERVALS); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
909 /* Translation table for case-insensitive search. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
910 for (i = 0; i < CHAR_SET_SIZE; i++) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
911 lc_trans[i] = lowcase (i); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
912 #endif /* ETAGS_REGEXPS */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
913 |
240 | 914 /* |
915 * If etags, always find typedefs and structure tags. Why not? | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
916 * Also default is to find macro constants, enum constants and |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
917 * global variables. |
240 | 918 */ |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
919 if (!CTAGS) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
920 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
921 typedefs = typedefs_and_cplusplus = constantypedefs = TRUE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
922 globals = TRUE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
923 members = FALSE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
924 } |
240 | 925 |
9975
e21b0674f37c
* etags.c (<errno.h>): #include added.
Francesco Potortì <pot@gnu.org>
parents:
9773
diff
changeset
|
926 while (1) |
240 | 927 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
928 int opt; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
929 char *optstring; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
930 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
931 #ifdef ETAGS_REGEXPS |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
932 optstring = "-aCdDf:Il:o:r:c:RStTi:BuvxwVhH"; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
933 #else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
934 optstring = "-aCdDf:Il:o:StTi:BuvxwVhH"; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
935 #endif /* ETAGS_REGEXPS */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
936 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
937 #ifndef LONG_OPTIONS |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
938 optstring = optstring + 1; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
939 #endif /* LONG_OPTIONS */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
940 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
941 opt = getopt_long (argc, argv, optstring, longopts, 0); |
621 | 942 if (opt == EOF) |
943 break; | |
944 | |
945 switch (opt) | |
240 | 946 { |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
947 case 0: |
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
948 /* If getopt returns 0, then it has already processed a |
621 | 949 long-named option. We should do nothing. */ |
950 break; | |
240 | 951 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
952 case 1: |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
953 /* This means that a file name has been seen. Record it. */ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
954 argbuffer[current_arg].arg_type = at_filename; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
955 argbuffer[current_arg].what = optarg; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
956 ++current_arg; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
957 ++file_count; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
958 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
959 |
621 | 960 /* Common options. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
961 case 'a': append_to_tagfile = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
962 case 'C': cplusplus = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
963 case 'd': constantypedefs = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
964 case 'D': constantypedefs = FALSE; break; |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
965 case 'f': /* for compatibility with old makefiles */ |
621 | 966 case 'o': |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
967 if (tagfile) |
621 | 968 { |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
969 error ("-o option may only be given once.", (char *)NULL); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
970 suggest_asking_for_help (); |
240 | 971 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
972 tagfile = optarg; |
621 | 973 break; |
10449
2266157d9bcc
* etags.c (longopts, print_help, main): Use -I as abbreviation
Francesco Potortì <pot@gnu.org>
parents:
10404
diff
changeset
|
974 case 'I': |
2266157d9bcc
* etags.c (longopts, print_help, main): Use -I as abbreviation
Francesco Potortì <pot@gnu.org>
parents:
10404
diff
changeset
|
975 case 'S': /* for backward compatibility */ |
2266157d9bcc
* etags.c (longopts, print_help, main): Use -I as abbreviation
Francesco Potortì <pot@gnu.org>
parents:
10404
diff
changeset
|
976 noindentypedefs = TRUE; |
2266157d9bcc
* etags.c (longopts, print_help, main): Use -I as abbreviation
Francesco Potortì <pot@gnu.org>
parents:
10404
diff
changeset
|
977 break; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
978 case 'l': |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
979 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
980 language *lang = get_language_from_name (optarg); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
981 if (lang != NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
982 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
983 argbuffer[current_arg].lang = lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
984 argbuffer[current_arg].arg_type = at_language; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
985 ++current_arg; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
986 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
987 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
988 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
989 #ifdef ETAGS_REGEXPS |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
990 case 'r': |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
991 argbuffer[current_arg].arg_type = at_regexp; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
992 argbuffer[current_arg].what = optarg; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
993 ++current_arg; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
994 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
995 case 'R': |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
996 argbuffer[current_arg].arg_type = at_regexp; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
997 argbuffer[current_arg].what = NULL; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
998 ++current_arg; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
999 break; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1000 case 'c': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1001 argbuffer[current_arg].arg_type = at_icregexp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1002 argbuffer[current_arg].what = optarg; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1003 ++current_arg; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1004 break; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1005 #endif /* ETAGS_REGEXPS */ |
621 | 1006 case 'V': |
1007 print_version (); | |
1008 break; | |
10047
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
1009 case 'h': |
621 | 1010 case 'H': |
1011 print_help (); | |
1012 break; | |
8180
c98f9acb71e3
* etags.c (main): Don't barf on obsolete -t and -T switches.
Francesco Potortì <pot@gnu.org>
parents:
7776
diff
changeset
|
1013 case 't': |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1014 typedefs = TRUE; |
8180
c98f9acb71e3
* etags.c (main): Don't barf on obsolete -t and -T switches.
Francesco Potortì <pot@gnu.org>
parents:
7776
diff
changeset
|
1015 break; |
c98f9acb71e3
* etags.c (main): Don't barf on obsolete -t and -T switches.
Francesco Potortì <pot@gnu.org>
parents:
7776
diff
changeset
|
1016 case 'T': |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1017 typedefs = typedefs_and_cplusplus = TRUE; |
8180
c98f9acb71e3
* etags.c (main): Don't barf on obsolete -t and -T switches.
Francesco Potortì <pot@gnu.org>
parents:
7776
diff
changeset
|
1018 break; |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
1019 #if (!CTAGS) |
621 | 1020 /* Etags options */ |
1021 case 'i': | |
1022 included_files[nincluded_files++] = optarg; | |
1023 break; | |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
1024 #else /* CTAGS */ |
621 | 1025 /* Ctags options. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1026 case 'B': searchar = '?'; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1027 case 'u': update = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1028 case 'v': vgrind_style = TRUE; /*FALLTHRU*/ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1029 case 'x': cxref_style = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1030 case 'w': no_warnings = TRUE; break; |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
1031 #endif /* CTAGS */ |
621 | 1032 default: |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1033 suggest_asking_for_help (); |
240 | 1034 } |
1035 } | |
1036 | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1037 for (; optind < argc; ++optind) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1038 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1039 argbuffer[current_arg].arg_type = at_filename; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1040 argbuffer[current_arg].what = argv[optind]; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1041 ++current_arg; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1042 ++file_count; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1043 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1044 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1045 if (nincluded_files == 0 && file_count == 0) |
240 | 1046 { |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
1047 error ("no input files specified.", (char *)NULL); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1048 suggest_asking_for_help (); |
240 | 1049 } |
1050 | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1051 if (tagfile == NULL) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
1052 tagfile = CTAGS ? "tags" : "TAGS"; |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
1053 cwd = etags_getcwd (); /* the current working directory */ |
15366
32ab7b623b9b
(main): Copy cwd when appending slash.
Richard M. Stallman <rms@gnu.org>
parents:
15243
diff
changeset
|
1054 if (cwd[strlen (cwd) - 1] != '/') |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
1055 { |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
1056 char *oldcwd = cwd; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
1057 cwd = concat (oldcwd, "/", ""); |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
1058 free (oldcwd); |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
1059 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1060 if (streq (tagfile, "-")) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
1061 tagfiledir = cwd; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1062 else |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
1063 tagfiledir = absolute_dirname (tagfile, cwd); |
240 | 1064 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1065 init (); /* set up boolean "functions" */ |
240 | 1066 |
1067 initbuffer (&lb); | |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
1068 initbuffer (&token_name); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1069 initbuffer (&lbs[0].lb); |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1070 initbuffer (&lbs[1].lb); |
240 | 1071 initbuffer (&filename_lb); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1072 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1073 if (!CTAGS) |
240 | 1074 { |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1075 if (streq (tagfile, "-")) |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1076 { |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1077 tagf = stdout; |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1078 #ifdef DOS_NT |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1079 /* Switch redirected `stdout' to binary mode (setting `_fmode' |
15243
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
1080 doesn't take effect until after `stdout' is already open). */ |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1081 if (!isatty (fileno (stdout))) |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1082 setmode (fileno (stdout), O_BINARY); |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1083 #endif /* DOS_NT */ |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1084 } |
240 | 1085 else |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1086 tagf = fopen (tagfile, append_to_tagfile ? "a" : "w"); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1087 if (tagf == NULL) |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
1088 pfatal (tagfile); |
240 | 1089 } |
1090 | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1091 /* |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1092 * Loop through files finding functions. |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1093 */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1094 for (i = 0; i < current_arg; ++i) |
240 | 1095 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1096 switch (argbuffer[i].arg_type) |
240 | 1097 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1098 case at_language: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1099 forced_lang = argbuffer[i].lang; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1100 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1101 #ifdef ETAGS_REGEXPS |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1102 case at_regexp: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1103 analyse_regex (argbuffer[i].what, FALSE); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1104 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1105 case at_icregexp: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1106 analyse_regex (argbuffer[i].what, TRUE); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1107 break; |
240 | 1108 #endif |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1109 case at_filename: |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1110 #ifdef VMS |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1111 while ((this_file = gfnames (argbuffer[i].what, &got_err)) != NULL) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1112 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1113 if (got_err) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1114 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1115 error ("can't find file %s\n", this_file); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1116 argc--, argv++; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1117 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1118 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1119 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1120 this_file = massage_name (this_file); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1121 } |
240 | 1122 #else |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1123 this_file = argbuffer[i].what; |
240 | 1124 #endif |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1125 /* Input file named "-" means read file names from stdin |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1126 (one per line) and use them. */ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1127 if (streq (this_file, "-")) |
10761
7aa80669e697
* etags.c (C_entries): Bug corrected in xrealloc of token_str.
Francesco Potortì <pot@gnu.org>
parents:
10754
diff
changeset
|
1128 while (readline_internal (&filename_lb, stdin) > 0) |
7aa80669e697
* etags.c (C_entries): Bug corrected in xrealloc of token_str.
Francesco Potortì <pot@gnu.org>
parents:
10754
diff
changeset
|
1129 process_file (filename_lb.buffer); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1130 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1131 process_file (this_file); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1132 #ifdef VMS |
240 | 1133 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1134 #endif |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1135 break; |
240 | 1136 } |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1137 } |
10761
7aa80669e697
* etags.c (C_entries): Bug corrected in xrealloc of token_str.
Francesco Potortì <pot@gnu.org>
parents:
10754
diff
changeset
|
1138 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1139 #ifdef ETAGS_REGEXPS |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1140 free_patterns (); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1141 #endif /* ETAGS_REGEXPS */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1142 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1143 if (!CTAGS) |
240 | 1144 { |
401 | 1145 while (nincluded_files-- > 0) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1146 fprintf (tagf, "\f\n%s,include\n", *included_files++); |
401 | 1147 |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1148 fclose (tagf); |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
1149 exit (GOOD); |
240 | 1150 } |
1151 | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1152 /* If CTAGS, we are here. process_file did not write the tags yet, |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1153 because we want them ordered. Let's do it now. */ |
240 | 1154 if (cxref_style) |
1155 { | |
1156 put_entries (head); | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1157 free_tree (head); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1158 head = NULL; |
240 | 1159 exit (GOOD); |
1160 } | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1161 |
621 | 1162 if (update) |
240 | 1163 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1164 char cmd[BUFSIZ]; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1165 for (i = 0; i < current_arg; ++i) |
240 | 1166 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1167 if (argbuffer[i].arg_type != at_filename) |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1168 continue; |
240 | 1169 sprintf (cmd, |
1170 "mv %s OTAGS;fgrep -v '\t%s\t' OTAGS >%s;rm OTAGS", | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1171 tagfile, argbuffer[i].what, tagfile); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1172 if (system (cmd) != GOOD) |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
1173 fatal ("failed to execute shell command", (char *)NULL); |
240 | 1174 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1175 append_to_tagfile = TRUE; |
240 | 1176 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1177 |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1178 tagf = fopen (tagfile, append_to_tagfile ? "a" : "w"); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1179 if (tagf == NULL) |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1180 pfatal (tagfile); |
240 | 1181 put_entries (head); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1182 free_tree (head); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1183 head = NULL; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1184 fclose (tagf); |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1185 |
240 | 1186 if (update) |
1187 { | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1188 char cmd[BUFSIZ]; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1189 sprintf (cmd, "sort %s -o %s", tagfile, tagfile); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1190 exit (system (cmd)); |
240 | 1191 } |
16373
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
1192 return GOOD; |
240 | 1193 } |
1194 | |
1195 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1196 |
240 | 1197 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1198 * Return a compressor given the file name. If EXTPTR is non-zero, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1199 * return a pointer into FILE where the compressor-specific |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1200 * extension begins. If no compressor is found, NULL is returned |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1201 * and EXTPTR is not significant. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1202 * Idea by Vladimir Alexiev <vladimir@cs.ualberta.ca> |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1203 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1204 static compressor * |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1205 get_compressor_from_suffix (file, extptr) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1206 char *file; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1207 char **extptr; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1208 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1209 compressor *compr; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1210 char *slash, *suffix; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1211 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1212 /* This relies on FN to be after canonicalize_filename, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1213 so we don't need to consider backslashes on DOS_NT. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1214 slash = etags_strrchr (file, '/'); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1215 suffix = etags_strrchr (file, '.'); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1216 if (suffix == NULL || suffix < slash) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1217 return NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1218 if (extptr != NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1219 *extptr = suffix; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1220 suffix += 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1221 /* Let those poor souls who live with DOS 8+3 file name limits get |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1222 some solace by treating foo.cgz as if it were foo.c.gz, etc. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1223 Only the first do loop is run if not MSDOS */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1224 do |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1225 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1226 for (compr = compressors; compr->suffix != NULL; compr++) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1227 if (streq (compr->suffix, suffix)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1228 return compr; |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1229 if (!MSDOS) |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1230 break; /* do it only once: not really a loop */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1231 if (extptr != NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1232 *extptr = ++suffix; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1233 } while (*suffix != '\0'); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1234 return NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1235 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1236 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1237 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1238 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1239 /* |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1240 * Return a language given the name. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1241 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1242 static language * |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1243 get_language_from_name (name) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1244 char *name; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1245 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1246 language *lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1247 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1248 if (name == NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1249 error ("empty language name", (char *)NULL); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1250 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1251 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1252 for (lang = lang_names; lang->name != NULL; lang++) |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1253 if (streq (name, lang->name)) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1254 return lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1255 error ("unknown language \"%s\"", name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1256 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1257 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1258 return NULL; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1259 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1260 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1261 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1262 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1263 * Return a language given the interpreter name. |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1264 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1265 static language * |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1266 get_language_from_interpreter (interpreter) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1267 char *interpreter; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1268 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1269 language *lang; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1270 char **iname; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1271 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1272 if (interpreter == NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1273 return NULL; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1274 for (lang = lang_names; lang->name != NULL; lang++) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1275 if (lang->interpreters != NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1276 for (iname = lang->interpreters; *iname != NULL; iname++) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1277 if (streq (*iname, interpreter)) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1278 return lang; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1279 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1280 return NULL; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1281 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1282 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1283 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1284 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1285 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1286 * Return a language given the file name. |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1287 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1288 static language * |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1289 get_language_from_suffix (file) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1290 char *file; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1291 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1292 language *lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1293 char **ext, *suffix; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1294 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1295 suffix = etags_strrchr (file, '.'); |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1296 if (suffix == NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1297 return NULL; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1298 suffix += 1; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1299 for (lang = lang_names; lang->name != NULL; lang++) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1300 if (lang->suffixes != NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1301 for (ext = lang->suffixes; *ext != NULL; ext++) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1302 if (streq (*ext, suffix)) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1303 return lang; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1304 return NULL; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1305 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1306 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1307 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1308 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1309 /* |
240 | 1310 * This routine is called on each file argument. |
1311 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1312 static void |
240 | 1313 process_file (file) |
1314 char *file; | |
1315 { | |
1316 struct stat stat_buf; | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1317 FILE *inf; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1318 compressor *compr; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1319 char *compressed_name, *uncompressed_name; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1320 char *ext, *real_name; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1321 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1322 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1323 canonicalize_filename (file); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1324 if (streq (file, tagfile) && !streq (tagfile, "-")) |
240 | 1325 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1326 error ("skipping inclusion of %s in self.", file); |
240 | 1327 return; |
1328 } | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1329 if ((compr = get_compressor_from_suffix (file, &ext)) == NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1330 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1331 compressed_name = NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1332 real_name = uncompressed_name = savestr (file); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1333 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1334 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1335 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1336 real_name = compressed_name = savestr (file); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1337 uncompressed_name = savenstr (file, ext - file); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1338 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1339 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1340 /* If the canonicalised uncompressed name has already be dealt with, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1341 skip it silently, else add it to the list. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1342 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1343 typedef struct processed_file |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1344 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1345 char *filename; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1346 struct processed_file *next; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1347 } processed_file; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1348 static processed_file *pf_head = NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1349 register processed_file *fnp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1350 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1351 for (fnp = pf_head; fnp != NULL; fnp = fnp->next) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1352 if (streq (uncompressed_name, fnp->filename)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1353 goto exit; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1354 fnp = pf_head; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1355 pf_head = xnew (1, struct processed_file); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1356 pf_head->filename = savestr (uncompressed_name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1357 pf_head->next = fnp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1358 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1359 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1360 if (stat (real_name, &stat_buf) != 0) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1361 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1362 /* Reset real_name and try with a different name. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1363 real_name = NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1364 if (compressed_name != NULL) /* try with the given suffix */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1365 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1366 if (stat (uncompressed_name, &stat_buf) == 0) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1367 real_name = uncompressed_name; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1368 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1369 else /* try all possible suffixes */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1370 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1371 for (compr = compressors; compr->suffix != NULL; compr++) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1372 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1373 compressed_name = concat (file, ".", compr->suffix); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1374 if (stat (compressed_name, &stat_buf) != 0) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1375 { |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1376 if (MSDOS) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1377 { |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1378 char *suf = compressed_name + strlen (file); |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1379 size_t suflen = strlen (compr->suffix) + 1; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1380 for ( ; suf[1]; suf++, suflen--) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1381 { |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1382 memmove (suf, suf + 1, suflen); |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1383 if (stat (compressed_name, &stat_buf) == 0) |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1384 { |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1385 real_name = compressed_name; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1386 break; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1387 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1388 } |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1389 if (real_name != NULL) |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1390 break; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1391 } /* MSDOS */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1392 free (compressed_name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1393 compressed_name = NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1394 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1395 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1396 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1397 real_name = compressed_name; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1398 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1399 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1400 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1401 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1402 if (real_name == NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1403 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1404 perror (file); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1405 goto exit; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1406 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1407 } /* try with a different name */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1408 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1409 if (!S_ISREG (stat_buf.st_mode)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1410 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1411 error ("skipping %s: it is not a regular file.", real_name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1412 goto exit; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1413 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1414 if (real_name == compressed_name) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1415 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1416 char *cmd = concat (compr->command, " ", real_name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1417 inf = popen (cmd, "r"); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1418 free (cmd); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1419 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1420 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1421 inf = fopen (real_name, "r"); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1422 if (inf == NULL) |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1423 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1424 perror (real_name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1425 goto exit; |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1426 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1427 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1428 find_entries (uncompressed_name, inf); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1429 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1430 if (real_name == compressed_name) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1431 pclose (inf); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1432 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1433 fclose (inf); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1434 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1435 if (!CTAGS) |
240 | 1436 { |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1437 char *filename; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1438 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1439 if (filename_is_absolute (uncompressed_name)) |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1440 { |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
1441 /* file is an absolute file name. Canonicalise it. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1442 filename = absolute_filename (uncompressed_name, cwd); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1443 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1444 else |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1445 { |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
1446 /* file is a file name relative to cwd. Make it relative |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1447 to the directory of the tags file. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1448 filename = relative_filename (uncompressed_name, tagfiledir); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1449 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1450 fprintf (tagf, "\f\n%s,%d\n", filename, total_size_of_entries (head)); |
10990
c0ceaa45ded7
* etags.c (process_file): free (filename) after using it.
Francesco Potortì <pot@gnu.org>
parents:
10801
diff
changeset
|
1451 free (filename); |
240 | 1452 put_entries (head); |
1453 free_tree (head); | |
1454 head = NULL; | |
1455 } | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1456 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1457 exit: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1458 if (compressed_name) free(compressed_name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1459 if (uncompressed_name) free(uncompressed_name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1460 return; |
240 | 1461 } |
1462 | |
1463 /* | |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3569
diff
changeset
|
1464 * This routine sets up the boolean pseudo-functions which work |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1465 * by setting boolean flags dependent upon the corresponding character. |
240 | 1466 * Every char which is NOT in that string is not a white char. Therefore, |
1467 * all of the array "_wht" is set to FALSE, and then the elements | |
1468 * subscripted by the chars in "white" are set to TRUE. Thus "_wht" | |
1469 * of a char is TRUE if it is the string "white", else FALSE. | |
1470 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1471 static void |
240 | 1472 init () |
1473 { | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1474 register char *sp; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1475 register int i; |
240 | 1476 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1477 for (i = 0; i < CHARS; i++) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1478 iswhite(i) = notinname(i) = begtoken(i) = intoken(i) = endtoken(i) = FALSE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1479 for (sp = white; *sp != '\0'; sp++) iswhite (*sp) = TRUE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1480 for (sp = nonam; *sp != '\0'; sp++) notinname (*sp) = TRUE; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
1481 notinname('\0') = notinname('\n'); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1482 for (sp = begtk; *sp != '\0'; sp++) begtoken (*sp) = TRUE; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
1483 begtoken('\0') = begtoken('\n'); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1484 for (sp = midtk; *sp != '\0'; sp++) intoken (*sp) = TRUE; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
1485 intoken('\0') = intoken('\n'); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1486 for (sp = endtk; *sp != '\0'; sp++) endtoken (*sp) = TRUE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1487 endtoken('\0') = endtoken('\n'); |
240 | 1488 } |
1489 | |
1490 /* | |
1491 * This routine opens the specified file and calls the function | |
1492 * which finds the function and type definitions. | |
1493 */ | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1494 node *last_node = NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1495 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1496 static void |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1497 find_entries (file, inf) |
240 | 1498 char *file; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1499 FILE *inf; |
240 | 1500 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1501 char *cp; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1502 language *lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1503 node *old_last_node; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1504 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1505 /* Memory leakage here: the string pointed by curfile is |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1506 never released, because curfile is copied into np->file |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1507 for each node, to be used in CTAGS mode. The amount of |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1508 memory leaked here is the sum of the lengths of the |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1509 file names. */ |
240 | 1510 curfile = savestr (file); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1511 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1512 /* If user specified a language, use it. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1513 lang = forced_lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1514 if (lang != NULL && lang->function != NULL) |
240 | 1515 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1516 curlang = lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1517 lang->function (inf); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1518 return; |
240 | 1519 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1520 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1521 /* Try to guess the language given the file name. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1522 lang = get_language_from_suffix (file); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1523 if (lang != NULL && lang->function != NULL) |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1524 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1525 curlang = lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1526 lang->function (inf); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1527 return; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1528 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1529 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1530 /* Look for sharp-bang as the first two characters. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1531 if (readline_internal (&lb, inf) > 0 |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
1532 && lb.len >= 2 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1533 && lb.buffer[0] == '#' |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1534 && lb.buffer[1] == '!') |
240 | 1535 { |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1536 char *lp; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1537 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1538 /* Set lp to point at the first char after the last slash in the |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1539 line or, if no slashes, at the first nonblank. Then set cp to |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1540 the first successive blank and terminate the string. */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1541 lp = etags_strrchr (lb.buffer+2, '/'); |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1542 if (lp != NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1543 lp += 1; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1544 else |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1545 lp = skip_spaces (lb.buffer + 2); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1546 cp = skip_non_spaces (lp); |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1547 *cp = '\0'; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1548 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1549 if (strlen (lp) > 0) |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1550 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1551 lang = get_language_from_interpreter (lp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1552 if (lang != NULL && lang->function != NULL) |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1553 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1554 curlang = lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1555 lang->function (inf); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1556 return; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1557 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1558 } |
240 | 1559 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1560 /* We rewind here, even if inf may be a pipe. We fail if the |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1561 length of the first line is longer than the pipe block size, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1562 which is unlikely. */ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1563 rewind (inf); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1564 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1565 /* Try Fortran. */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1566 old_last_node = last_node; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1567 curlang = get_language_from_name ("fortran"); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1568 Fortran_functions (inf); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1569 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1570 /* No Fortran entries found. Try C. */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1571 if (old_last_node == last_node) |
12344
7e7941d8cceb
* etags.c (find_entries): rewind before rereading the input file.
Francesco Potortì <pot@gnu.org>
parents:
12242
diff
changeset
|
1572 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1573 /* We do not tag if rewind fails. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1574 Only the file name will be recorded in the tags file. */ |
12344
7e7941d8cceb
* etags.c (find_entries): rewind before rereading the input file.
Francesco Potortì <pot@gnu.org>
parents:
12242
diff
changeset
|
1575 rewind (inf); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1576 curlang = get_language_from_name (cplusplus ? "c++" : "c"); |
12344
7e7941d8cceb
* etags.c (find_entries): rewind before rereading the input file.
Francesco Potortì <pot@gnu.org>
parents:
12242
diff
changeset
|
1577 default_C_entries (inf); |
7e7941d8cceb
* etags.c (find_entries): rewind before rereading the input file.
Francesco Potortì <pot@gnu.org>
parents:
12242
diff
changeset
|
1578 } |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1579 return; |
240 | 1580 } |
1581 | |
1582 /* Record a tag. */ | |
27658
5980f19581dc
(pfnote, new_pfnote, C_entries, prolog_pred, erlang_func): Add
Dave Love <fx@gnu.org>
parents:
27595
diff
changeset
|
1583 static void |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
1584 pfnote (name, is_func, linestart, linelen, lno, cno) |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1585 char *name; /* tag name, or NULL if unnamed */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1586 bool is_func; /* tag is a function */ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1587 char *linestart; /* start of the line where tag is */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1588 int linelen; /* length of the line where tag is */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1589 int lno; /* line number */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1590 long cno; /* character number */ |
240 | 1591 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1592 register node *np; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1593 |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1594 if (CTAGS && name == NULL) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1595 return; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1596 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1597 np = xnew (1, node); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1598 |
240 | 1599 /* If ctags mode, change name "main" to M<thisfilename>. */ |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1600 if (CTAGS && !cxref_style && streq (name, "main")) |
240 | 1601 { |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
1602 register char *fp = etags_strrchr (curfile, '/'); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1603 np->name = concat ("M", fp == NULL ? curfile : fp + 1, ""); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1604 fp = etags_strrchr (np->name, '.'); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1605 if (fp != NULL && fp[1] != '\0' && fp[2] == '\0') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1606 fp[0] = '\0'; |
240 | 1607 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1608 else |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
1609 np->name = name; |
10623
8a73e71a55e3
* etags.c (pfnote): Initialise been_warned in the node.
Francesco Potortì <pot@gnu.org>
parents:
10449
diff
changeset
|
1610 np->been_warned = FALSE; |
240 | 1611 np->file = curfile; |
1612 np->is_func = is_func; | |
1613 np->lno = lno; | |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
1614 /* Our char numbers are 0-base, because of C language tradition? |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
1615 ctags compatibility? old versions compatibility? I don't know. |
14021
19bab04cf346
(substitute): Fix spelling in message.
Karl Heuer <kwzh@gnu.org>
parents:
13696
diff
changeset
|
1616 Anyway, since emacs's are 1-base we expect etags.el to take care |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
1617 of the difference. If we wanted to have 1-based numbers, we would |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
1618 uncomment the +1 below. */ |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
1619 np->cno = cno /* + 1 */ ; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1620 np->left = np->right = NULL; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1621 if (CTAGS && !cxref_style) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1622 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1623 if (strlen (linestart) < 50) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1624 np->pat = concat (linestart, "$", ""); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1625 else |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1626 np->pat = savenstr (linestart, 50); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1627 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1628 else |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1629 np->pat = savenstr (linestart, linelen); |
240 | 1630 |
1631 add_node (np, &head); | |
1632 } | |
1633 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1634 /* Date: Wed, 22 Jan 1997 02:56:31 -0500 [last amended 18 Sep 1997] |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1635 * From: Sam Kendall <kendall@mv.mv.com> |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1636 * Subject: Proposal for firming up the TAGS format specification |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1637 * To: F.Potorti@cnuce.cnr.it |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1638 * |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1639 * pfnote should emit the optimized form [unnamed tag] only if: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1640 * 1. name does not contain any of the characters " \t\r\n(),;"; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1641 * 2. linestart contains name as either a rightmost, or rightmost but |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1642 * one character, substring; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1643 * 3. the character, if any, immediately before name in linestart must |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1644 * be one of the characters " \t(),;"; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1645 * 4. the character, if any, immediately after name in linestart must |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1646 * also be one of the characters " \t(),;". |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1647 * |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1648 * The real implementation uses the notinname() macro, which recognises |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1649 * characters slightly different form " \t\r\n(),;". See the variable |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1650 * `nonam'. |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1651 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1652 #define traditional_tag_style TRUE |
27658
5980f19581dc
(pfnote, new_pfnote, C_entries, prolog_pred, erlang_func): Add
Dave Love <fx@gnu.org>
parents:
27595
diff
changeset
|
1653 static void |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1654 new_pfnote (name, namelen, is_func, linestart, linelen, lno, cno) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1655 char *name; /* tag name, or NULL if unnamed */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1656 int namelen; /* tag length */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1657 bool is_func; /* tag is a function */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1658 char *linestart; /* start of the line where tag is */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1659 int linelen; /* length of the line where tag is */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1660 int lno; /* line number */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1661 long cno; /* character number */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1662 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1663 register char *cp; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1664 bool named; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1665 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1666 named = TRUE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1667 if (!CTAGS) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1668 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1669 for (cp = name; !notinname (*cp); cp++) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1670 continue; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1671 if (*cp == '\0') /* rule #1 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1672 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1673 cp = linestart + linelen - namelen; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1674 if (notinname (linestart[linelen-1])) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1675 cp -= 1; /* rule #4 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1676 if (cp >= linestart /* rule #2 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1677 && (cp == linestart |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1678 || notinname (cp[-1])) /* rule #3 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1679 && strneq (name, cp, namelen)) /* rule #2 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1680 named = FALSE; /* use unnamed tag */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1681 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1682 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1683 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1684 if (named) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1685 name = savenstr (name, namelen); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1686 else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1687 name = NULL; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1688 pfnote (name, is_func, linestart, linelen, lno, cno); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1689 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1690 |
240 | 1691 /* |
1692 * free_tree () | |
1693 * recurse on left children, iterate on right children. | |
1694 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1695 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1696 free_tree (np) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1697 register node *np; |
240 | 1698 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1699 while (np) |
240 | 1700 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1701 register node *node_right = np->right; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1702 free_tree (np->left); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1703 if (np->name != NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1704 free (np->name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1705 free (np->pat); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1706 free (np); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1707 np = node_right; |
240 | 1708 } |
1709 } | |
1710 | |
1711 /* | |
1712 * add_node () | |
1713 * Adds a node to the tree of nodes. In etags mode, we don't keep | |
1714 * it sorted; we just keep a linear list. In ctags mode, maintain | |
1715 * an ordered tree, with no attempt at balancing. | |
1716 * | |
1717 * add_node is the only function allowed to add nodes, so it can | |
1718 * maintain state. | |
1719 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1720 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1721 add_node (np, cur_node_p) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1722 node *np, **cur_node_p; |
240 | 1723 { |
1724 register int dif; | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1725 register node *cur_node = *cur_node_p; |
240 | 1726 |
1727 if (cur_node == NULL) | |
1728 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1729 *cur_node_p = np; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1730 last_node = np; |
240 | 1731 return; |
1732 } | |
1733 | |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1734 if (!CTAGS) |
240 | 1735 { |
1736 /* Etags Mode */ | |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
1737 if (last_node == NULL) |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
1738 fatal ("internal error in add_node", (char *)NULL); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1739 last_node->right = np; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1740 last_node = np; |
240 | 1741 } |
1742 else | |
1743 { | |
1744 /* Ctags Mode */ | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1745 dif = strcmp (np->name, cur_node->name); |
240 | 1746 |
1747 /* | |
1748 * If this tag name matches an existing one, then | |
1749 * do not add the node, but maybe print a warning. | |
1750 */ | |
1751 if (!dif) | |
1752 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1753 if (streq (np->file, cur_node->file)) |
240 | 1754 { |
1755 if (!no_warnings) | |
1756 { | |
1757 fprintf (stderr, "Duplicate entry in file %s, line %d: %s\n", | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1758 np->file, lineno, np->name); |
240 | 1759 fprintf (stderr, "Second entry ignored\n"); |
1760 } | |
1761 } | |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1762 else if (!cur_node->been_warned && !no_warnings) |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1763 { |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1764 fprintf |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1765 (stderr, |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1766 "Duplicate entry in files %s and %s: %s (Warning only)\n", |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1767 np->file, cur_node->file, np->name); |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1768 cur_node->been_warned = TRUE; |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1769 } |
240 | 1770 return; |
1771 } | |
1772 | |
1773 /* Actually add the node */ | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1774 add_node (np, dif < 0 ? &cur_node->left : &cur_node->right); |
240 | 1775 } |
1776 } | |
1777 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1778 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1779 put_entries (np) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1780 register node *np; |
240 | 1781 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1782 register char *sp; |
240 | 1783 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1784 if (np == NULL) |
240 | 1785 return; |
1786 | |
1787 /* Output subentries that precede this one */ | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1788 put_entries (np->left); |
240 | 1789 |
1790 /* Output this entry */ | |
1791 | |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1792 if (!CTAGS) |
240 | 1793 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1794 if (np->name != NULL) |
21355
b33f3f6d7f74
(put_entries): Use %ld.
Richard M. Stallman <rms@gnu.org>
parents:
20788
diff
changeset
|
1795 fprintf (tagf, "%s\177%s\001%d,%ld\n", |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1796 np->pat, np->name, np->lno, np->cno); |
240 | 1797 else |
21355
b33f3f6d7f74
(put_entries): Use %ld.
Richard M. Stallman <rms@gnu.org>
parents:
20788
diff
changeset
|
1798 fprintf (tagf, "%s\177%d,%ld\n", |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1799 np->pat, np->lno, np->cno); |
240 | 1800 } |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1801 else |
240 | 1802 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1803 if (np->name == NULL) |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
1804 error ("internal error: NULL name in ctags mode.", (char *)NULL); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1805 |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1806 if (cxref_style) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1807 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1808 if (vgrind_style) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1809 fprintf (stdout, "%s %s %d\n", |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1810 np->name, np->file, (np->lno + 63) / 64); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1811 else |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1812 fprintf (stdout, "%-16s %3d %-16s %s\n", |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1813 np->name, np->lno, np->file, np->pat); |
240 | 1814 } |
1815 else | |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1816 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1817 fprintf (tagf, "%s\t%s\t", np->name, np->file); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1818 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1819 if (np->is_func) |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1820 { /* a function */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1821 putc (searchar, tagf); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1822 putc ('^', tagf); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1823 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1824 for (sp = np->pat; *sp; sp++) |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1825 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1826 if (*sp == '\\' || *sp == searchar) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1827 putc ('\\', tagf); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1828 putc (*sp, tagf); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1829 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1830 putc (searchar, tagf); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1831 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1832 else |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1833 { /* a typedef; text pattern inadequate */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1834 fprintf (tagf, "%d", np->lno); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1835 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1836 putc ('\n', tagf); |
240 | 1837 } |
1838 } | |
1839 | |
1840 /* Output subentries that follow this one */ | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1841 put_entries (np->right); |
240 | 1842 } |
1843 | |
1844 /* Length of a number's decimal representation. */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1845 static int |
240 | 1846 number_len (num) |
1847 long num; | |
1848 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1849 int len = 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1850 while ((num /= 10) > 0) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1851 len += 1; |
240 | 1852 return len; |
1853 } | |
1854 | |
1855 /* | |
1856 * Return total number of characters that put_entries will output for | |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1857 * the nodes in the subtree of the specified node. Works only if |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1858 * we are not ctags, but called only in that case. This count |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1859 * is irrelevant with the new tags.el, but is still supplied for |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1860 * backward compatibility. |
240 | 1861 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1862 static int |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1863 total_size_of_entries (np) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1864 register node *np; |
240 | 1865 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1866 register int total; |
240 | 1867 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1868 if (np == NULL) |
240 | 1869 return 0; |
1870 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1871 for (total = 0; np != NULL; np = np->right) |
240 | 1872 { |
1873 /* Count left subentries. */ | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1874 total += total_size_of_entries (np->left); |
240 | 1875 |
1876 /* Count this entry */ | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1877 total += strlen (np->pat) + 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1878 total += number_len ((long) np->lno) + 1 + number_len (np->cno) + 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1879 if (np->name != NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1880 total += 1 + strlen (np->name); /* \001name */ |
240 | 1881 } |
1882 | |
1883 return total; | |
1884 } | |
1885 | |
1886 /* | |
1887 * The C symbol tables. | |
1888 */ | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1889 enum sym_type |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1890 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1891 st_none, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1892 st_C_objprot, st_C_objimpl, st_C_objend, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1893 st_C_gnumacro, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1894 st_C_ignore, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1895 st_C_javastruct, |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1896 st_C_operator, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1897 st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef, st_C_typespec |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1898 }; |
240 | 1899 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
1900 static unsigned int hash P_((const char *, unsigned int)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
1901 static struct C_stab_entry * in_word_set P_((const char *, unsigned int)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
1902 static enum sym_type C_symtype P_((char *, int, int)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
1903 |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1904 /* Feed stuff between (but not including) %[ and %] lines to: |
15579
690a439bcc0e
* etags.c (C_stab_entry): New keywords for C++ namespace, bool,
Francesco Potortì <pot@gnu.org>
parents:
15407
diff
changeset
|
1905 gperf -c -k 1,3 -o -p -r -t |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1906 %[ |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1907 struct C_stab_entry { char *name; int c_ext; enum sym_type type; } |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1908 %% |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1909 if, 0, st_C_ignore |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1910 for, 0, st_C_ignore |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1911 while, 0, st_C_ignore |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1912 switch, 0, st_C_ignore |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1913 return, 0, st_C_ignore |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1914 @interface, 0, st_C_objprot |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1915 @protocol, 0, st_C_objprot |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1916 @implementation,0, st_C_objimpl |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1917 @end, 0, st_C_objend |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1918 import, C_JAVA, st_C_ignore |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1919 package, C_JAVA, st_C_ignore |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1920 friend, C_PLPL, st_C_ignore |
17785
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
1921 extends, C_JAVA, st_C_javastruct |
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
1922 implements, C_JAVA, st_C_javastruct |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1923 interface, C_JAVA, st_C_struct |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1924 class, C_PLPL, st_C_struct |
15579
690a439bcc0e
* etags.c (C_stab_entry): New keywords for C++ namespace, bool,
Francesco Potortì <pot@gnu.org>
parents:
15407
diff
changeset
|
1925 namespace, C_PLPL, st_C_struct |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1926 domain, C_STAR, st_C_struct |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1927 union, 0, st_C_struct |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1928 struct, 0, st_C_struct |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1929 extern, 0, st_C_extern |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1930 enum, 0, st_C_enum |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1931 typedef, 0, st_C_typedef |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1932 define, 0, st_C_define |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1933 operator, C_PLPL, st_C_operator |
15579
690a439bcc0e
* etags.c (C_stab_entry): New keywords for C++ namespace, bool,
Francesco Potortì <pot@gnu.org>
parents:
15407
diff
changeset
|
1934 bool, C_PLPL, st_C_typespec |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1935 long, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1936 short, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1937 int, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1938 char, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1939 float, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1940 double, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1941 signed, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1942 unsigned, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1943 auto, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1944 void, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1945 static, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1946 const, 0, st_C_typespec |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1947 volatile, 0, st_C_typespec |
15579
690a439bcc0e
* etags.c (C_stab_entry): New keywords for C++ namespace, bool,
Francesco Potortì <pot@gnu.org>
parents:
15407
diff
changeset
|
1948 explicit, C_PLPL, st_C_typespec |
690a439bcc0e
* etags.c (C_stab_entry): New keywords for C++ namespace, bool,
Francesco Potortì <pot@gnu.org>
parents:
15407
diff
changeset
|
1949 mutable, C_PLPL, st_C_typespec |
690a439bcc0e
* etags.c (C_stab_entry): New keywords for C++ namespace, bool,
Francesco Potortì <pot@gnu.org>
parents:
15407
diff
changeset
|
1950 typename, C_PLPL, st_C_typespec |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1951 # DEFUN used in emacs, the next three used in glibc (SYSCALL only for mach). |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1952 DEFUN, 0, st_C_gnumacro |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1953 SYSCALL, 0, st_C_gnumacro |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1954 ENTRY, 0, st_C_gnumacro |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1955 PSEUDO, 0, st_C_gnumacro |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1956 # These are defined inside C functions, so currently they are not met. |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1957 # EXFUN used in glibc, DEFVAR_* in emacs. |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1958 #EXFUN, 0, st_C_gnumacro |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1959 #DEFVAR_, 0, st_C_gnumacro |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1960 %] |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1961 and replace lines between %< and %> with its output. */ |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1962 /*%<*/ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1963 /* C code produced by gperf version 2.7.1 (19981006 egcs) */ |
15579
690a439bcc0e
* etags.c (C_stab_entry): New keywords for C++ namespace, bool,
Francesco Potortì <pot@gnu.org>
parents:
15407
diff
changeset
|
1964 /* Command-line: gperf -c -k 1,3 -o -p -r -t */ |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1965 struct C_stab_entry { char *name; int c_ext; enum sym_type type; }; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1966 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1967 #define TOTAL_KEYWORDS 46 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1968 #define MIN_WORD_LENGTH 2 |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1969 #define MAX_WORD_LENGTH 15 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1970 #define MIN_HASH_VALUE 13 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1971 #define MAX_HASH_VALUE 123 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1972 /* maximum key range = 111, duplicates = 0 */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1973 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1974 #ifdef __GNUC__ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1975 __inline |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1976 #endif |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1977 static unsigned int |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1978 hash (str, len) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1979 register const char *str; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1980 register unsigned int len; |
240 | 1981 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1982 static unsigned char asso_values[] = |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1983 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1984 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1985 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1986 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1987 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1988 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1989 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1990 124, 124, 124, 124, 3, 124, 124, 124, 43, 6, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1991 11, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1992 11, 124, 124, 58, 7, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1993 124, 124, 124, 124, 124, 124, 124, 57, 7, 42, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1994 4, 14, 52, 0, 124, 53, 124, 124, 29, 11, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1995 6, 35, 32, 124, 29, 34, 59, 58, 51, 24, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1996 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1997 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1998 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1999 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2000 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2001 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2002 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2003 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2004 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2005 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2006 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2007 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2008 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2009 124, 124, 124, 124, 124, 124 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2010 }; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2011 register int hval = len; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2012 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2013 switch (hval) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2014 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2015 default: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2016 case 3: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2017 hval += asso_values[(unsigned char)str[2]]; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2018 case 2: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2019 case 1: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2020 hval += asso_values[(unsigned char)str[0]]; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2021 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2022 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2023 return hval; |
240 | 2024 } |
2025 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2026 #ifdef __GNUC__ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2027 __inline |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2028 #endif |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
2029 static struct C_stab_entry * |
15579
690a439bcc0e
* etags.c (C_stab_entry): New keywords for C++ namespace, bool,
Francesco Potortì <pot@gnu.org>
parents:
15407
diff
changeset
|
2030 in_word_set (str, len) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2031 register const char *str; |
15579
690a439bcc0e
* etags.c (C_stab_entry): New keywords for C++ namespace, bool,
Francesco Potortì <pot@gnu.org>
parents:
15407
diff
changeset
|
2032 register unsigned int len; |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2033 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2034 static struct C_stab_entry wordlist[] = |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2035 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2036 {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2037 {""}, {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2038 {"@end", 0, st_C_objend}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2039 {""}, {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2040 {"ENTRY", 0, st_C_gnumacro}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2041 {"@interface", 0, st_C_objprot}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2042 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2043 {"domain", C_STAR, st_C_struct}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2044 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2045 {"PSEUDO", 0, st_C_gnumacro}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2046 {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2047 {"namespace", C_PLPL, st_C_struct}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2048 {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2049 {"@implementation",0, st_C_objimpl}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2050 {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2051 {"long", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2052 {"signed", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2053 {"@protocol", 0, st_C_objprot}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2054 {""}, {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2055 {"bool", C_PLPL, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2056 {""}, {""}, {""}, {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2057 {"const", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2058 {"explicit", C_PLPL, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2059 {"if", 0, st_C_ignore}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2060 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2061 {"operator", C_PLPL, st_C_operator}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2062 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2063 {"DEFUN", 0, st_C_gnumacro}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2064 {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2065 {"define", 0, st_C_define}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2066 {""}, {""}, {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2067 {"double", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2068 {"struct", 0, st_C_struct}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2069 {""}, {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2070 {"short", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2071 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2072 {"enum", 0, st_C_enum}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2073 {"mutable", C_PLPL, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2074 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2075 {"extern", 0, st_C_extern}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2076 {"extends", C_JAVA, st_C_javastruct}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2077 {"package", C_JAVA, st_C_ignore}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2078 {"while", 0, st_C_ignore}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2079 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2080 {"for", 0, st_C_ignore}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2081 {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2082 {"volatile", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2083 {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2084 {"import", C_JAVA, st_C_ignore}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2085 {"float", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2086 {"switch", 0, st_C_ignore}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2087 {"return", 0, st_C_ignore}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2088 {"implements", C_JAVA, st_C_javastruct}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2089 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2090 {"static", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2091 {"typedef", 0, st_C_typedef}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2092 {"typename", C_PLPL, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2093 {"unsigned", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2094 {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2095 {"char", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2096 {"class", C_PLPL, st_C_struct}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2097 {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2098 {"void", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2099 {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2100 {"friend", C_PLPL, st_C_ignore}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2101 {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2102 {"int", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2103 {"union", 0, st_C_struct}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2104 {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2105 {"auto", 0, st_C_typespec}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2106 {"interface", C_JAVA, st_C_struct}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2107 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2108 {"SYSCALL", 0, st_C_gnumacro} |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2109 }; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2110 |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2111 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2112 { |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2113 register int key = hash (str, len); |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2114 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2115 if (key <= MAX_HASH_VALUE && key >= 0) |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2116 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2117 register const char *s = wordlist[key].name; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2118 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2119 if (*str == *s && !strncmp (str + 1, s + 1, len - 1)) |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2120 return &wordlist[key]; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2121 } |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2122 } |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2123 return 0; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2124 } |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2125 /*%>*/ |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2126 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
2127 static enum sym_type |
16573
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
2128 C_symtype (str, len, c_ext) |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2129 char *str; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2130 int len; |
240 | 2131 int c_ext; |
2132 { | |
16573
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
2133 register struct C_stab_entry *se = in_word_set (str, len); |
240 | 2134 |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2135 if (se == NULL || (se->c_ext && !(c_ext & se->c_ext))) |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2136 return st_none; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2137 return se->type; |
240 | 2138 } |
2139 | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2140 /* |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2141 * C functions and variables are recognized using a simple |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2142 * finite automaton. fvdef is its state variable. |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2143 */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2144 enum |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2145 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2146 fvnone, /* nothing seen */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2147 foperator, /* func: operator keyword seen (cplpl) */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2148 fvnameseen, /* function or variable name seen */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2149 fstartlist, /* func: just after open parenthesis */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2150 finlist, /* func: in parameter list */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2151 flistseen, /* func: after parameter list */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2152 fignore, /* func: before open brace */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2153 vignore /* var-like: ignore until ';' */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2154 } fvdef; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2155 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2156 bool fvextern; /* func or var: extern keyword seen; */ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2157 |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2158 /* |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2159 * typedefs are recognized using a simple finite automaton. |
14021
19bab04cf346
(substitute): Fix spelling in message.
Karl Heuer <kwzh@gnu.org>
parents:
13696
diff
changeset
|
2160 * typdef is its state variable. |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2161 */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2162 enum |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2163 { |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
2164 tnone, /* nothing seen */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2165 tkeyseen, /* typedef keyword seen */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2166 ttypeseen, /* defined type seen */ |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
2167 tinbody, /* inside typedef body */ |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2168 tend, /* just before typedef tag */ |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2169 tignore /* junk after typedef tag */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2170 } typdef; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2171 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2172 |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
2173 /* |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2174 * struct-like structures (enum, struct and union) are recognized |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2175 * using another simple finite automaton. `structdef' is its state |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2176 * variable. |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2177 */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2178 enum |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2179 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2180 snone, /* nothing seen yet */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2181 skeyseen, /* struct-like keyword seen */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2182 stagseen, /* struct-like tag seen */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2183 scolonseen, /* colon seen after struct-like tag */ |
5044
d3bd7baee39f
(FUNCST, TYPEDST, STRUCTST, DEFINEST): Delete excess commas.
Richard M. Stallman <rms@gnu.org>
parents:
4937
diff
changeset
|
2184 sinbody /* in struct body: recognize member func defs*/ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2185 } structdef; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2186 |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2187 /* |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2188 * When structdef is stagseen, scolonseen, or sinbody, structtag is the |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
2189 * struct tag, and structtype is the type of the preceding struct-like |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2190 * keyword. |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2191 */ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2192 char *structtag = "<uninited>"; |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2193 enum sym_type structtype; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2194 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2195 /* |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2196 * When objdef is different from onone, objtag is the name of the class. |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2197 */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2198 char *objtag = "<uninited>"; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2199 |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2200 /* |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2201 * Yet another little state machine to deal with preprocessor lines. |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2202 */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2203 enum |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2204 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2205 dnone, /* nothing seen */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2206 dsharpseen, /* '#' seen as first char on line */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2207 ddefineseen, /* '#' and 'define' seen */ |
5044
d3bd7baee39f
(FUNCST, TYPEDST, STRUCTST, DEFINEST): Delete excess commas.
Richard M. Stallman <rms@gnu.org>
parents:
4937
diff
changeset
|
2208 dignorerest /* ignore rest of line */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2209 } definedef; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2210 |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2211 /* |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2212 * State machine for Objective C protocols and implementations. |
17785
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
2213 * Tom R.Hageman <tom@basil.icce.rug.nl> |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2214 */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2215 enum |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2216 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2217 onone, /* nothing seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2218 oprotocol, /* @interface or @protocol seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2219 oimplementation, /* @implementations seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2220 otagseen, /* class name seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2221 oparenseen, /* parenthesis before category seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2222 ocatseen, /* category name seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2223 oinbody, /* in @implementation body */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2224 omethodsign, /* in @implementation body, after +/- */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2225 omethodtag, /* after method name */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2226 omethodcolon, /* after method colon */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2227 omethodparm, /* after method parameter */ |
14230
6b836f84bccf
(enum sym_type, anonymous enum): Delete final comma.
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
2228 oignore /* wait for @end */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2229 } objdef; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2230 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2231 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2232 /* |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2233 * Use this structure to keep info about the token read, and how it |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2234 * should be tagged. Used by the make_C_tag function to build a tag. |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2235 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2236 typedef struct |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2237 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2238 bool valid; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2239 char *str; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2240 bool named; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2241 int linelen; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2242 int lineno; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2243 long linepos; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2244 char *buffer; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2245 } token; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2246 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2247 token tok; /* latest token read */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2248 |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2249 /* |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2250 * Set this to TRUE, and the next token considered is called a function. |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
2251 * Used only for GNU emacs's function-defining macros. |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2252 */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2253 bool next_token_is_func; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2254 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2255 /* |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2256 * TRUE in the rules part of a yacc file, FALSE outside (parse as C). |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2257 */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2258 bool yacc_rules; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2259 |
240 | 2260 /* |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2261 * methodlen is the length of the method name stored in token_name. |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2262 */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2263 int methodlen; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2264 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
2265 static bool consider_token P_((char *, int, int, int, int, int, bool *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
2266 static void make_C_tag P_((bool)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
2267 |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2268 /* |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2269 * consider_token () |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2270 * checks to see if the current token is at the start of a |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2271 * function or variable, or corresponds to a typedef, or |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2272 * is a struct/union/enum tag, or #define, or an enum constant. |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2273 * |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2274 * *IS_FUNC gets TRUE iff the token is a function or #define macro |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2275 * with args. C_EXT is which language we are looking at. |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2276 * |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2277 * Globals |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2278 * fvdef IN OUT |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2279 * structdef IN OUT |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2280 * definedef IN OUT |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2281 * typdef IN OUT |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2282 * objdef IN OUT |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2283 * next_token_is_func IN OUT |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2284 */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2285 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
2286 static bool |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2287 consider_token (str, len, c, c_ext, cblev, parlev, is_func_or_var) |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2288 register char *str; /* IN: token pointer */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2289 register int len; /* IN: token length */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
2290 register int c; /* IN: first char after the token */ |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2291 int c_ext; /* IN: C extensions mask */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2292 int cblev; /* IN: curly brace level */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2293 int parlev; /* IN: parenthesis level */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2294 bool *is_func_or_var; /* OUT: function or variable found */ |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2295 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2296 enum sym_type toktype = C_symtype (str, len, c_ext); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2297 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2298 /* |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2299 * Advance the definedef state machine. |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2300 */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2301 switch (definedef) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2302 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2303 case dnone: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2304 /* We're not on a preprocessor line. */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2305 break; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2306 case dsharpseen: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2307 if (toktype == st_C_define) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2308 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2309 definedef = ddefineseen; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2310 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2311 else |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2312 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2313 definedef = dignorerest; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2314 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2315 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2316 case ddefineseen: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2317 /* |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2318 * Make a tag for any macro, unless it is a constant |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2319 * and constantypedefs is FALSE. |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2320 */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2321 definedef = dignorerest; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2322 *is_func_or_var = (c == '('); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2323 if (!*is_func_or_var && !constantypedefs) |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2324 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2325 else |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2326 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2327 case dignorerest: |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2328 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2329 default: |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2330 error ("internal error: definedef value.", (char *)NULL); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2331 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2332 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2333 /* |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2334 * Now typedefs |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2335 */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2336 switch (typdef) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2337 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2338 case tnone: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2339 if (toktype == st_C_typedef) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2340 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2341 if (typedefs) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2342 typdef = tkeyseen; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2343 fvextern = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2344 fvdef = fvnone; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2345 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2346 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2347 break; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2348 case tkeyseen: |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2349 switch (toktype) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2350 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2351 case st_none: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2352 case st_C_typespec: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2353 case st_C_struct: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2354 case st_C_enum: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2355 typdef = ttypeseen; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2356 break; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2357 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2358 /* Do not return here, so the structdef stuff has a chance. */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2359 break; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2360 case tend: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2361 switch (toktype) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2362 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2363 case st_C_typespec: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2364 case st_C_struct: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2365 case st_C_enum: |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2366 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2367 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2368 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2369 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2370 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2371 /* |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2372 * This structdef business is currently only invoked when cblev==0. |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2373 * It should be recursively invoked whatever the curly brace level, |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2374 * and a stack of states kept, to allow for definitions of structs |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2375 * within structs. |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2376 * |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2377 * This structdef business is NOT invoked when we are ctags and the |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2378 * file is plain C. This is because a struct tag may have the same |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2379 * name as another tag, and this loses with ctags. |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2380 */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2381 switch (toktype) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2382 { |
17785
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
2383 case st_C_javastruct: |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
2384 if (structdef == stagseen) |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
2385 structdef = scolonseen; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
2386 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2387 case st_C_struct: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2388 case st_C_enum: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2389 if (typdef == tkeyseen |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2390 || (typedefs_and_cplusplus && cblev == 0 && structdef == snone)) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2391 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2392 structdef = skeyseen; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2393 structtype = toktype; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2394 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2395 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2396 } |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2397 |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2398 if (structdef == skeyseen) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2399 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2400 /* Save the tag for struct/union/class, for functions and variables |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2401 that may be defined inside. */ |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2402 if (structtype == st_C_struct) |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2403 structtag = savenstr (str, len); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2404 else |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2405 structtag = "<enum>"; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2406 structdef = stagseen; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2407 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2408 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2409 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2410 if (typdef != tnone) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2411 definedef = dnone; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2412 |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2413 /* Detect GNU macros. |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2414 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2415 Writers of emacs code are recommended to put the |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2416 first two args of a DEFUN on the same line. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2417 |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2418 The DEFUN macro, used in emacs C source code, has a first arg |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2419 that is a string (the lisp function name), and a second arg that |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2420 is a C function name. Since etags skips strings, the second arg |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2421 is tagged. This is unfortunate, as it would be better to tag the |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2422 first arg. The simplest way to deal with this problem would be |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2423 to name the tag with a name built from the function name, by |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2424 removing the initial 'F' character and substituting '-' for '_'. |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2425 Anyway, this assumes that the conventions of naming lisp |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2426 functions will never change. Currently, this method is not |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2427 implemented. */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2428 if (definedef == dnone && toktype == st_C_gnumacro) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2429 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2430 next_token_is_func = TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2431 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2432 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2433 if (next_token_is_func) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2434 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2435 next_token_is_func = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2436 fvdef = fignore; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2437 *is_func_or_var = TRUE; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2438 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2439 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2440 |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2441 /* Detect Objective C constructs. */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2442 switch (objdef) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2443 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2444 case onone: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2445 switch (toktype) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2446 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2447 case st_C_objprot: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2448 objdef = oprotocol; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2449 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2450 case st_C_objimpl: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2451 objdef = oimplementation; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2452 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2453 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2454 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2455 case oimplementation: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2456 /* Save the class tag for functions or variables defined inside. */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2457 objtag = savenstr (str, len); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2458 objdef = oinbody; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2459 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2460 case oprotocol: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2461 /* Save the class tag for categories. */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2462 objtag = savenstr (str, len); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2463 objdef = otagseen; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2464 *is_func_or_var = TRUE; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2465 return TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2466 case oparenseen: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2467 objdef = ocatseen; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2468 *is_func_or_var = TRUE; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2469 return TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2470 case oinbody: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2471 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2472 case omethodsign: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2473 if (parlev == 0) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2474 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2475 objdef = omethodtag; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2476 methodlen = len; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2477 grow_linebuffer (&token_name, methodlen + 1); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2478 strncpy (token_name.buffer, str, len); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2479 token_name.buffer[methodlen] = '\0'; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2480 token_name.len = methodlen; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2481 return TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2482 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2483 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2484 case omethodcolon: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2485 if (parlev == 0) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2486 objdef = omethodparm; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2487 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2488 case omethodparm: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2489 if (parlev == 0) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2490 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2491 objdef = omethodtag; |
14144
beb39f795f21
(consider_token): Fix typo in expression.
Karl Heuer <kwzh@gnu.org>
parents:
14021
diff
changeset
|
2492 methodlen += len; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2493 grow_linebuffer (&token_name, methodlen + 1); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2494 strncat (token_name.buffer, str, len); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2495 token_name.len = methodlen; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2496 return TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2497 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2498 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2499 case oignore: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2500 if (toktype == st_C_objend) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2501 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2502 /* Memory leakage here: the string pointed by objtag is |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2503 never released, because many tests would be needed to |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2504 avoid breaking on incorrect input code. The amount of |
14021
19bab04cf346
(substitute): Fix spelling in message.
Karl Heuer <kwzh@gnu.org>
parents:
13696
diff
changeset
|
2505 memory leaked here is the sum of the lengths of the |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2506 class tags. |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2507 free (objtag); */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2508 objdef = onone; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2509 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2510 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2511 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2512 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2513 /* A function, variable or enum constant? */ |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2514 switch (toktype) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2515 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2516 case st_C_extern: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2517 fvextern = TRUE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2518 /* FALLTHRU */ |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2519 case st_C_typespec: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2520 if (fvdef != finlist && fvdef != fignore && fvdef != vignore) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2521 fvdef = fvnone; /* should be useless */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2522 return FALSE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2523 case st_C_ignore: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2524 fvextern = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2525 fvdef = vignore; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2526 return FALSE; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2527 case st_C_operator: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2528 fvdef = foperator; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2529 *is_func_or_var = TRUE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2530 return TRUE; |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2531 case st_none: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2532 if ((c_ext & C_PLPL) && strneq (str+len-10, "::operator", 10)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2533 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2534 fvdef = foperator; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2535 *is_func_or_var = TRUE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2536 return TRUE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2537 } |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2538 if (constantypedefs && structdef == sinbody && structtype == st_C_enum) |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2539 return TRUE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2540 if (fvdef == fvnone) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2541 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2542 fvdef = fvnameseen; /* function or variable */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2543 *is_func_or_var = TRUE; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2544 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2545 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2546 break; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2547 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2548 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2549 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2550 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2551 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2552 /* |
240 | 2553 * C_entries () |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2554 * This routine finds functions, variables, typedefs, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2555 * #define's, enum constants and struct/union/enum definitions in |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2556 * C syntax and adds them to the list. |
240 | 2557 */ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2558 #define current_lb_is_new (newndx == curndx) |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2559 #define switch_line_buffers() (curndx = 1 - curndx) |
240 | 2560 |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2561 #define curlb (lbs[curndx].lb) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2562 #define othlb (lbs[1-curndx].lb) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2563 #define newlb (lbs[newndx].lb) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2564 #define curlinepos (lbs[curndx].linepos) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2565 #define othlinepos (lbs[1-curndx].linepos) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2566 #define newlinepos (lbs[newndx].linepos) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2567 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2568 #define CNL_SAVE_DEFINEDEF() \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2569 do { \ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2570 curlinepos = charno; \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2571 lineno++; \ |
15243
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
2572 linecharno = charno; \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2573 charno += readline (&curlb, inf); \ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2574 lp = curlb.buffer; \ |
2004
6469a137fea6
(C_entries): New local variable quotednl. Used for
Richard M. Stallman <rms@gnu.org>
parents:
1938
diff
changeset
|
2575 quotednl = FALSE; \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2576 newndx = curndx; \ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2577 } while (0) |
240 | 2578 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2579 #define CNL() \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2580 do { \ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2581 CNL_SAVE_DEFINEDEF(); \ |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2582 if (savetok.valid) \ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2583 { \ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2584 tok = savetok; \ |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2585 savetok.valid = FALSE; \ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2586 } \ |
240 | 2587 definedef = dnone; \ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2588 } while (0) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2589 |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2590 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
2591 static void |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2592 make_C_tag (isfun) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2593 bool isfun; |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2594 { |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2595 /* This function should never be called when tok.valid is FALSE, but |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2596 we must protect against invalid input or internal errors. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2597 if (tok.valid) |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2598 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2599 if (traditional_tag_style) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2600 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2601 /* This was the original code. Now we call new_pfnote instead, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2602 which uses the new method for naming tags (see new_pfnote). */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2603 char *name = NULL; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2604 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2605 if (CTAGS || tok.named) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2606 name = savestr (token_name.buffer); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2607 pfnote (name, isfun, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2608 tok.buffer, tok.linelen, tok.lineno, tok.linepos); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2609 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2610 else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2611 new_pfnote (token_name.buffer, token_name.len, isfun, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2612 tok.buffer, tok.linelen, tok.lineno, tok.linepos); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2613 tok.valid = FALSE; |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2614 } |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2615 else if (DEBUG) |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2616 abort (); |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2617 } |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2618 |
240 | 2619 |
27658
5980f19581dc
(pfnote, new_pfnote, C_entries, prolog_pred, erlang_func): Add
Dave Love <fx@gnu.org>
parents:
27595
diff
changeset
|
2620 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2621 C_entries (c_ext, inf) |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2622 int c_ext; /* extension of C */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2623 FILE *inf; /* input file */ |
240 | 2624 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2625 register char c; /* latest char read; '\0' for end of line */ |
240 | 2626 register char *lp; /* pointer one beyond the character `c' */ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2627 int curndx, newndx; /* indices for current and new lb */ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2628 register int tokoff; /* offset in line of start of current token */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2629 register int toklen; /* length of current token */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2630 char *qualifier; /* string used to qualify names */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2631 int qlen; /* length of qualifier */ |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2632 int cblev; /* current curly brace level */ |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2633 int parlev; /* current parenthesis level */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2634 bool incomm, inquote, inchar, quotednl, midtoken; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2635 bool purec, cplpl, cjava; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2636 token savetok; /* token saved during preprocessor handling */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2637 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2638 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2639 tokoff = toklen = 0; /* keep compiler quiet */ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2640 curndx = newndx = 0; |
240 | 2641 lineno = 0; |
2642 charno = 0; | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2643 lp = curlb.buffer; |
240 | 2644 *lp = 0; |
2645 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2646 fvdef = fvnone; fvextern = FALSE; typdef = tnone; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2647 structdef = snone; definedef = dnone; objdef = onone; |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2648 next_token_is_func = yacc_rules = FALSE; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2649 midtoken = inquote = inchar = incomm = quotednl = FALSE; |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2650 tok.valid = savetok.valid = FALSE; |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2651 cblev = 0; |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2652 parlev = 0; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2653 purec = !(c_ext & ~YACC); /* no extensions (apart from possibly yacc) */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2654 cplpl = (c_ext & C_PLPL) == C_PLPL; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2655 cjava = (c_ext & C_JAVA) == C_JAVA; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2656 if (cjava) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2657 { qualifier = "."; qlen = 1; } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2658 else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2659 { qualifier = "::"; qlen = 2; } |
240 | 2660 |
2661 while (!feof (inf)) | |
2662 { | |
2663 c = *lp++; | |
2664 if (c == '\\') | |
2665 { | |
621 | 2666 /* If we're at the end of the line, the next character is a |
2667 '\0'; don't skip it, because it's the thing that tells us | |
2668 to read the next line. */ | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2669 if (*lp == '\0') |
2004
6469a137fea6
(C_entries): New local variable quotednl. Used for
Richard M. Stallman <rms@gnu.org>
parents:
1938
diff
changeset
|
2670 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2671 quotednl = TRUE; |
2004
6469a137fea6
(C_entries): New local variable quotednl. Used for
Richard M. Stallman <rms@gnu.org>
parents:
1938
diff
changeset
|
2672 continue; |
6469a137fea6
(C_entries): New local variable quotednl. Used for
Richard M. Stallman <rms@gnu.org>
parents:
1938
diff
changeset
|
2673 } |
401 | 2674 lp++; |
240 | 2675 c = ' '; |
2676 } | |
2677 else if (incomm) | |
2678 { | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2679 switch (c) |
240 | 2680 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2681 case '*': |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2682 if (*lp == '/') |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2683 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2684 c = *lp++; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2685 incomm = FALSE; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2686 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2687 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2688 case '\0': |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2689 /* Newlines inside comments do not end macro definitions in |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2690 traditional cpp. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2691 CNL_SAVE_DEFINEDEF (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2692 break; |
240 | 2693 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2694 continue; |
240 | 2695 } |
2696 else if (inquote) | |
2697 { | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2698 switch (c) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2699 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2700 case '"': |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2701 inquote = FALSE; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2702 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2703 case '\0': |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2704 /* Newlines inside strings do not end macro definitions |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2705 in traditional cpp, even though compilers don't |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2706 usually accept them. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2707 CNL_SAVE_DEFINEDEF (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2708 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2709 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2710 continue; |
240 | 2711 } |
2712 else if (inchar) | |
2713 { | |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2714 switch (c) |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2715 { |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2716 case '\0': |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2717 /* Hmmm, something went wrong. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2718 CNL (); |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2719 /* FALLTHRU */ |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2720 case '\'': |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2721 inchar = FALSE; |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2722 break; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2723 } |
240 | 2724 continue; |
2725 } | |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
2726 else |
240 | 2727 switch (c) |
2728 { | |
2729 case '"': | |
2730 inquote = TRUE; | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2731 if (fvdef != finlist && fvdef != fignore && fvdef !=vignore) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2732 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2733 fvextern = FALSE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2734 fvdef = fvnone; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2735 } |
240 | 2736 continue; |
2737 case '\'': | |
2738 inchar = TRUE; | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2739 if (fvdef != finlist && fvdef != fignore && fvdef !=vignore) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2740 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2741 fvextern = FALSE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2742 fvdef = fvnone; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2743 } |
240 | 2744 continue; |
2745 case '/': | |
2746 if (*lp == '*') | |
2747 { | |
2748 lp++; | |
2749 incomm = TRUE; | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2750 continue; |
240 | 2751 } |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2752 else if (/* cplpl && */ *lp == '/') |
240 | 2753 { |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2754 c = '\0'; |
727 | 2755 break; |
240 | 2756 } |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2757 else |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2758 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2759 case '%': |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2760 if ((c_ext & YACC) && *lp == '%') |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2761 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2762 /* entering or exiting rules section in yacc file */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2763 lp++; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2764 definedef = dnone; fvdef = fvnone; fvextern = FALSE; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2765 typdef = tnone; structdef = snone; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2766 next_token_is_func = FALSE; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2767 midtoken = inquote = inchar = incomm = quotednl = FALSE; |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2768 cblev = 0; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2769 yacc_rules = !yacc_rules; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2770 continue; |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2771 } |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2772 else |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2773 break; |
240 | 2774 case '#': |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2775 if (definedef == dnone) |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2776 { |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2777 char *cp; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2778 bool cpptoken = TRUE; |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2779 |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2780 /* Look back on this line. If all blanks, or nonblanks |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2781 followed by an end of comment, this is a preprocessor |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2782 token. */ |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2783 for (cp = newlb.buffer; cp < lp-1; cp++) |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2784 if (!iswhite (*cp)) |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2785 { |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2786 if (*cp == '*' && *(cp+1) == '/') |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2787 { |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2788 cp++; |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2789 cpptoken = TRUE; |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2790 } |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2791 else |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2792 cpptoken = FALSE; |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2793 } |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2794 if (cpptoken) |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2795 definedef = dsharpseen; |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2796 } /* if (definedef == dnone) */ |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2797 |
240 | 2798 continue; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2799 } /* switch (c) */ |
240 | 2800 |
2801 | |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2802 /* Consider token only if some complicated conditions are satisfied. */ |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2803 if ((definedef != dnone |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2804 || (cblev == 0 && structdef != scolonseen) |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2805 || (cblev == 1 && cplpl && structdef == sinbody) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2806 || (structdef == sinbody && purec)) |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2807 && typdef != tignore |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2808 && definedef != dignorerest |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2809 && fvdef != finlist) |
240 | 2810 { |
2811 if (midtoken) | |
2812 { | |
2813 if (endtoken (c)) | |
2814 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2815 bool funorvar = FALSE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2816 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2817 if (c == ':' && cplpl && *lp == ':' && begtoken (lp[1])) |
240 | 2818 { |
2819 /* | |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2820 * This handles :: in the middle, but not at the |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2821 * beginning of an identifier. Also, space-separated |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2822 * :: is not recognised. |
240 | 2823 */ |
2824 lp += 2; | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2825 toklen += 2; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2826 c = lp[-1]; |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
2827 goto intok; |
240 | 2828 } |
2829 else | |
2830 { | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2831 if (yacc_rules |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2832 || consider_token (newlb.buffer + tokoff, toklen, c, |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2833 c_ext, cblev, parlev, &funorvar)) |
240 | 2834 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2835 if (fvdef == foperator) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2836 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2837 char *oldlp = lp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2838 lp = skip_spaces (lp-1); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2839 if (*lp != '\0') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2840 lp += 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2841 while (*lp != '\0' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
2842 && !iswhite (*lp) && *lp != '(') |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2843 lp += 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2844 c = *lp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2845 toklen += lp - oldlp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2846 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2847 tok.named = FALSE; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2848 if (!purec |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2849 && funorvar |
4750
cdefe4f21650
Mon Sep 20 18:06:12 1993 Francesco Potorti` (pot at fly)
Francesco Potortì <pot@gnu.org>
parents:
4696
diff
changeset
|
2850 && definedef == dnone |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2851 && structdef == sinbody) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2852 /* function or var defined in C++ class body */ |
4750
cdefe4f21650
Mon Sep 20 18:06:12 1993 Francesco Potorti` (pot at fly)
Francesco Potortì <pot@gnu.org>
parents:
4696
diff
changeset
|
2853 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2854 int len = strlen (structtag) + qlen + toklen; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2855 grow_linebuffer (&token_name, len + 1); |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2856 strcpy (token_name.buffer, structtag); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2857 strcat (token_name.buffer, qualifier); |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2858 strncat (token_name.buffer, |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2859 newlb.buffer + tokoff, toklen); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2860 token_name.len = len; |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2861 tok.named = TRUE; |
240 | 2862 } |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2863 else if (objdef == ocatseen) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2864 /* Objective C category */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2865 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2866 int len = strlen (objtag) + 2 + toklen; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2867 grow_linebuffer (&token_name, len + 1); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2868 strcpy (token_name.buffer, objtag); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2869 strcat (token_name.buffer, "("); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2870 strncat (token_name.buffer, |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2871 newlb.buffer + tokoff, toklen); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2872 strcat (token_name.buffer, ")"); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2873 token_name.len = len; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2874 tok.named = TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2875 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2876 else if (objdef == omethodtag |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2877 || objdef == omethodparm) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2878 /* Objective C method */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2879 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2880 tok.named = TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2881 } |
240 | 2882 else |
2883 { | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2884 grow_linebuffer (&token_name, toklen + 1); |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2885 strncpy (token_name.buffer, |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2886 newlb.buffer + tokoff, toklen); |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2887 token_name.buffer[toklen] = '\0'; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2888 token_name.len = toklen; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2889 /* Name macros and members. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2890 tok.named = (structdef == stagseen |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2891 || typdef == ttypeseen |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2892 || typdef == tend |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2893 || (funorvar |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2894 && definedef == dignorerest) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2895 || (funorvar |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2896 && definedef == dnone |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2897 && structdef == sinbody)); |
240 | 2898 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2899 tok.lineno = lineno; |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2900 tok.linelen = tokoff + toklen + 1; |
10754
cd1c0b5e8634
* etags.c (C_entries): Initialise the new members of TOKEN.
Francesco Potortì <pot@gnu.org>
parents:
10623
diff
changeset
|
2901 tok.buffer = newlb.buffer; |
cd1c0b5e8634
* etags.c (C_entries): Initialise the new members of TOKEN.
Francesco Potortì <pot@gnu.org>
parents:
10623
diff
changeset
|
2902 tok.linepos = newlinepos; |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2903 tok.valid = TRUE; |
4750
cdefe4f21650
Mon Sep 20 18:06:12 1993 Francesco Potorti` (pot at fly)
Francesco Potortì <pot@gnu.org>
parents:
4696
diff
changeset
|
2904 |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2905 if (definedef == dnone |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2906 && (fvdef == fvnameseen |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2907 || fvdef == foperator |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2908 || structdef == stagseen |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2909 || typdef == tend |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2910 || objdef != onone)) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2911 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2912 if (current_lb_is_new) |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2913 switch_line_buffers (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2914 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2915 else |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2916 make_C_tag (funorvar); |
240 | 2917 } |
2918 midtoken = FALSE; | |
2919 } | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2920 } /* if (endtoken (c)) */ |
240 | 2921 else if (intoken (c)) |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
2922 intok: |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2923 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2924 toklen++; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2925 continue; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2926 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2927 } /* if (midtoken) */ |
240 | 2928 else if (begtoken (c)) |
2929 { | |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2930 switch (definedef) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2931 { |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2932 case dnone: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2933 switch (fvdef) |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2934 { |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2935 case fstartlist: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2936 fvdef = finlist; |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2937 continue; |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2938 case flistseen: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2939 make_C_tag (TRUE); /* a function */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2940 fvdef = fignore; |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2941 break; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2942 case fvnameseen: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2943 fvdef = fvnone; |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2944 break; |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2945 } |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
2946 if (structdef == stagseen && !cjava) |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2947 structdef = snone; |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
2948 break; |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2949 case dsharpseen: |
10623
8a73e71a55e3
* etags.c (pfnote): Initialise been_warned in the node.
Francesco Potortì <pot@gnu.org>
parents:
10449
diff
changeset
|
2950 savetok = tok; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2951 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2952 if (!yacc_rules || lp == newlb.buffer + 1) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2953 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2954 tokoff = lp - 1 - newlb.buffer; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2955 toklen = 1; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2956 midtoken = TRUE; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2957 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2958 continue; |
10623
8a73e71a55e3
* etags.c (pfnote): Initialise been_warned in the node.
Francesco Potortì <pot@gnu.org>
parents:
10449
diff
changeset
|
2959 } /* if (begtoken) */ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2960 } /* if must look at token */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2961 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2962 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2963 /* Detect end of line, colon, comma, semicolon and various braces |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2964 after having handled a token.*/ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2965 switch (c) |
401 | 2966 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2967 case ':': |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2968 if (definedef != dnone) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2969 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2970 switch (objdef) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2971 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2972 case otagseen: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2973 objdef = oignore; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2974 make_C_tag (TRUE); /* an Objective C class */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2975 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2976 case omethodtag: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2977 case omethodparm: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2978 objdef = omethodcolon; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2979 methodlen += 1; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2980 grow_linebuffer (&token_name, methodlen + 1); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2981 strcat (token_name.buffer, ":"); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2982 token_name.len = methodlen; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2983 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2984 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2985 if (structdef == stagseen) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2986 structdef = scolonseen; |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2987 else |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2988 switch (fvdef) |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2989 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2990 case fvnameseen: |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2991 if (yacc_rules) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2992 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2993 make_C_tag (FALSE); /* a yacc function */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2994 fvdef = fignore; |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2995 } |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2996 break; |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
2997 case fstartlist: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2998 fvextern = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2999 fvdef = fvnone; |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3000 break; |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3001 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3002 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3003 case ';': |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3004 if (definedef != dnone) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3005 break; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3006 if (cblev == 0) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3007 switch (typdef) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3008 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3009 case tend: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3010 make_C_tag (FALSE); /* a typedef */ |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3011 /* FALLTHRU */ |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3012 default: |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3013 typdef = tnone; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3014 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3015 switch (fvdef) |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3016 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3017 case fignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3018 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3019 case fvnameseen: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3020 if ((members && cblev == 1) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3021 || (globals && cblev == 0 && (!fvextern || declarations))) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3022 make_C_tag (FALSE); /* a variable */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3023 fvextern = FALSE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3024 fvdef = fvnone; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3025 tok.valid = FALSE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3026 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3027 case flistseen: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3028 if (declarations && (cblev == 0 || cblev == 1)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3029 make_C_tag (TRUE); /* a function declaration */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3030 /* FALLTHRU */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3031 default: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3032 fvextern = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3033 fvdef = fvnone; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3034 /* The following instruction invalidates the token. |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3035 Probably the token should be invalidated in all |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3036 other cases where some state machine is reset. */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3037 tok.valid = FALSE; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3038 } |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3039 if (structdef == stagseen) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3040 structdef = snone; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3041 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3042 case ',': |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3043 if (definedef != dnone) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3044 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3045 switch (objdef) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3046 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3047 case omethodtag: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3048 case omethodparm: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3049 make_C_tag (TRUE); /* an Objective C method */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3050 objdef = oinbody; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3051 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3052 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3053 switch (fvdef) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3054 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3055 case foperator: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3056 case finlist: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3057 case fignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3058 case vignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3059 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3060 case fvnameseen: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3061 if ((members && cblev == 1) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3062 || (globals && cblev == 0 && (!fvextern || declarations))) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3063 make_C_tag (FALSE); /* a variable */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3064 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3065 default: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3066 fvdef = fvnone; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3067 } |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3068 if (structdef == stagseen) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3069 structdef = snone; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3070 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3071 case '[': |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3072 if (definedef != dnone) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3073 break; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3074 if (cblev == 0 && typdef == tend) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3075 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3076 typdef = tignore; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3077 make_C_tag (FALSE); /* a typedef */ |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3078 break; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3079 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3080 switch (fvdef) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3081 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3082 case foperator: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3083 case finlist: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3084 case fignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3085 case vignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3086 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3087 case fvnameseen: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3088 if ((members && cblev == 1) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3089 || (globals && cblev == 0 && (!fvextern || declarations))) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3090 make_C_tag (FALSE); /* a variable */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3091 /* FALLTHRU */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3092 default: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3093 fvdef = fvnone; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3094 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3095 if (structdef == stagseen) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3096 structdef = snone; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3097 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3098 case '(': |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3099 if (definedef != dnone) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3100 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3101 if (objdef == otagseen && parlev == 0) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3102 objdef = oparenseen; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3103 switch (fvdef) |
1938
1045deef809f
(C_entries): Don't reset definedef when a newline inside a comment is met.
Richard M. Stallman <rms@gnu.org>
parents:
1796
diff
changeset
|
3104 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3105 case fvnameseen: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3106 if (typdef == ttypeseen |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3107 && tok.valid |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3108 && *lp != '*' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3109 && structdef != sinbody) |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
3110 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3111 /* This handles constructs like: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3112 typedef void OperatorFun (int fun); */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3113 make_C_tag (FALSE); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3114 typdef = tignore; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3115 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3116 /* FALLTHRU */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3117 case foperator: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3118 fvdef = fstartlist; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3119 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3120 case flistseen: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3121 fvdef = finlist; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3122 break; |
1938
1045deef809f
(C_entries): Don't reset definedef when a newline inside a comment is met.
Richard M. Stallman <rms@gnu.org>
parents:
1796
diff
changeset
|
3123 } |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3124 parlev++; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3125 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3126 case ')': |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3127 if (definedef != dnone) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3128 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3129 if (objdef == ocatseen && parlev == 1) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3130 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3131 make_C_tag (TRUE); /* an Objective C category */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3132 objdef = oignore; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3133 } |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3134 if (--parlev == 0) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3135 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3136 switch (fvdef) |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3137 { |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3138 case fstartlist: |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3139 case finlist: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3140 fvdef = flistseen; |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3141 break; |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3142 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3143 if (cblev == 0 && (typdef == tend)) |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3144 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3145 typdef = tignore; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3146 make_C_tag (FALSE); /* a typedef */ |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3147 } |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3148 } |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3149 else if (parlev < 0) /* can happen due to ill-conceived #if's. */ |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3150 parlev = 0; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3151 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3152 case '{': |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3153 if (definedef != dnone) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3154 break; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3155 if (typdef == ttypeseen) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3156 typdef = tinbody; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3157 switch (structdef) |
1938
1045deef809f
(C_entries): Don't reset definedef when a newline inside a comment is met.
Richard M. Stallman <rms@gnu.org>
parents:
1796
diff
changeset
|
3158 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3159 case skeyseen: /* unnamed struct */ |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
3160 structdef = sinbody; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3161 structtag = "_anonymous_"; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3162 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3163 case stagseen: |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3164 case scolonseen: /* named struct */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3165 structdef = sinbody; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3166 make_C_tag (FALSE); /* a struct */ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3167 break; |
1938
1045deef809f
(C_entries): Don't reset definedef when a newline inside a comment is met.
Richard M. Stallman <rms@gnu.org>
parents:
1796
diff
changeset
|
3168 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3169 switch (fvdef) |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3170 { |
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3171 case flistseen: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3172 make_C_tag (TRUE); /* a function */ |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3173 /* FALLTHRU */ |
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3174 case fignore: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3175 fvdef = fvnone; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3176 break; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3177 case fvnone: |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3178 switch (objdef) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3179 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3180 case otagseen: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3181 make_C_tag (TRUE); /* an Objective C class */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3182 objdef = oignore; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3183 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3184 case omethodtag: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3185 case omethodparm: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3186 make_C_tag (TRUE); /* an Objective C method */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3187 objdef = oinbody; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3188 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3189 default: |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
3190 /* Neutralize `extern "C" {' grot. */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3191 if (cblev == 0 && structdef == snone && typdef == tnone) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3192 cblev = -1; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3193 } |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3194 } |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
3195 cblev++; |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3196 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3197 case '*': |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3198 if (definedef != dnone) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3199 break; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3200 if (fvdef == fstartlist) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3201 fvdef = fvnone; /* avoid tagging `foo' in `foo (*bar()) ()' */ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3202 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3203 case '}': |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3204 if (definedef != dnone) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3205 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3206 if (!noindentypedefs && lp == newlb.buffer + 1) |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3207 { |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3208 cblev = 0; /* reset curly brace level if first column */ |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3209 parlev = 0; /* also reset paren level, just in case... */ |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3210 } |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
3211 else if (cblev > 0) |
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
3212 cblev--; |
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
3213 if (cblev == 0) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3214 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3215 if (typdef == tinbody) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3216 typdef = tend; |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
3217 /* Memory leakage here: the string pointed by structtag is |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
3218 never released, because I fear to miss something and |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
3219 break things while freeing the area. The amount of |
14021
19bab04cf346
(substitute): Fix spelling in message.
Karl Heuer <kwzh@gnu.org>
parents:
13696
diff
changeset
|
3220 memory leaked here is the sum of the lengths of the |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
3221 struct tags. |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
3222 if (structdef == sinbody) |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
3223 free (structtag); */ |
10761
7aa80669e697
* etags.c (C_entries): Bug corrected in xrealloc of token_str.
Francesco Potortì <pot@gnu.org>
parents:
10754
diff
changeset
|
3224 |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3225 structdef = snone; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3226 structtag = "<error>"; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3227 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3228 break; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3229 case '=': |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3230 if (definedef != dnone) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3231 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3232 switch (fvdef) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3233 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3234 case foperator: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3235 case finlist: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3236 case fignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3237 case vignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3238 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3239 case fvnameseen: |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3240 if ((members && cblev == 1) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3241 || (globals && cblev == 0 && (!fvextern || declarations))) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3242 make_C_tag (FALSE); /* a variable */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3243 /* FALLTHRU */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3244 default: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3245 fvdef = vignore; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3246 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3247 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3248 case '+': |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3249 case '-': |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3250 if (objdef == oinbody && cblev == 0) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3251 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3252 objdef = omethodsign; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3253 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3254 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3255 /* FALLTHRU */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3256 case '#': case '~': case '&': case '%': case '/': case '|': |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3257 case '^': case '!': case '<': case '>': case '.': case '?': case ']': |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3258 if (definedef != dnone) |
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3259 break; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3260 /* These surely cannot follow a function tag in C. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3261 switch (fvdef) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3262 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3263 case foperator: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3264 case finlist: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3265 case fignore: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3266 case vignore: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3267 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3268 default: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3269 fvdef = fvnone; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3270 } |
4937
50db67ef8d64
Mon Nov 8 19:56:20 MET 1993 Tom Hageman (tom@basil.icce.rug.nl)
Francesco Potortì <pot@gnu.org>
parents:
4905
diff
changeset
|
3271 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3272 case '\0': |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3273 if (objdef == otagseen) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3274 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3275 make_C_tag (TRUE); /* an Objective C class */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3276 objdef = oignore; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3277 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3278 /* If a macro spans multiple lines don't reset its state. */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3279 if (quotednl) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3280 CNL_SAVE_DEFINEDEF (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3281 else |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3282 CNL (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3283 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3284 } /* switch (c) */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3285 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3286 } /* while not eof */ |
240 | 3287 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3288 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3289 /* |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3290 * Process either a C++ file or a C file depending on the setting |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3291 * of a global flag. |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3292 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3293 static void |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3294 default_C_entries (inf) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3295 FILE *inf; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3296 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3297 C_entries (cplusplus ? C_PLPL : 0, inf); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3298 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3299 |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3300 /* Always do plain ANSI C. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3301 static void |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3302 plain_C_entries (inf) |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3303 FILE *inf; |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3304 { |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3305 C_entries (0, inf); |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3306 } |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3307 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3308 /* Always do C++. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3309 static void |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3310 Cplusplus_entries (inf) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3311 FILE *inf; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3312 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3313 C_entries (C_PLPL, inf); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3314 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3315 |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
3316 /* Always do Java. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3317 static void |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3318 Cjava_entries (inf) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3319 FILE *inf; |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
3320 { |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
3321 C_entries (C_JAVA, inf); |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
3322 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
3323 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3324 /* Always do C*. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3325 static void |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3326 Cstar_entries (inf) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3327 FILE *inf; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3328 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3329 C_entries (C_STAR, inf); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3330 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3331 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3332 /* Always do Yacc. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3333 static void |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3334 Yacc_entries (inf) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3335 FILE *inf; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3336 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3337 C_entries (YACC, inf); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3338 } |
240 | 3339 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3340 /* A useful macro. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3341 #define LOOP_ON_INPUT_LINES(file_pointer, line_buffer, char_pointer) \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3342 for (lineno = charno = 0; /* loop initialization */ \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3343 !feof (file_pointer) /* loop test */ \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3344 && (lineno++, /* instructions at start of loop */ \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3345 linecharno = charno, \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3346 charno += readline (&line_buffer, file_pointer), \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3347 char_pointer = lb.buffer, \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3348 TRUE); \ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3349 ) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3350 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3351 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3352 /* |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3353 * Read a file, but do no processing. This is used to do regexp |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3354 * matching on files that have no language defined. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3355 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3356 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3357 just_read_file (inf) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3358 FILE *inf; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3359 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3360 register char *dummy; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3361 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3362 LOOP_ON_INPUT_LINES (inf, lb, dummy) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3363 continue; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3364 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3365 |
240 | 3366 /* Fortran parsing */ |
3367 | |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3368 static bool tail P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3369 static void takeprec P_((void)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3370 static void getit P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3371 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3372 static bool |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3373 tail (cp) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3374 char *cp; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3375 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3376 register int len = 0; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3377 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3378 while (*cp != '\0' && lowcase (*cp) == lowcase (dbp[len])) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3379 cp++, len++; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3380 if (*cp == '\0' && !intoken (dbp[len])) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3381 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3382 dbp += len; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3383 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3384 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3385 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3386 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3387 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3388 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3389 takeprec () |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3390 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3391 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3392 if (*dbp != '*') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3393 return; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3394 dbp++; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3395 dbp = skip_spaces (dbp); |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3396 if (strneq (dbp, "(*)", 3)) |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3397 { |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3398 dbp += 3; |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3399 return; |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3400 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3401 if (!isdigit (*dbp)) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3402 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3403 --dbp; /* force failure */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3404 return; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3405 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3406 do |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3407 dbp++; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3408 while (isdigit (*dbp)); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3409 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3410 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3411 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3412 getit (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3413 FILE *inf; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3414 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3415 register char *cp; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3416 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3417 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3418 if (*dbp == '\0') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3419 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3420 lineno++; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3421 linecharno = charno; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3422 charno += readline (&lb, inf); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3423 dbp = lb.buffer; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3424 if (dbp[5] != '&') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3425 return; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3426 dbp += 6; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3427 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3428 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3429 if (!isalpha (*dbp) && *dbp != '_' && *dbp != '$') |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3430 return; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3431 for (cp = dbp + 1; *cp != '\0' && intoken (*cp); cp++) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3432 continue; |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3433 pfnote (savenstr (dbp, cp-dbp), TRUE, |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3434 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3435 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3436 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3437 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3438 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3439 Fortran_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3440 FILE *inf; |
240 | 3441 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3442 LOOP_ON_INPUT_LINES (inf, lb, dbp) |
240 | 3443 { |
3444 if (*dbp == '%') | |
3445 dbp++; /* Ratfor escape to fortran */ | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3446 dbp = skip_spaces (dbp); |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3447 if (*dbp == '\0') |
240 | 3448 continue; |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3449 switch (lowcase (*dbp)) |
240 | 3450 { |
3451 case 'i': | |
3452 if (tail ("integer")) | |
3453 takeprec (); | |
3454 break; | |
3455 case 'r': | |
3456 if (tail ("real")) | |
3457 takeprec (); | |
3458 break; | |
3459 case 'l': | |
3460 if (tail ("logical")) | |
3461 takeprec (); | |
3462 break; | |
3463 case 'c': | |
3464 if (tail ("complex") || tail ("character")) | |
3465 takeprec (); | |
3466 break; | |
3467 case 'd': | |
3468 if (tail ("double")) | |
3469 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3470 dbp = skip_spaces (dbp); |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3471 if (*dbp == '\0') |
240 | 3472 continue; |
3473 if (tail ("precision")) | |
3474 break; | |
3475 continue; | |
3476 } | |
3477 break; | |
3478 } | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3479 dbp = skip_spaces (dbp); |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3480 if (*dbp == '\0') |
240 | 3481 continue; |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3482 switch (lowcase (*dbp)) |
240 | 3483 { |
3484 case 'f': | |
3485 if (tail ("function")) | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3486 getit (inf); |
240 | 3487 continue; |
3488 case 's': | |
3489 if (tail ("subroutine")) | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3490 getit (inf); |
240 | 3491 continue; |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
3492 case 'e': |
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
3493 if (tail ("entry")) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3494 getit (inf); |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
3495 continue; |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3496 case 'b': |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3497 if (tail ("blockdata") || tail ("block data")) |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3498 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3499 dbp = skip_spaces (dbp); |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3500 if (*dbp == '\0') /* assume un-named */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3501 pfnote (savestr ("blockdata"), TRUE, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3502 lb.buffer, dbp - lb.buffer, lineno, linecharno); |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3503 else |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3504 getit (inf); /* look for name */ |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3505 } |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3506 continue; |
240 | 3507 } |
3508 } | |
3509 } | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3510 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3511 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3512 * Philippe Waroquiers <philippe.waroquiers@eurocontrol.be>, 1998-04-24 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3513 * Ada parsing |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3514 */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3515 |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3516 static void adagetit P_((FILE *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3517 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3518 /* Once we are positioned after an "interesting" keyword, let's get |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3519 the real tag value necessary. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3520 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3521 adagetit (inf, name_qualifier) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3522 FILE *inf; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3523 char *name_qualifier; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3524 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3525 register char *cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3526 char *name; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3527 char c; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3528 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3529 while (!feof (inf)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3530 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3531 dbp = skip_spaces (dbp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3532 if (*dbp == '\0' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3533 || (dbp[0] == '-' && dbp[1] == '-')) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3534 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3535 lineno++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3536 linecharno = charno; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3537 charno += readline (&lb, inf); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3538 dbp = lb.buffer; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3539 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3540 switch (*dbp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3541 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3542 case 'b': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3543 case 'B': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3544 if (tail ("body")) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3545 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3546 /* Skipping body of procedure body or package body or .... |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3547 resetting qualifier to body instead of spec. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3548 name_qualifier = "/b"; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3549 continue; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3550 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3551 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3552 case 't': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3553 case 'T': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3554 /* Skipping type of task type or protected type ... */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3555 if (tail ("type")) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3556 continue; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3557 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3558 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3559 if (*dbp == '"') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3560 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3561 dbp += 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3562 for (cp = dbp; *cp != '\0' && *cp != '"'; cp++) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3563 continue; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3564 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3565 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3566 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3567 dbp = skip_spaces (dbp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3568 for (cp = dbp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3569 (*cp != '\0' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3570 && (isalpha (*cp) || isdigit (*cp) || *cp == '_' || *cp == '.')); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3571 cp++) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3572 continue; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3573 if (cp == dbp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3574 return; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3575 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3576 c = *cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3577 *cp = '\0'; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3578 name = concat (dbp, name_qualifier, ""); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3579 *cp = c; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3580 pfnote (name, TRUE, lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3581 if (c == '"') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3582 dbp = cp + 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3583 return; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3584 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3585 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3586 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3587 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3588 Ada_funcs (inf) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3589 FILE *inf; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3590 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3591 bool inquote = FALSE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3592 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3593 LOOP_ON_INPUT_LINES (inf, lb, dbp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3594 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3595 while (*dbp != '\0') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3596 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3597 /* Skip a string i.e. "abcd". */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3598 if (inquote || (*dbp == '"')) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3599 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3600 dbp = etags_strchr ((inquote) ? dbp : dbp+1, '"'); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3601 if (dbp != NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3602 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3603 inquote = FALSE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3604 dbp += 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3605 continue; /* advance char */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3606 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3607 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3608 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3609 inquote = TRUE; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3610 break; /* advance line */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3611 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3612 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3613 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3614 /* Skip comments. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3615 if (dbp[0] == '-' && dbp[1] == '-') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3616 break; /* advance line */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3617 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3618 /* Skip character enclosed in single quote i.e. 'a' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3619 and skip single quote starting an attribute i.e. 'Image. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3620 if (*dbp == '\'') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3621 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3622 dbp++ ; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3623 if (*dbp != '\0') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3624 dbp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3625 continue; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3626 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3627 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3628 /* Search for beginning of a token. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3629 if (!begtoken (*dbp)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3630 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3631 dbp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3632 continue; /* advance char */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3633 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3634 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3635 /* We are at the beginning of a token. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3636 switch (*dbp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3637 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3638 case 'f': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3639 case 'F': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3640 if (!packages_only && tail ("function")) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3641 adagetit (inf, "/f"); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3642 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3643 break; /* from switch */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3644 continue; /* advance char */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3645 case 'p': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3646 case 'P': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3647 if (!packages_only && tail ("procedure")) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3648 adagetit (inf, "/p"); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3649 else if (tail ("package")) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3650 adagetit (inf, "/s"); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3651 else if (tail ("protected")) /* protected type */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3652 adagetit (inf, "/t"); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3653 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3654 break; /* from switch */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3655 continue; /* advance char */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3656 case 't': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3657 case 'T': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3658 if (!packages_only && tail ("task")) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3659 adagetit (inf, "/k"); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3660 else if (typedefs && !packages_only && tail ("type")) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3661 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3662 adagetit (inf, "/t"); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3663 while (*dbp != '\0') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3664 dbp += 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3665 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3666 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3667 break; /* from switch */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3668 continue; /* advance char */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3669 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3670 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3671 /* Look for the end of the token. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3672 while (!endtoken (*dbp)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3673 dbp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3674 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3675 } /* advance char */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3676 } /* advance line */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3677 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3678 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3679 /* |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3680 * Bob Weiner, Motorola Inc., 4/3/94 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3681 * Unix and microcontroller assembly tag handling |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3682 * look for '^[a-zA-Z_.$][a-zA_Z0-9_.$]*[: ^I^J]' |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3683 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3684 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3685 Asm_labels (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3686 FILE *inf; |
240 | 3687 { |
3688 register char *cp; | |
3689 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3690 LOOP_ON_INPUT_LINES (inf, lb, cp) |
240 | 3691 { |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3692 /* If first char is alphabetic or one of [_.$], test for colon |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3693 following identifier. */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3694 if (isalpha (*cp) || *cp == '_' || *cp == '.' || *cp == '$') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3695 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3696 /* Read past label. */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3697 cp++; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3698 while (isalnum (*cp) || *cp == '_' || *cp == '.' || *cp == '$') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3699 cp++; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3700 if (*cp == ':' || iswhite (*cp)) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3701 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3702 /* Found end of label, so copy it and add it to the table. */ |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3703 pfnote (savenstr(lb.buffer, cp-lb.buffer), TRUE, |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3704 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3705 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3706 } |
240 | 3707 } |
3708 } | |
3709 | |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3710 /* |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3711 * Perl support by Bart Robinson <lomew@cs.utah.edu> |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3712 * enhanced by Michael Ernst <mernst@alum.mit.edu> |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3713 * Perl sub names: look for /^sub[ \t\n]+[^ \t\n{]+/ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3714 * Perl variable names: /^(my|local).../ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3715 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3716 static void |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3717 Perl_functions (inf) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3718 FILE *inf; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3719 { |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3720 register char *cp; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3721 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3722 LOOP_ON_INPUT_LINES (inf, lb, cp) |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3723 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3724 if (*cp++ == 's' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3725 && *cp++ == 'u' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3726 && *cp++ == 'b' && iswhite (*cp++)) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3727 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3728 cp = skip_spaces (cp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3729 if (*cp != '\0') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3730 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3731 char *sp = cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3732 while (*cp != '\0' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3733 && !iswhite (*cp) && *cp != '{' && *cp != '(') |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3734 cp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3735 pfnote (savenstr (sp, cp-sp), TRUE, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3736 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3737 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3738 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3739 else if (globals /* only if tagging global vars is enabled */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3740 && ((cp = lb.buffer, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3741 *cp++ == 'm' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3742 && *cp++ == 'y') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3743 || (cp = lb.buffer, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3744 *cp++ == 'l' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3745 && *cp++ == 'o' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3746 && *cp++ == 'c' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3747 && *cp++ == 'a' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3748 && *cp++ == 'l')) |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3749 && (*cp == '(' || iswhite (*cp))) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3750 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3751 /* After "my" or "local", but before any following paren or space. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3752 char *varname = NULL; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3753 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3754 cp = skip_spaces (cp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3755 if (*cp == '$' || *cp == '@' || *cp == '%') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3756 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3757 char* varstart = ++cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3758 while (isalnum (*cp) || *cp == '_') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3759 cp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3760 varname = savenstr (varstart, cp-varstart); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3761 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3762 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3763 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3764 /* Should be examining a variable list at this point; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3765 could insist on seeing an open parenthesis. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3766 while (*cp != '\0' && *cp != ';' && *cp != '=' && *cp != ')') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3767 cp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3768 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3769 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3770 /* Perhaps I should back cp up one character, so the TAGS table |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3771 doesn't mention (and so depend upon) the following char. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3772 pfnote ((CTAGS) ? savenstr (lb.buffer, cp-lb.buffer) : varname, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3773 FALSE, lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3774 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3775 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3776 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3777 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3778 /* |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3779 * Python support by Eric S. Raymond <esr@thyrsus.com> |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3780 * Look for /^def[ \t\n]+[^ \t\n(:]+/ or /^class[ \t\n]+[^ \t\n(:]+/ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3781 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3782 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3783 Python_functions (inf) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3784 FILE *inf; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3785 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3786 register char *cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3787 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3788 LOOP_ON_INPUT_LINES (inf, lb, cp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3789 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3790 if (*cp++ == 'd' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3791 && *cp++ == 'e' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3792 && *cp++ == 'f' && iswhite (*cp++)) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3793 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3794 cp = skip_spaces (cp); |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3795 while (*cp != '\0' && !iswhite (*cp) && *cp != '(' && *cp != ':') |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3796 cp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3797 pfnote (NULL, TRUE, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3798 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3799 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3800 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3801 cp = lb.buffer; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3802 if (*cp++ == 'c' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3803 && *cp++ == 'l' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3804 && *cp++ == 'a' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3805 && *cp++ == 's' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3806 && *cp++ == 's' && iswhite (*cp++)) |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3807 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3808 cp = skip_spaces (cp); |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3809 while (*cp != '\0' && !iswhite (*cp) && *cp != '(' && *cp != ':') |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3810 cp++; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3811 pfnote (NULL, TRUE, |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3812 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3813 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3814 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3815 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3816 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3817 /* Idea by Corny de Souza |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3818 * Cobol tag functions |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3819 * We could look for anything that could be a paragraph name. |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3820 * i.e. anything that starts in column 8 is one word and ends in a full stop. |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3821 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3822 static void |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3823 Cobol_paragraphs (inf) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3824 FILE *inf; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3825 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3826 register char *bp, *ep; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3827 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3828 LOOP_ON_INPUT_LINES (inf, lb, bp) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3829 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3830 if (lb.len < 9) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3831 continue; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3832 bp += 8; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3833 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3834 /* If eoln, compiler option or comment ignore whole line. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3835 if (bp[-1] != ' ' || !isalnum (bp[0])) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3836 continue; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3837 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3838 for (ep = bp; isalnum (*ep) || *ep == '-'; ep++) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3839 continue; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3840 if (*ep++ == '.') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3841 pfnote (savenstr (bp, ep-bp), TRUE, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3842 lb.buffer, ep - lb.buffer + 1, lineno, linecharno); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3843 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3844 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3845 |
240 | 3846 /* Added by Mosur Mohan, 4/22/88 */ |
3847 /* Pascal parsing */ | |
3848 | |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
3849 /* |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
3850 * Locates tags for procedures & functions. Doesn't do any type- or |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
3851 * var-definitions. It does look for the keyword "extern" or |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
3852 * "forward" immediately following the procedure statement; if found, |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
3853 * the tag is skipped. |
240 | 3854 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3855 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3856 Pascal_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3857 FILE *inf; |
240 | 3858 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3859 linebuffer tline; /* mostly copied from C_entries */ |
240 | 3860 long save_lcno; |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3861 int save_lineno, save_len; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3862 char c, *cp, *namebuf; |
240 | 3863 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3864 bool /* each of these flags is TRUE iff: */ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3865 incomment, /* point is inside a comment */ |
240 | 3866 inquote, /* point is inside '..' string */ |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3867 get_tagname, /* point is after PROCEDURE/FUNCTION |
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3868 keyword, so next item = potential tag */ |
240 | 3869 found_tag, /* point is after a potential tag */ |
3870 inparms, /* point is within parameter-list */ | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3871 verify_tag; /* point has passed the parm-list, so the |
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3872 next token will determine whether this |
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3873 is a FORWARD/EXTERN to be ignored, or |
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3874 whether it is a real tag */ |
240 | 3875 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3876 save_lcno = save_lineno = save_len = 0; /* keep compiler quiet */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3877 namebuf = NULL; /* keep compiler quiet */ |
240 | 3878 lineno = 0; |
3879 charno = 0; | |
3880 dbp = lb.buffer; | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3881 *dbp = '\0'; |
240 | 3882 initbuffer (&tline); |
3883 | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3884 incomment = inquote = FALSE; |
240 | 3885 found_tag = FALSE; /* have a proc name; check if extern */ |
3886 get_tagname = FALSE; /* have found "procedure" keyword */ | |
3887 inparms = FALSE; /* found '(' after "proc" */ | |
3888 verify_tag = FALSE; /* check if "extern" is ahead */ | |
3889 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3890 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3891 while (!feof (inf)) /* long main loop to get next char */ |
240 | 3892 { |
3893 c = *dbp++; | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3894 if (c == '\0') /* if end of line */ |
240 | 3895 { |
15243
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
3896 lineno++; |
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
3897 linecharno = charno; |
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
3898 charno += readline (&lb, inf); |
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
3899 dbp = lb.buffer; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3900 if (*dbp == '\0') |
240 | 3901 continue; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3902 if (!((found_tag && verify_tag) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3903 || get_tagname)) |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3904 c = *dbp++; /* only if don't need *dbp pointing |
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3905 to the beginning of the name of |
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3906 the procedure or function */ |
240 | 3907 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3908 if (incomment) |
240 | 3909 { |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3910 if (c == '}') /* within { } comments */ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3911 incomment = FALSE; |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3912 else if (c == '*' && *dbp == ')') /* within (* *) comments */ |
240 | 3913 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3914 dbp++; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3915 incomment = FALSE; |
240 | 3916 } |
3917 continue; | |
3918 } | |
3919 else if (inquote) | |
3920 { | |
3921 if (c == '\'') | |
3922 inquote = FALSE; | |
3923 continue; | |
3924 } | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3925 else |
240 | 3926 switch (c) |
3927 { | |
3928 case '\'': | |
3929 inquote = TRUE; /* found first quote */ | |
3930 continue; | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3931 case '{': /* found open { comment */ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3932 incomment = TRUE; |
240 | 3933 continue; |
3934 case '(': | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3935 if (*dbp == '*') /* found open (* comment */ |
240 | 3936 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3937 incomment = TRUE; |
240 | 3938 dbp++; |
3939 } | |
3940 else if (found_tag) /* found '(' after tag, i.e., parm-list */ | |
3941 inparms = TRUE; | |
3942 continue; | |
3943 case ')': /* end of parms list */ | |
3944 if (inparms) | |
3945 inparms = FALSE; | |
3946 continue; | |
3947 case ';': | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3948 if (found_tag && !inparms) /* end of proc or fn stmt */ |
240 | 3949 { |
3950 verify_tag = TRUE; | |
3951 break; | |
3952 } | |
3953 continue; | |
3954 } | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3955 if (found_tag && verify_tag && (*dbp != ' ')) |
240 | 3956 { |
3957 /* check if this is an "extern" declaration */ | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3958 if (*dbp == '\0') |
240 | 3959 continue; |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3960 if (lowcase (*dbp == 'e')) |
240 | 3961 { |
3962 if (tail ("extern")) /* superfluous, really! */ | |
3963 { | |
3964 found_tag = FALSE; | |
3965 verify_tag = FALSE; | |
3966 } | |
3967 } | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3968 else if (lowcase (*dbp) == 'f') |
240 | 3969 { |
3970 if (tail ("forward")) /* check for forward reference */ | |
3971 { | |
3972 found_tag = FALSE; | |
3973 verify_tag = FALSE; | |
3974 } | |
3975 } | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3976 if (found_tag && verify_tag) /* not external proc, so make tag */ |
240 | 3977 { |
3978 found_tag = FALSE; | |
3979 verify_tag = FALSE; | |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3980 pfnote (namebuf, TRUE, |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3981 tline.buffer, save_len, save_lineno, save_lcno); |
240 | 3982 continue; |
3983 } | |
3984 } | |
3985 if (get_tagname) /* grab name of proc or fn */ | |
3986 { | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3987 if (*dbp == '\0') |
240 | 3988 continue; |
3989 | |
3990 /* save all values for later tagging */ | |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
3991 grow_linebuffer (&tline, lb.len + 1); |
240 | 3992 strcpy (tline.buffer, lb.buffer); |
3993 save_lineno = lineno; | |
3994 save_lcno = linecharno; | |
3995 | |
3996 /* grab block name */ | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3997 for (cp = dbp + 1; *cp != '\0' && !endtoken (*cp); cp++) |
240 | 3998 continue; |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3999 namebuf = savenstr (dbp, cp-dbp); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
4000 dbp = cp; /* set dbp to e-o-token */ |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
4001 save_len = dbp - lb.buffer + 1; |
240 | 4002 get_tagname = FALSE; |
4003 found_tag = TRUE; | |
4004 continue; | |
4005 | |
4006 /* and proceed to check for "extern" */ | |
4007 } | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4008 else if (!incomment && !inquote && !found_tag) |
240 | 4009 { |
4010 /* check for proc/fn keywords */ | |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
4011 switch (lowcase (c)) |
240 | 4012 { |
4013 case 'p': | |
4014 if (tail ("rocedure")) /* c = 'p', dbp has advanced */ | |
4015 get_tagname = TRUE; | |
4016 continue; | |
4017 case 'f': | |
4018 if (tail ("unction")) | |
4019 get_tagname = TRUE; | |
4020 continue; | |
4021 } | |
4022 } | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4023 } /* while not eof */ |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
4024 |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
4025 free (tline.buffer); |
240 | 4026 } |
4027 | |
4028 /* | |
4029 * lisp tag functions | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4030 * look for (def or (DEF, quote or QUOTE |
240 | 4031 */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4032 |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4033 static int L_isdef P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4034 static int L_isquote P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4035 static void L_getit P_((void)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4036 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4037 static int |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4038 L_isdef (strp) |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4039 register char *strp; |
240 | 4040 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4041 return ((strp[1] == 'd' || strp[1] == 'D') |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4042 && (strp[2] == 'e' || strp[2] == 'E') |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4043 && (strp[3] == 'f' || strp[3] == 'F')); |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4044 } |
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4045 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4046 static int |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4047 L_isquote (strp) |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4048 register char *strp; |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4049 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4050 return ((*++strp == 'q' || *strp == 'Q') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4051 && (*++strp == 'u' || *strp == 'U') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4052 && (*++strp == 'o' || *strp == 'O') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4053 && (*++strp == 't' || *strp == 'T') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4054 && (*++strp == 'e' || *strp == 'E') |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4055 && iswhite (*++strp)); |
240 | 4056 } |
4057 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4058 static void |
240 | 4059 L_getit () |
4060 { | |
4061 register char *cp; | |
4062 | |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4063 if (*dbp == '\'') /* Skip prefix quote */ |
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4064 dbp++; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4065 else if (*dbp == '(') |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4066 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4067 if (L_isquote (dbp)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4068 dbp += 7; /* Skip "(quote " */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4069 else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4070 dbp += 1; /* Skip "(" before name in (defstruct (foo)) */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4071 dbp = skip_spaces (dbp); |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4072 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4073 |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4074 for (cp = dbp /*+1*/; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4075 *cp != '\0' && *cp != '(' && !iswhite(*cp) && *cp != ')'; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4076 cp++) |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4077 continue; |
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4078 if (cp == dbp) |
240 | 4079 return; |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
4080 |
20071
dd3a2332a66f
(L_getit): Always make named tags so that Emacs
Karl Heuer <kwzh@gnu.org>
parents:
19185
diff
changeset
|
4081 pfnote (savenstr (dbp, cp-dbp), TRUE, |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
4082 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
240 | 4083 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4084 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4085 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4086 Lisp_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4087 FILE *inf; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4088 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4089 LOOP_ON_INPUT_LINES (inf, lb, dbp) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4090 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4091 if (dbp[0] == '(') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4092 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4093 if (L_isdef (dbp)) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4094 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4095 dbp = skip_non_spaces (dbp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4096 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4097 L_getit (); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4098 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4099 else |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4100 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4101 /* Check for (foo::defmumble name-defined ... */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4102 do |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4103 dbp++; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4104 while (*dbp != '\0' && !iswhite (*dbp) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4105 && *dbp != ':' && *dbp != '(' && *dbp != ')'); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4106 if (*dbp == ':') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4107 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4108 do |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4109 dbp++; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4110 while (*dbp == ':'); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4111 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4112 if (L_isdef (dbp - 1)) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4113 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4114 dbp = skip_non_spaces (dbp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4115 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4116 L_getit (); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4117 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4118 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4119 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4120 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4121 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4122 } |
240 | 4123 |
4124 /* | |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4125 * Postscript tag functions |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4126 * Just look for lines where the first character is '/' |
17785
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
4127 * Richard Mlynarik <mly@adoc.xerox.com> |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4128 * Also look at "defineps" for PSWrap |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4129 * suggested by Masatake YAMATO <masata-y@is.aist-nara.ac.jp> |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4130 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4131 static void |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4132 Postscript_functions (inf) |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4133 FILE *inf; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4134 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4135 register char *bp, *ep; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4136 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4137 LOOP_ON_INPUT_LINES (inf, lb, bp) |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4138 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4139 if (bp[0] == '/') |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4140 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4141 for (ep = bp+1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4142 *ep != '\0' && *ep != ' ' && *ep != '{'; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4143 ep++) |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4144 continue; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4145 pfnote (savenstr (bp, ep-bp), TRUE, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4146 lb.buffer, ep - lb.buffer + 1, lineno, linecharno); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4147 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4148 else if (strneq (bp, "defineps", 8)) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4149 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4150 bp = skip_non_spaces (bp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4151 bp = skip_spaces (bp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4152 get_tag (bp); |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4153 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4154 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4155 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4156 |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4157 |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4158 /* |
240 | 4159 * Scheme tag functions |
4160 * look for (def... xyzzy | |
4161 * look for (def... (xyzzy | |
4162 * look for (def ... ((...(xyzzy .... | |
4163 * look for (set! xyzzy | |
4164 */ | |
4165 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4166 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4167 Scheme_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4168 FILE *inf; |
240 | 4169 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4170 register char *bp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4171 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4172 LOOP_ON_INPUT_LINES (inf, lb, bp) |
240 | 4173 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4174 if (bp[0] == '(' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4175 && (bp[1] == 'D' || bp[1] == 'd') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4176 && (bp[2] == 'E' || bp[2] == 'e') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4177 && (bp[3] == 'F' || bp[3] == 'f')) |
240 | 4178 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4179 bp = skip_non_spaces (bp); |
240 | 4180 /* Skip over open parens and white space */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4181 while (iswhite (*bp) || *bp == '(') |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4182 bp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4183 get_tag (bp); |
240 | 4184 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4185 if (bp[0] == '(' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4186 && (bp[1] == 'S' || bp[1] == 's') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4187 && (bp[2] == 'E' || bp[2] == 'e') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4188 && (bp[3] == 'T' || bp[3] == 't') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4189 && (bp[4] == '!' || bp[4] == '!') |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4190 && (iswhite (bp[5]))) |
240 | 4191 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4192 bp = skip_non_spaces (bp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4193 bp = skip_spaces (bp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4194 get_tag (bp); |
240 | 4195 } |
4196 } | |
4197 } | |
4198 | |
4199 /* Find tags in TeX and LaTeX input files. */ | |
4200 | |
4201 /* TEX_toktab is a table of TeX control sequences that define tags. | |
4202 Each TEX_tabent records one such control sequence. | |
4203 CONVERT THIS TO USE THE Stab TYPE!! */ | |
4204 struct TEX_tabent | |
4205 { | |
4206 char *name; | |
4207 int len; | |
4208 }; | |
4209 | |
4210 struct TEX_tabent *TEX_toktab = NULL; /* Table with tag tokens */ | |
4211 | |
4212 /* Default set of control sequences to put into TEX_toktab. | |
4213 The value of environment var TEXTAGS is prepended to this. */ | |
4214 | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4215 char *TEX_defenv = "\ |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
4216 :chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\ |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
4217 :part:appendix:entry:index"; |
240 | 4218 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4219 static void TEX_mode P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4220 static struct TEX_tabent *TEX_decode_env P_((char *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4221 static int TEX_Token P_((char *)); |
240 | 4222 |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4223 char TEX_esc = '\\'; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4224 char TEX_opgrp = '{'; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4225 char TEX_clgrp = '}'; |
240 | 4226 |
4227 /* | |
4228 * TeX/LaTeX scanning loop. | |
4229 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4230 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4231 TeX_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4232 FILE *inf; |
240 | 4233 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4234 char *cp, *lasthit; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4235 register int i; |
240 | 4236 |
4237 /* Select either \ or ! as escape character. */ | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4238 TEX_mode (inf); |
240 | 4239 |
4240 /* Initialize token table once from environment. */ | |
4241 if (!TEX_toktab) | |
4242 TEX_toktab = TEX_decode_env ("TEXTAGS", TEX_defenv); | |
4243 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4244 LOOP_ON_INPUT_LINES (inf, lb, cp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4245 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4246 lasthit = cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4247 /* Look at each esc in line. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4248 while ((cp = etags_strchr (cp, TEX_esc)) != NULL) |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4249 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4250 if (*++cp == '\0') |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4251 break; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4252 linecharno += cp - lasthit; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4253 lasthit = cp; |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4254 i = TEX_Token (lasthit); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4255 if (i >= 0) |
240 | 4256 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4257 /* We seem to include the TeX command in the tag name. |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4258 register char *p; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4259 for (p = lasthit + TEX_toktab[i].len; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4260 *p != '\0' && *p != TEX_clgrp; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4261 p++) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4262 continue; */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4263 pfnote (/*savenstr (lasthit, p-lasthit)*/ (char *)NULL, TRUE, |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4264 lb.buffer, lb.len, lineno, linecharno); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4265 break; /* We only tag a line once */ |
240 | 4266 } |
4267 } | |
4268 } | |
4269 } | |
4270 | |
4271 #define TEX_LESC '\\' | |
4272 #define TEX_SESC '!' | |
4273 #define TEX_cmt '%' | |
4274 | |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
4275 /* Figure out whether TeX's escapechar is '\\' or '!' and set grouping |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
4276 chars accordingly. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4277 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4278 TEX_mode (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4279 FILE *inf; |
240 | 4280 { |
4281 int c; | |
4282 | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4283 while ((c = getc (inf)) != EOF) |
240 | 4284 { |
4285 /* Skip to next line if we hit the TeX comment char. */ | |
4286 if (c == TEX_cmt) | |
4287 while (c != '\n') | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4288 c = getc (inf); |
240 | 4289 else if (c == TEX_LESC || c == TEX_SESC ) |
4290 break; | |
4291 } | |
4292 | |
4293 if (c == TEX_LESC) | |
4294 { | |
4295 TEX_esc = TEX_LESC; | |
4296 TEX_opgrp = '{'; | |
4297 TEX_clgrp = '}'; | |
4298 } | |
4299 else | |
4300 { | |
4301 TEX_esc = TEX_SESC; | |
4302 TEX_opgrp = '<'; | |
4303 TEX_clgrp = '>'; | |
4304 } | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4305 /* If the input file is compressed, inf is a pipe, and rewind may fail. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4306 No attempt is made to correct the situation. */ |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4307 rewind (inf); |
240 | 4308 } |
4309 | |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
4310 /* Read environment and prepend it to the default string. |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
4311 Build token table. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4312 static struct TEX_tabent * |
240 | 4313 TEX_decode_env (evarname, defenv) |
4314 char *evarname; | |
4315 char *defenv; | |
4316 { | |
4317 register char *env, *p; | |
4318 | |
4319 struct TEX_tabent *tab; | |
4320 int size, i; | |
4321 | |
4322 /* Append default string to environment. */ | |
4323 env = getenv (evarname); | |
4324 if (!env) | |
4325 env = defenv; | |
4326 else | |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4327 { |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4328 char *oldenv = env; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4329 env = concat (oldenv, defenv, ""); |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4330 } |
240 | 4331 |
4332 /* Allocate a token table */ | |
4333 for (size = 1, p = env; p;) | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4334 if ((p = etags_strchr (p, ':')) && *++p != '\0') |
240 | 4335 size++; |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4336 /* Add 1 to leave room for null terminator. */ |
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4337 tab = xnew (size + 1, struct TEX_tabent); |
240 | 4338 |
4339 /* Unpack environment string into token table. Be careful about */ | |
4340 /* zero-length strings (leading ':', "::" and trailing ':') */ | |
4341 for (i = 0; *env;) | |
4342 { | |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
4343 p = etags_strchr (env, ':'); |
240 | 4344 if (!p) /* End of environment string. */ |
4345 p = env + strlen (env); | |
4346 if (p - env > 0) | |
4347 { /* Only non-zero strings. */ | |
4348 tab[i].name = savenstr (env, p - env); | |
4349 tab[i].len = strlen (tab[i].name); | |
4350 i++; | |
4351 } | |
4352 if (*p) | |
4353 env = p + 1; | |
4354 else | |
4355 { | |
4356 tab[i].name = NULL; /* Mark end of table. */ | |
4357 tab[i].len = 0; | |
4358 break; | |
4359 } | |
4360 } | |
4361 return tab; | |
4362 } | |
4363 | |
4364 /* If the text at CP matches one of the tag-defining TeX command names, | |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
4365 return the pointer to the first occurrence of that command in TEX_toktab. |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
4366 Otherwise return -1. |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4367 Keep the capital `T' in `token' for dumb truncating compilers |
240 | 4368 (this distinguishes it from `TEX_toktab' */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4369 static int |
240 | 4370 TEX_Token (cp) |
4371 char *cp; | |
4372 { | |
4373 int i; | |
4374 | |
4375 for (i = 0; TEX_toktab[i].len > 0; i++) | |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
4376 if (strneq (TEX_toktab[i].name, cp, TEX_toktab[i].len)) |
240 | 4377 return i; |
4378 return -1; | |
4379 } | |
4380 | |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4381 /* |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4382 * Prolog support (rewritten) by Anders Lindgren, Mar. 96 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4383 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4384 * Assumes that the predicate starts at column 0. |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4385 * Only the first clause of a predicate is added. |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4386 */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4387 static int prolog_pred P_((char *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4388 static void prolog_skip_comment P_((linebuffer *, FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4389 static int prolog_atom P_((char *, int)); |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4390 |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4391 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4392 Prolog_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4393 FILE *inf; |
240 | 4394 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4395 char *cp, *last; |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4396 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4397 int allocated; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4398 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4399 allocated = 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4400 len = 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4401 last = NULL; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4402 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4403 LOOP_ON_INPUT_LINES (inf, lb, cp) |
240 | 4404 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4405 if (cp[0] == '\0') /* Empty line */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4406 continue; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4407 else if (iswhite (cp[0])) /* Not a predicate */ |
240 | 4408 continue; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4409 else if (cp[0] == '/' && cp[1] == '*') /* comment. */ |
16573
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
4410 prolog_skip_comment (&lb, inf); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4411 else if ((len = prolog_pred (cp, last)) > 0) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4412 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4413 /* Predicate. Store the function name so that we only |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
4414 generate a tag for the first clause. */ |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4415 if (last == NULL) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4416 last = xnew(len + 1, char); |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4417 else if (len + 1 > allocated) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4418 last = xrnew (last, len + 1, char); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4419 allocated = len + 1; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4420 strncpy (last, cp, len); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4421 last[len] = '\0'; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4422 } |
240 | 4423 } |
4424 } | |
4425 | |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4426 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4427 static void |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4428 prolog_skip_comment (plb, inf) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4429 linebuffer *plb; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4430 FILE *inf; |
240 | 4431 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4432 char *cp; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4433 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4434 do |
240 | 4435 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4436 for (cp = plb->buffer; *cp != '\0'; cp++) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4437 if (cp[0] == '*' && cp[1] == '/') |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4438 return; |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4439 lineno++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4440 linecharno += readline (plb, inf); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4441 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4442 while (!feof(inf)); |
240 | 4443 } |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4444 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4445 /* |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4446 * A predicate definition is added if it matches: |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4447 * <beginning of line><Prolog Atom><whitespace>( |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4448 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4449 * It is added to the tags database if it doesn't match the |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4450 * name of the previous clause header. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4451 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4452 * Return the size of the name of the predicate, or 0 if no header |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4453 * was found. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4454 */ |
27658
5980f19581dc
(pfnote, new_pfnote, C_entries, prolog_pred, erlang_func): Add
Dave Love <fx@gnu.org>
parents:
27595
diff
changeset
|
4455 static int |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4456 prolog_pred (s, last) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4457 char *s; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4458 char *last; /* Name of last clause. */ |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4459 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4460 int pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4461 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4462 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4463 pos = prolog_atom (s, 0); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4464 if (pos < 1) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4465 return 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4466 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4467 len = pos; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4468 pos = skip_spaces (s + pos) - s; |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4469 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4470 if ((s[pos] == '(') || (s[pos] == '.')) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4471 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4472 if (s[pos] == '(') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4473 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4474 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4475 /* Save only the first clause. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4476 if (last == NULL |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4477 || len != (int)strlen (last) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4478 || !strneq (s, last, len)) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4479 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4480 pfnote (savenstr (s, len), TRUE, s, pos, lineno, linecharno); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4481 return len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4482 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4483 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4484 return 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4485 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4486 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4487 /* |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4488 * Consume a Prolog atom. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4489 * Return the number of bytes consumed, or -1 if there was an error. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4490 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4491 * A prolog atom, in this context, could be one of: |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4492 * - An alphanumeric sequence, starting with a lower case letter. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4493 * - A quoted arbitrary string. Single quotes can escape themselves. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4494 * Backslash quotes everything. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4495 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4496 static int |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4497 prolog_atom (s, pos) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4498 char *s; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4499 int pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4500 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4501 int origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4502 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4503 origpos = pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4504 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4505 if (islower(s[pos]) || (s[pos] == '_')) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4506 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4507 /* The atom is unquoted. */ |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4508 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4509 while (isalnum(s[pos]) || (s[pos] == '_')) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4510 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4511 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4512 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4513 return pos - origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4514 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4515 else if (s[pos] == '\'') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4516 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4517 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4518 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4519 while (1) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4520 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4521 if (s[pos] == '\'') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4522 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4523 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4524 if (s[pos] != '\'') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4525 break; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4526 pos++; /* A double quote */ |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4527 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4528 else if (s[pos] == '\0') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4529 /* Multiline quoted atoms are ignored. */ |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4530 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4531 else if (s[pos] == '\\') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4532 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4533 if (s[pos+1] == '\0') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4534 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4535 pos += 2; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4536 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4537 else |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4538 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4539 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4540 return pos - origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4541 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4542 else |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4543 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4544 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4545 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4546 /* |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4547 * Support for Erlang -- Anders Lindgren, Feb 1996. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4548 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4549 * Generates tags for functions, defines, and records. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4550 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4551 * Assumes that Erlang functions start at column 0. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4552 */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4553 static int erlang_func P_((char *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4554 static void erlang_attribute P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4555 static int erlang_atom P_((char *, int)); |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4556 |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4557 static void |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4558 Erlang_functions (inf) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4559 FILE *inf; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4560 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4561 char *cp, *last; |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4562 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4563 int allocated; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4564 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4565 allocated = 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4566 len = 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4567 last = NULL; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4568 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4569 LOOP_ON_INPUT_LINES (inf, lb, cp) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4570 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4571 if (cp[0] == '\0') /* Empty line */ |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4572 continue; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4573 else if (iswhite (cp[0])) /* Not function nor attribute */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4574 continue; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4575 else if (cp[0] == '%') /* comment */ |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4576 continue; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4577 else if (cp[0] == '"') /* Sometimes, strings start in column one */ |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4578 continue; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4579 else if (cp[0] == '-') /* attribute, e.g. "-define" */ |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4580 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4581 erlang_attribute (cp); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4582 last = NULL; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4583 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4584 else if ((len = erlang_func (cp, last)) > 0) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4585 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4586 /* |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4587 * Function. Store the function name so that we only |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4588 * generates a tag for the first clause. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4589 */ |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4590 if (last == NULL) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4591 last = xnew (len + 1, char); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4592 else if (len + 1 > allocated) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4593 last = xrnew (last, len + 1, char); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4594 allocated = len + 1; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4595 strncpy (last, cp, len); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4596 last[len] = '\0'; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4597 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4598 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4599 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4600 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4601 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4602 /* |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4603 * A function definition is added if it matches: |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4604 * <beginning of line><Erlang Atom><whitespace>( |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4605 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4606 * It is added to the tags database if it doesn't match the |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4607 * name of the previous clause header. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4608 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4609 * Return the size of the name of the function, or 0 if no function |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4610 * was found. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4611 */ |
27658
5980f19581dc
(pfnote, new_pfnote, C_entries, prolog_pred, erlang_func): Add
Dave Love <fx@gnu.org>
parents:
27595
diff
changeset
|
4612 static int |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4613 erlang_func (s, last) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4614 char *s; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4615 char *last; /* Name of last clause. */ |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4616 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4617 int pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4618 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4619 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4620 pos = erlang_atom (s, 0); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4621 if (pos < 1) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4622 return 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4623 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4624 len = pos; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4625 pos = skip_spaces (s + pos) - s; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4626 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4627 /* Save only the first clause. */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4628 if (s[pos++] == '(' |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4629 && (last == NULL |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4630 || len != (int)strlen (last) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4631 || !strneq (s, last, len))) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4632 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4633 pfnote (savenstr (s, len), TRUE, s, pos, lineno, linecharno); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4634 return len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4635 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4636 |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4637 return 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4638 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4639 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4640 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4641 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4642 * Handle attributes. Currently, tags are generated for defines |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4643 * and records. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4644 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4645 * They are on the form: |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4646 * -define(foo, bar). |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4647 * -define(Foo(M, N), M+N). |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4648 * -record(graph, {vtab = notable, cyclic = true}). |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4649 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4650 static void |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4651 erlang_attribute (s) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4652 char *s; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4653 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4654 int pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4655 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4656 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4657 if (strneq (s, "-define", 7) || strneq (s, "-record", 7)) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4658 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4659 pos = skip_spaces (s + 7) - s; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4660 if (s[pos++] == '(') |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4661 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4662 pos = skip_spaces (s + pos) - s; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4663 len = erlang_atom (s, pos); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4664 if (len != 0) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4665 pfnote (savenstr (& s[pos], len), TRUE, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4666 s, pos + len, lineno, linecharno); |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4667 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4668 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4669 return; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4670 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4671 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4672 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4673 /* |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4674 * Consume an Erlang atom (or variable). |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4675 * Return the number of bytes consumed, or -1 if there was an error. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4676 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4677 static int |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4678 erlang_atom (s, pos) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4679 char *s; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4680 int pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4681 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4682 int origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4683 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4684 origpos = pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4685 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4686 if (isalpha (s[pos]) || s[pos] == '_') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4687 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4688 /* The atom is unquoted. */ |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4689 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4690 while (isalnum (s[pos]) || s[pos] == '_') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4691 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4692 return pos - origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4693 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4694 else if (s[pos] == '\'') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4695 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4696 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4697 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4698 while (1) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4699 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4700 if (s[pos] == '\'') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4701 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4702 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4703 break; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4704 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4705 else if (s[pos] == '\0') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4706 /* Multiline quoted atoms are ignored. */ |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4707 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4708 else if (s[pos] == '\\') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4709 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4710 if (s[pos+1] == '\0') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4711 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4712 pos += 2; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4713 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4714 else |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4715 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4716 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4717 return pos - origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4718 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4719 else |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4720 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4721 } |
240 | 4722 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4723 #ifdef ETAGS_REGEXPS |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4724 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4725 static char *scan_separators P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4726 static void analyse_regex P_((char *, bool)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4727 static void add_regex P_((char *, bool, language *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4728 static char *substitute P_((char *, char *, struct re_registers *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4729 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4730 /* Take a string like "/blah/" and turn it into "blah", making sure |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4731 that the first and last characters are the same, and handling |
14021
19bab04cf346
(substitute): Fix spelling in message.
Karl Heuer <kwzh@gnu.org>
parents:
13696
diff
changeset
|
4732 quoted separator characters. Actually, stops on the occurrence of |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4733 an unquoted separator. Also turns "\t" into a Tab character. |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4734 Returns pointer to terminating separator. Works in place. Null |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4735 terminates name string. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4736 static char * |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4737 scan_separators (name) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4738 char *name; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4739 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4740 char sep = name[0]; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4741 char *copyto = name; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4742 bool quoted = FALSE; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4743 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4744 for (++name; *name != '\0'; ++name) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4745 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4746 if (quoted) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4747 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4748 if (*name == 't') |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4749 *copyto++ = '\t'; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4750 else if (*name == sep) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4751 *copyto++ = sep; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4752 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4753 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4754 /* Something else is quoted, so preserve the quote. */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4755 *copyto++ = '\\'; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4756 *copyto++ = *name; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4757 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4758 quoted = FALSE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4759 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4760 else if (*name == '\\') |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4761 quoted = TRUE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4762 else if (*name == sep) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4763 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4764 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4765 *copyto++ = *name; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4766 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4767 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4768 /* Terminate copied string. */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4769 *copyto = '\0'; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4770 return name; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4771 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4772 |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4773 /* Look at the argument of --regex or --no-regex and do the right |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4774 thing. Same for each line of a regexp file. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4775 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4776 analyse_regex (regex_arg, ignore_case) |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4777 char *regex_arg; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4778 bool ignore_case; |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4779 { |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4780 if (regex_arg == NULL) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4781 free_patterns (); /* --no-regex: remove existing regexps */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4782 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4783 /* A real --regexp option or a line in a regexp file. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4784 switch (regex_arg[0]) |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4785 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4786 /* Comments in regexp file or null arg to --regex. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4787 case '\0': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4788 case ' ': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4789 case '\t': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4790 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4791 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4792 /* Read a regex file. This is recursive and may result in a |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4793 loop, which will stop when the file descriptors are exhausted. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4794 case '@': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4795 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4796 FILE *regexfp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4797 linebuffer regexbuf; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4798 char *regexfile = regex_arg + 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4799 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4800 /* regexfile is a file containing regexps, one per line. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4801 regexfp = fopen (regexfile, "r"); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4802 if (regexfp == NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4803 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4804 pfatal (regexfile); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4805 return; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4806 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4807 initbuffer (®exbuf); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4808 while (readline_internal (®exbuf, regexfp) > 0) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4809 analyse_regex (regexbuf.buffer, ignore_case); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4810 free (regexbuf.buffer); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4811 fclose (regexfp); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4812 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4813 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4814 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4815 /* Regexp to be used for a specific language only. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4816 case '{': |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4817 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4818 language *lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4819 char *lang_name = regex_arg + 1; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4820 char *cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4821 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4822 for (cp = lang_name; *cp != '}'; cp++) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4823 if (*cp == '\0') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4824 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4825 error ("unterminated language name in regex: %s", regex_arg); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4826 return; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4827 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4828 *cp = '\0'; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4829 lang = get_language_from_name (lang_name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4830 if (lang == NULL) |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4831 return; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4832 add_regex (cp + 1, ignore_case, lang); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4833 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4834 break; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4835 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4836 /* Regexp to be used for any language. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4837 default: |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4838 add_regex (regex_arg, ignore_case, NULL); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4839 break; |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4840 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4841 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4842 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4843 /* Turn a name, which is an ed-style (but Emacs syntax) regular |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4844 expression, into a real regular expression by compiling it. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4845 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4846 add_regex (regexp_pattern, ignore_case, lang) |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4847 char *regexp_pattern; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4848 bool ignore_case; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4849 language *lang; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4850 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4851 char *name; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4852 const char *err; |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4853 struct re_pattern_buffer *patbuf; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4854 pattern *pp; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4855 |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4856 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4857 if (regexp_pattern[strlen(regexp_pattern)-1] != regexp_pattern[0]) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4858 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4859 error ("%s: unterminated regexp", regexp_pattern); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4860 return; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4861 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4862 name = scan_separators (regexp_pattern); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4863 if (regexp_pattern[0] == '\0') |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4864 { |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
4865 error ("null regexp", (char *)NULL); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4866 return; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4867 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4868 (void) scan_separators (name); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4869 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4870 patbuf = xnew (1, struct re_pattern_buffer); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4871 /* Translation table to fold case if appropriate. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4872 patbuf->translate = (ignore_case) ? lc_trans : NULL; |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4873 patbuf->fastmap = NULL; |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4874 patbuf->buffer = NULL; |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4875 patbuf->allocated = 0; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4876 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4877 err = re_compile_pattern (regexp_pattern, strlen (regexp_pattern), patbuf); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4878 if (err != NULL) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4879 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4880 error ("%s while compiling pattern", err); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4881 return; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4882 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4883 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4884 pp = p_head; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4885 p_head = xnew (1, pattern); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4886 p_head->regex = savestr (regexp_pattern); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4887 p_head->p_next = pp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4888 p_head->language = lang; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4889 p_head->pattern = patbuf; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4890 p_head->name_pattern = savestr (name); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4891 p_head->error_signaled = FALSE; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4892 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4893 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4894 /* |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
4895 * Do the substitutions indicated by the regular expression and |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4896 * arguments. |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4897 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4898 static char * |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4899 substitute (in, out, regs) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4900 char *in, *out; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4901 struct re_registers *regs; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4902 { |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4903 char *result, *t; |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4904 int size, dig, diglen; |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4905 |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4906 result = NULL; |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4907 size = strlen (out); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4908 |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4909 /* Pass 1: figure out how much to allocate by finding all \N strings. */ |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4910 if (out[size - 1] == '\\') |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4911 fatal ("pattern error in \"%s\"", out); |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4912 for (t = etags_strchr (out, '\\'); |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4913 t != NULL; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4914 t = etags_strchr (t + 2, '\\')) |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4915 if (isdigit (t[1])) |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4916 { |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4917 dig = t[1] - '0'; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4918 diglen = regs->end[dig] - regs->start[dig]; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4919 size += diglen - 2; |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4920 } |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4921 else |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4922 size -= 1; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4923 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4924 /* Allocate space and do the substitutions. */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4925 result = xnew (size + 1, char); |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4926 |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4927 for (t = result; *out != '\0'; out++) |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4928 if (*out == '\\' && isdigit (*++out)) |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4929 { |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4930 /* Using "dig2" satisfies my debugger. Bleah. */ |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4931 dig = *out - '0'; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4932 diglen = regs->end[dig] - regs->start[dig]; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4933 strncpy (t, in + regs->start[dig], diglen); |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4934 t += diglen; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4935 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4936 else |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4937 *t++ = *out; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4938 *t = '\0'; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4939 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4940 if (DEBUG && (t > result + size || t - result != (int)strlen (result))) |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4941 abort (); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4942 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4943 return result; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4944 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4945 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4946 /* Deallocate all patterns. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4947 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4948 free_patterns () |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4949 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4950 pattern *pp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4951 while (p_head != NULL) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4952 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4953 pp = p_head->p_next; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4954 free (p_head->regex); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4955 free (p_head->name_pattern); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4956 free (p_head); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4957 p_head = pp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4958 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4959 return; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4960 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4961 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4962 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4963 get_tag (bp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4964 register char *bp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4965 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4966 register char *cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4967 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4968 if (*bp == '\0') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4969 return; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4970 /* Go till you get to white space or a syntactic break */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4971 for (cp = bp + 1; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4972 *cp != '\0' && *cp != '(' && *cp != ')' && !iswhite (*cp); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4973 cp++) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4974 continue; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4975 pfnote (savenstr (bp, cp-bp), TRUE, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4976 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4977 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4978 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4979 #endif /* ETAGS_REGEXPS */ |
240 | 4980 /* Initialize a linebuffer for use */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4981 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4982 initbuffer (lbp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4983 linebuffer *lbp; |
240 | 4984 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4985 lbp->size = 200; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4986 lbp->buffer = xnew (200, char); |
240 | 4987 } |
4988 | |
4989 /* | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4990 * Read a line of text from `stream' into `lbp', excluding the |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4991 * newline or CR-NL, if any. Return the number of characters read from |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4992 * `stream', which is the length of the line including the newline. |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4993 * |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4994 * On DOS or Windows we do not count the CR character, if any, before the |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4995 * NL, in the returned length; this mirrors the behavior of emacs on those |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4996 * platforms (for text files, it translates CR-NL to NL as it reads in the |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4997 * file). |
240 | 4998 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4999 static long |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5000 readline_internal (lbp, stream) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5001 linebuffer *lbp; |
240 | 5002 register FILE *stream; |
5003 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5004 char *buffer = lbp->buffer; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5005 register char *p = lbp->buffer; |
240 | 5006 register char *pend; |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5007 int chars_deleted; |
240 | 5008 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5009 pend = p + lbp->size; /* Separate to avoid 386/IX compiler bug. */ |
240 | 5010 |
5011 while (1) | |
5012 { | |
5013 register int c = getc (stream); | |
5014 if (p == pend) | |
5015 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5016 /* We're at the end of linebuffer: expand it. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5017 lbp->size *= 2; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5018 buffer = xrnew (buffer, lbp->size, char); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5019 p += buffer - lbp->buffer; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5020 pend = buffer + lbp->size; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5021 lbp->buffer = buffer; |
240 | 5022 } |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5023 if (c == EOF) |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5024 { |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
5025 *p = '\0'; |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5026 chars_deleted = 0; |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5027 break; |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5028 } |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5029 if (c == '\n') |
240 | 5030 { |
10990
c0ceaa45ded7
* etags.c (process_file): free (filename) after using it.
Francesco Potortì <pot@gnu.org>
parents:
10801
diff
changeset
|
5031 if (p > buffer && p[-1] == '\r') |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5032 { |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5033 p -= 1; |
15772
eb1cef7102e3
(readline_internal) [DOS_NT]: Don't include CRs when
Richard M. Stallman <rms@gnu.org>
parents:
15683
diff
changeset
|
5034 #ifdef DOS_NT |
16373
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
5035 /* Assume CRLF->LF translation will be performed by Emacs |
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
5036 when loading this file, so CRs won't appear in the buffer. |
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
5037 It would be cleaner to compensate within Emacs; |
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
5038 however, Emacs does not know how many CRs were deleted |
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
5039 before any given point in the file. */ |
15772
eb1cef7102e3
(readline_internal) [DOS_NT]: Don't include CRs when
Richard M. Stallman <rms@gnu.org>
parents:
15683
diff
changeset
|
5040 chars_deleted = 1; |
eb1cef7102e3
(readline_internal) [DOS_NT]: Don't include CRs when
Richard M. Stallman <rms@gnu.org>
parents:
15683
diff
changeset
|
5041 #else |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5042 chars_deleted = 2; |
15772
eb1cef7102e3
(readline_internal) [DOS_NT]: Don't include CRs when
Richard M. Stallman <rms@gnu.org>
parents:
15683
diff
changeset
|
5043 #endif |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5044 } |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5045 else |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5046 { |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5047 chars_deleted = 1; |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5048 } |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5049 *p = '\0'; |
240 | 5050 break; |
5051 } | |
5052 *p++ = c; | |
5053 } | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5054 lbp->len = p - buffer; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5055 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5056 return lbp->len + chars_deleted; |
240 | 5057 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5058 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5059 /* |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5060 * Like readline_internal, above, but in addition try to match the |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5061 * input line against relevant regular expressions. |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5062 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5063 static long |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5064 readline (lbp, stream) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5065 linebuffer *lbp; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5066 FILE *stream; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5067 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5068 /* Read new line. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5069 long result = readline_internal (lbp, stream); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5070 #ifdef ETAGS_REGEXPS |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5071 int match; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5072 pattern *pp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5073 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5074 /* Match against relevant patterns. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5075 if (lbp->len > 0) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5076 for (pp = p_head; pp != NULL; pp = pp->p_next) |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5077 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5078 /* Only use generic regexps or those for the current language. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5079 if (pp->language != NULL && pp->language != curlang) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5080 continue; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5081 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5082 match = re_match (pp->pattern, lbp->buffer, lbp->len, 0, &pp->regs); |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5083 switch (match) |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5084 { |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5085 case -2: |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5086 /* Some error. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5087 if (!pp->error_signaled) |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5088 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5089 error ("error while matching \"%s\"", pp->regex); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5090 pp->error_signaled = TRUE; |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5091 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5092 break; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5093 case -1: |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5094 /* No match. */ |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5095 break; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5096 default: |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5097 /* Match occurred. Construct a tag. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5098 if (pp->name_pattern[0] != '\0') |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5099 { |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5100 /* Make a named tag. */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5101 char *name = substitute (lbp->buffer, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5102 pp->name_pattern, &pp->regs); |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5103 if (name != NULL) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5104 pfnote (name, TRUE, lbp->buffer, match, lineno, linecharno); |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5105 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5106 else |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5107 { |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5108 /* Make an unnamed tag. */ |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5109 pfnote ((char *)NULL, TRUE, |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5110 lbp->buffer, match, lineno, linecharno); |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5111 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5112 break; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5113 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5114 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5115 #endif /* ETAGS_REGEXPS */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5116 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5117 return result; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5118 } |
240 | 5119 |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5120 /* |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5121 * Return a pointer to a space of size strlen(cp)+1 allocated |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5122 * with xnew where the string CP has been copied. |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5123 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5124 static char * |
240 | 5125 savestr (cp) |
5126 char *cp; | |
5127 { | |
5128 return savenstr (cp, strlen (cp)); | |
5129 } | |
5130 | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5131 /* |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5132 * Return a pointer to a space of size LEN+1 allocated with xnew where |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5133 * the string CP has been copied for at most the first LEN characters. |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5134 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5135 static char * |
240 | 5136 savenstr (cp, len) |
5137 char *cp; | |
5138 int len; | |
5139 { | |
5140 register char *dp; | |
5141 | |
5142 dp = xnew (len + 1, char); | |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5143 strncpy (dp, cp, len); |
240 | 5144 dp[len] = '\0'; |
5145 return dp; | |
5146 } | |
5147 | |
5148 /* | |
5149 * Return the ptr in sp at which the character c last | |
5150 * appears; NULL if not found | |
5151 * | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5152 * Identical to POSIX strrchr, included for portability. |
240 | 5153 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5154 static char * |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5155 etags_strrchr (sp, c) |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5156 register const char *sp; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5157 register int c; |
240 | 5158 { |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5159 register const char *r; |
240 | 5160 |
5161 r = NULL; | |
5162 do | |
5163 { | |
5164 if (*sp == c) | |
5165 r = sp; | |
5166 } while (*sp++); | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5167 return (char *)r; |
240 | 5168 } |
5169 | |
774 | 5170 |
240 | 5171 /* |
5172 * Return the ptr in sp at which the character c first | |
5173 * appears; NULL if not found | |
5174 * | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5175 * Identical to POSIX strchr, included for portability. |
240 | 5176 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5177 static char * |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5178 etags_strchr (sp, c) |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5179 register const char *sp; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5180 register int c; |
240 | 5181 { |
5182 do | |
5183 { | |
5184 if (*sp == c) | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5185 return (char *)sp; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5186 } while (*sp++); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5187 return NULL; |
240 | 5188 } |
5189 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5190 /* Skip spaces, return new pointer. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5191 static char * |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5192 skip_spaces (cp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5193 char *cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5194 { |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
5195 while (iswhite (*cp)) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5196 cp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5197 return cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5198 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5199 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5200 /* Skip non spaces, return new pointer. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5201 static char * |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5202 skip_non_spaces (cp) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5203 char *cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5204 { |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
5205 while (*cp != '\0' && !iswhite (*cp)) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5206 cp++; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5207 return cp; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5208 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5209 |
240 | 5210 /* Print error message and exit. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5211 static void |
240 | 5212 fatal (s1, s2) |
5213 char *s1, *s2; | |
5214 { | |
5215 error (s1, s2); | |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5216 exit (BAD); |
240 | 5217 } |
5218 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5219 static void |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5220 pfatal (s1) |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5221 char *s1; |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5222 { |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5223 perror (s1); |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5224 exit (BAD); |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5225 } |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5226 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5227 static void |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5228 suggest_asking_for_help () |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5229 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5230 fprintf (stderr, "\tTry `%s %s' for a complete list of options.\n", |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5231 progname, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5232 #ifdef LONG_OPTIONS |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5233 "--help" |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5234 #else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5235 "-h" |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5236 #endif |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5237 ); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5238 exit (BAD); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5239 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5240 |
240 | 5241 /* Print error message. `s1' is printf control string, `s2' is arg for it. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5242 static void |
240 | 5243 error (s1, s2) |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5244 const char *s1, *s2; |
240 | 5245 { |
5246 fprintf (stderr, "%s: ", progname); | |
5247 fprintf (stderr, s1, s2); | |
5248 fprintf (stderr, "\n"); | |
5249 } | |
5250 | |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5251 /* Return a newly-allocated string whose contents |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5252 concatenate those of s1, s2, s3. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5253 static char * |
240 | 5254 concat (s1, s2, s3) |
5255 char *s1, *s2, *s3; | |
5256 { | |
5257 int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3); | |
5258 char *result = xnew (len1 + len2 + len3 + 1, char); | |
5259 | |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5260 strcpy (result, s1); |
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5261 strcpy (result + len1, s2); |
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5262 strcpy (result + len1 + len2, s3); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5263 result[len1 + len2 + len3] = '\0'; |
240 | 5264 |
5265 return result; | |
5266 } | |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5267 |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5268 /* Does the same work as the system V getcwd, but does not need to |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
5269 guess the buffer size in advance. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5270 static char * |
7227
6fa038c33a0f
[MSDOS]: #include <sys/param.h> for the following.
Richard M. Stallman <rms@gnu.org>
parents:
7049
diff
changeset
|
5271 etags_getcwd () |
11992
e550e0d13e83
* etags.c (etags_getcwd): Undo the /bin/pwd change. It may raise
Francesco Potortì <pot@gnu.org>
parents:
11990
diff
changeset
|
5272 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5273 #ifdef HAVE_GETCWD |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5274 int bufsize = 200; |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5275 char *path = xnew (bufsize, char); |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5276 |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5277 while (getcwd (path, bufsize) == NULL) |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5278 { |
9975
e21b0674f37c
* etags.c (<errno.h>): #include added.
Francesco Potortì <pot@gnu.org>
parents:
9773
diff
changeset
|
5279 if (errno != ERANGE) |
11886
c5db1295f7df
* etags.c (etags_getcwd): Use /bin/pwd instead of pwd because the
Francesco Potortì <pot@gnu.org>
parents:
11673
diff
changeset
|
5280 pfatal ("getcwd"); |
9975
e21b0674f37c
* etags.c (<errno.h>): #include added.
Francesco Potortì <pot@gnu.org>
parents:
9773
diff
changeset
|
5281 bufsize *= 2; |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
5282 free (path); |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5283 path = xnew (bufsize, char); |
8789
81a2817b99b2
(etags_getcwd): Use getcwd if available.
Karl Heuer <kwzh@gnu.org>
parents:
8180
diff
changeset
|
5284 } |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5285 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5286 canonicalize_filename (path); |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5287 return path; |
16394
675944d1abc9
(etags_getcwd) [WINDOWSNT]: Convert backslashes to slashes.
Richard M. Stallman <rms@gnu.org>
parents:
16373
diff
changeset
|
5288 |
16086
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5289 #else /* not HAVE_GETCWD */ |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5290 #ifdef MSDOS |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5291 char *p, path[MAXPATHLEN + 1]; /* Fixed size is safe on MSDOS. */ |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5292 |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5293 getwd (path); |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5294 |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5295 for (p = path; *p != '\0'; p++) |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5296 if (*p == '\\') |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5297 *p = '/'; |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5298 else |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5299 *p = lowcase (*p); |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5300 |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5301 return strdup (path); |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5302 #else /* not MSDOS */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5303 linebuffer path; |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5304 FILE *pipe; |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5305 |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5306 initbuffer (&path); |
11990
1e5d25c997ca
* etags.c (etags_getcwd): Undo the /bin/pwd change. It may raise
Francesco Potortì <pot@gnu.org>
parents:
11957
diff
changeset
|
5307 pipe = (FILE *) popen ("pwd 2>/dev/null", "r"); |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5308 if (pipe == NULL || readline_internal (&path, pipe) == 0) |
11990
1e5d25c997ca
* etags.c (etags_getcwd): Undo the /bin/pwd change. It may raise
Francesco Potortì <pot@gnu.org>
parents:
11957
diff
changeset
|
5309 pfatal ("pwd"); |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5310 pclose (pipe); |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5311 |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5312 return path.buffer; |
16086
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5313 #endif /* not MSDOS */ |
11992
e550e0d13e83
* etags.c (etags_getcwd): Undo the /bin/pwd change. It may raise
Francesco Potortì <pot@gnu.org>
parents:
11990
diff
changeset
|
5314 #endif /* not HAVE_GETCWD */ |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5315 } |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5316 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5317 /* Return a newly allocated string containing the file name of FILE |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5318 relative to the absolute directory DIR (which should end with a slash). */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5319 static char * |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5320 relative_filename (file, dir) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5321 char *file, *dir; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5322 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5323 char *fp, *dp, *afn, *res; |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5324 int i; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5325 |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
5326 /* Find the common root of file and dir (with a trailing slash). */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5327 afn = absolute_filename (file, cwd); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5328 fp = afn; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5329 dp = dir; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5330 while (*fp++ == *dp++) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5331 continue; |
16573
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
5332 fp--, dp--; /* back to the first differing char */ |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5333 #ifdef DOS_NT |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5334 if (fp == afn && afn[0] != '/') /* cannot build a relative name */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5335 return afn; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5336 #endif |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5337 do /* look at the equal chars until '/' */ |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
5338 fp--, dp--; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5339 while (*fp != '/'); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5340 |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5341 /* Build a sequence of "../" strings for the resulting relative file name. */ |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5342 i = 0; |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5343 while ((dp = etags_strchr (dp + 1, '/')) != NULL) |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5344 i += 1; |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5345 res = xnew (3*i + strlen (fp + 1) + 1, char); |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5346 res[0] = '\0'; |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5347 while (i-- > 0) |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5348 strcat (res, "../"); |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5349 |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5350 /* Add the file name relative to the common root of file and dir. */ |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5351 strcat (res, fp + 1); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5352 free (afn); |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
5353 |
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
5354 return res; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5355 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5356 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5357 /* Return a newly allocated string containing the absolute file name |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5358 of FILE given DIR (which should end with a slash). */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5359 static char * |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5360 absolute_filename (file, dir) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5361 char *file, *dir; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5362 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5363 char *slashp, *cp, *res; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5364 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5365 if (filename_is_absolute (file)) |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5366 res = savestr (file); |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5367 #ifdef DOS_NT |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5368 /* We don't support non-absolute file names with a drive |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5369 letter, like `d:NAME' (it's too much hassle). */ |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5370 else if (file[1] == ':') |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5371 fatal ("%s: relative file names with drive letters not supported", file); |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5372 #endif |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5373 else |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5374 res = concat (dir, file, ""); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5375 |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5376 /* Delete the "/dirname/.." and "/." substrings. */ |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5377 slashp = etags_strchr (res, '/'); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5378 while (slashp != NULL && slashp[0] != '\0') |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5379 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5380 if (slashp[1] == '.') |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5381 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5382 if (slashp[2] == '.' |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5383 && (slashp[3] == '/' || slashp[3] == '\0')) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5384 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5385 cp = slashp; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5386 do |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5387 cp--; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5388 while (cp >= res && !filename_is_absolute (cp)); |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5389 if (cp < res) |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5390 cp = slashp; /* the absolute name begins with "/.." */ |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5391 #ifdef DOS_NT |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5392 /* Under MSDOS and NT we get `d:/NAME' as absolute |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5393 file name, so the luser could say `d:/../NAME'. |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5394 We silently treat this as `d:/NAME'. */ |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5395 else if (cp[0] != '/') |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5396 cp = slashp; |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5397 #endif |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5398 strcpy (cp, slashp + 3); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5399 slashp = cp; |
7776
f91e2cf8770b
* etags.c (absolute_filename): Remove infinite loop bug when
Francesco Potortì <pot@gnu.org>
parents:
7775
diff
changeset
|
5400 continue; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5401 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5402 else if (slashp[2] == '/' || slashp[2] == '\0') |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5403 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5404 strcpy (slashp, slashp + 2); |
7776
f91e2cf8770b
* etags.c (absolute_filename): Remove infinite loop bug when
Francesco Potortì <pot@gnu.org>
parents:
7775
diff
changeset
|
5405 continue; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5406 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5407 } |
7776
f91e2cf8770b
* etags.c (absolute_filename): Remove infinite loop bug when
Francesco Potortì <pot@gnu.org>
parents:
7775
diff
changeset
|
5408 |
f91e2cf8770b
* etags.c (absolute_filename): Remove infinite loop bug when
Francesco Potortì <pot@gnu.org>
parents:
7775
diff
changeset
|
5409 slashp = etags_strchr (slashp + 1, '/'); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5410 } |
24140
9e4d1d3eab09
(etags_getcwd, absolute_filename) [DOS_NT]: Canonicalize
Geoff Voelker <voelker@cs.washington.edu>
parents:
24059
diff
changeset
|
5411 |
17477
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5412 if (res[0] == '\0') |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5413 return savestr ("/"); |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5414 else |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5415 return res; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5416 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5417 |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5418 /* Return a newly allocated string containing the absolute |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5419 file name of dir where FILE resides given DIR (which should |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5420 end with a slash). */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5421 static char * |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5422 absolute_dirname (file, dir) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5423 char *file, *dir; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5424 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5425 char *slashp, *res; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5426 char save; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5427 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5428 canonicalize_filename (file); |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5429 slashp = etags_strrchr (file, '/'); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5430 if (slashp == NULL) |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5431 return savestr (dir); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5432 save = slashp[1]; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5433 slashp[1] = '\0'; |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5434 res = absolute_filename (file, dir); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5435 slashp[1] = save; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5436 |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5437 return res; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5438 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5439 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5440 /* Whether the argument string is an absolute file name. The argument |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5441 string must have been canonicalized with canonicalize_filename. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5442 static bool |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5443 filename_is_absolute (fn) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5444 char *fn; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5445 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5446 return (fn[0] == '/' |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5447 #ifdef DOS_NT |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5448 || (isalpha(fn[0]) && fn[1] == ':' && fn[2] == '/') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5449 #endif |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5450 ); |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5451 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5452 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5453 /* Translate backslashes into slashes. Works in place. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5454 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5455 canonicalize_filename (fn) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5456 register char *fn; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5457 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5458 #ifdef DOS_NT |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
5459 /* Canonicalize drive letter case. */ |
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
5460 if (islower (fn[0])) |
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
5461 fn[0] = toupper (fn[0]); |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5462 /* Convert backslashes to slashes. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5463 for (; *fn != '\0'; fn++) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5464 if (*fn == '\\') |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5465 *fn = '/'; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5466 #else |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5467 /* No action. */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5468 fn = NULL; /* shut up the compiler */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5469 #endif |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5470 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5471 |
16573
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
5472 /* Increase the size of a linebuffer. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5473 static void |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5474 grow_linebuffer (lbp, toksize) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5475 linebuffer *lbp; |
16573
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
5476 int toksize; |
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
5477 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5478 while (lbp->size < toksize) |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5479 lbp->size *= 2; |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5480 lbp->buffer = xrnew (lbp->buffer, lbp->size, char); |
16573
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
5481 } |
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
5482 |
240 | 5483 /* Like malloc but get fatal error if memory is exhausted. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5484 static long * |
240 | 5485 xmalloc (size) |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
5486 unsigned int size; |
240 | 5487 { |
11673
46d2178719ad
(C_entries): Cast result of xrealloc.
Richard M. Stallman <rms@gnu.org>
parents:
11231
diff
changeset
|
5488 long *result = (long *) malloc (size); |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5489 if (result == NULL) |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
5490 fatal ("virtual memory exhausted", (char *)NULL); |
240 | 5491 return result; |
5492 } | |
5493 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5494 static long * |
240 | 5495 xrealloc (ptr, size) |
5496 char *ptr; | |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
5497 unsigned int size; |
240 | 5498 { |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
5499 long *result = (long *) realloc (ptr, size); |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5500 if (result == NULL) |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
5501 fatal ("virtual memory exhausted", (char *)NULL); |
240 | 5502 return result; |
5503 } |