Mercurial > emacs
annotate lib-src/etags.c @ 32931:cbbde5af8152
*** empty log message ***
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Thu, 26 Oct 2000 21:43:55 +0000 |
parents | 1ccc2bce4062 |
children | 9286b7ab7104 |
rev | line source |
---|---|
240 | 1 /* Tags file maker to go with GNU Emacs |
28663
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
2 Copyright (C) 1984, 87, 88, 89, 93, 94, 95, 98, 99, 2000 |
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 *)); |
28663
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
258 static void Texinfo_functions P_ ((FILE *)); |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
259 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
|
260 |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
261 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
|
262 static void print_version P_((void)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
263 static void print_help P_((void)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
264 int main P_((int, char **)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
265 static int number_len P_((long)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
266 |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
267 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
|
268 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
|
269 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
|
270 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
|
271 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
|
272 static long readline P_((linebuffer *, FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
273 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
|
274 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
|
275 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
276 #ifdef ETAGS_REGEXPS |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
277 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
|
278 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
|
279 static void free_patterns P_((void)); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
280 #endif /* ETAGS_REGEXPS */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
281 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
|
282 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
|
283 static void fatal P_((char *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
284 static void pfatal P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
285 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
|
286 |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
287 static void init P_((void)); |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
288 static void initbuffer P_((linebuffer *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
289 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
|
290 static void free_tree P_((node *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
291 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
|
292 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
|
293 static void process_file P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
294 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
|
295 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
|
296 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
297 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
|
298 static char *skip_spaces P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
299 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
|
300 static char *savenstr P_((char *, int)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
301 static char *savestr P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
302 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
|
303 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
|
304 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
|
305 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
|
306 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
|
307 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
|
308 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
|
309 static void canonicalize_filename P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
310 static void grow_linebuffer P_((linebuffer *, int)); |
30231
5b3608e3adaf
(xmalloc, xrealloc): Make externally visible, for use
Gerd Moellmann <gerd@gnu.org>
parents:
28663
diff
changeset
|
311 long *xmalloc P_((unsigned int)); |
5b3608e3adaf
(xmalloc, xrealloc): Make externally visible, for use
Gerd Moellmann <gerd@gnu.org>
parents:
28663
diff
changeset
|
312 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
|
313 |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
314 |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
315 char searchar = '/'; /* use /.../ searches */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
316 |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
317 char *tagfile; /* output file */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
318 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
|
319 char *cwd; /* current working directory */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
320 char *tagfiledir; /* directory of tagfile */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
321 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
|
322 |
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 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
|
324 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
|
325 |
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 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
|
327 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
|
328 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
|
329 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
|
330 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
331 node *head; /* the head of the binary tree of tags */ |
240 | 332 |
26262
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 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
|
334 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
|
335 struct |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
336 { |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
337 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
|
338 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
|
339 } lbs[2]; |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
340 |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
341 /* boolean "functions" (see init) */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
342 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
|
343 char |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
344 /* white chars */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
345 *white = " \f\t\n\r\v", |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
346 /* 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
|
347 *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
|
348 /* 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
|
349 *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
|
350 /* token starting chars */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
351 *begtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$~@", |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
352 /* valid in-token chars */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
353 *midtk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz$0123456789"; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
354 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
355 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
|
356 /* 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
|
357 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
|
358 bool typedefs_and_cplusplus; /* -T: create tags for C typedefs, level */ |
240 | 359 /* 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
|
360 /* member functions. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
361 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
|
362 /* constants and variables. */ |
240 | 363 /* -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
|
364 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
|
365 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
|
366 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
|
367 bool update; /* -u: update tags */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
368 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
|
369 bool no_warnings; /* -w: suppress warnings */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
370 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
|
371 bool cplusplus; /* .[hc] means C++, not C */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
372 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
|
373 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
|
374 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
375 #ifdef LONG_OPTIONS |
10047
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
376 struct option longopts[] = |
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
377 { |
26262
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 { "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
|
379 { "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
|
380 { "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
|
381 { "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
|
382 { "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
|
383 { "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
|
384 { "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
|
385 { "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
|
386 { "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
|
387 { "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
|
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 { "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
|
390 { "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
|
391 { "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
|
392 { "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
|
393 { "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
|
394 { "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
|
395 { "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
|
396 { "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
|
397 #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
|
398 { "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
|
399 { "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
|
400 { "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
|
401 #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
|
402 { "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
|
403 { "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
|
404 { "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
|
405 { "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
|
406 { "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
|
407 { NULL } |
621 | 408 }; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
409 #endif /* LONG_OPTIONS */ |
621 | 410 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
411 #ifdef ETAGS_REGEXPS |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
412 /* 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
|
413 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
|
414 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
|
415 { |
26262
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 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
|
417 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
|
418 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
|
419 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
|
420 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
|
421 char *name_pattern; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
422 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
|
423 } 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
|
424 |
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 /* 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
|
426 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
|
427 |
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 /* 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
|
429 #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
|
430 /* 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
|
431 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
|
432 #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
|
433 |
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 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
|
435 { |
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 { "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
|
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 { "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
|
440 { "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
|
441 { NULL } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
442 }; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
443 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
444 /* |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
445 * Language stuff. |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
446 */ |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
447 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
448 /* 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
|
449 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
|
450 |
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 /* 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
|
452 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
|
453 { "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
|
454 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
455 /* Assembly code */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
456 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
|
457 "asm", /* Microcontroller assembly */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
458 "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
|
459 "inc", /* Microcontroller include files */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
460 "ins", /* Microcontroller include files */ |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
461 "s", "sa", /* Unix assembler */ |
19185
77910f9661a9
(Yacc_suffixes, Asm_suffixes): Add some alternatives.
Richard M. Stallman <rms@gnu.org>
parents:
18881
diff
changeset
|
462 "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
|
463 "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
|
464 NULL |
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 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
467 /* 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
|
468 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
|
469 char *default_C_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
470 { "c", "h", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
471 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
472 char *Cplusplus_suffixes [] = |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
473 { "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
|
474 "M", /* Objective C++ */ |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
475 "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
|
476 NULL }; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
477 |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
478 char *Cjava_suffixes [] = |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
479 { "java", NULL }; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
480 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
481 char *Cobol_suffixes [] = |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
482 { "COB", "cob", NULL }; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
483 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
484 char *Cstar_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
485 { "cs", "hs", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
486 |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
487 char *Erlang_suffixes [] = |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
488 { "erl", "hrl", NULL }; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
489 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
490 char *Fortran_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
491 { "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
|
492 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
493 char *Lisp_suffixes [] = |
27948 | 494 { "cl", "clisp", "el", "l", "lisp", "lsp", "ml", "LSP", NULL }; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
495 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
496 char *Pascal_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
497 { "p", "pas", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
498 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
499 char *Perl_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
500 { "pl", "pm", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
501 char *Perl_interpreters [] = |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
502 { "perl", "@PERL@", NULL }; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
503 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
504 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
|
505 { "pc", /* Pro*C file */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
506 "m", /* Objective C file */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
507 "lm", /* Objective lex file */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
508 NULL }; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
509 |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
510 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
|
511 { "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
|
512 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
513 char *Prolog_suffixes [] = |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
514 { "prolog", NULL }; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
515 |
26262
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 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
|
517 { "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
|
518 |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
519 /* 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
|
520 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
|
521 { "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
|
522 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
523 char *TeX_suffixes [] = |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
524 { "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
|
525 |
28663
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
526 char *Texinfo_suffixes [] = |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
527 { "texi", "txi", "texinfo", NULL }; |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
528 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
529 char *Yacc_suffixes [] = |
19185
77910f9661a9
(Yacc_suffixes, Asm_suffixes): Add some alternatives.
Richard M. Stallman <rms@gnu.org>
parents:
18881
diff
changeset
|
530 { "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
|
531 |
26262
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 /* |
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 * 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
|
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 * 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
|
536 * 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
|
537 */ |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
538 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
539 language lang_names [] = |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
540 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
541 { "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
|
542 { "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
|
543 { "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
|
544 { "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
|
545 { "c*", Cstar_entries, Cstar_suffixes, NULL }, |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
546 { "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
|
547 { "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
|
548 { "fortran", Fortran_functions, Fortran_suffixes, NULL }, |
17785
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
549 { "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
|
550 { "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
|
551 { "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
|
552 { "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
|
553 { "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
|
554 { "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
|
555 { "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
|
556 { "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
|
557 { "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
|
558 { "tex", TeX_functions, TeX_suffixes, NULL }, |
28663
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
559 { "texinfo", Texinfo_functions, Texinfo_suffixes, NULL }, |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
560 { "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
|
561 { "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
|
562 { "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
|
563 { 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
|
564 }; |
240 | 565 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
566 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
|
567 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
|
568 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
569 language *lang; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
570 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
|
571 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
572 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
|
573 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
|
574 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
|
575 { |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
576 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
|
577 if (lang->suffixes != NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
578 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
|
579 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
|
580 puts (""); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
581 } |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
582 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
|
583 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
|
584 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
|
585 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
|
586 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
|
587 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
|
588 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
|
589 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
590 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
591 #ifndef EMACS_NAME |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
592 # 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
|
593 #endif |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
594 #ifndef VERSION |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
595 # define VERSION "21" |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
596 #endif |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
597 static void |
621 | 598 print_version () |
599 { | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
600 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
|
601 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
|
602 puts ("This program is distributed under the same terms as Emacs"); |
621 | 603 |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
604 exit (GOOD); |
621 | 605 } |
606 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
607 static void |
621 | 608 print_help () |
609 { | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
610 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
|
611 \n\ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
612 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
|
613 #ifdef LONG_OPTIONS |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
614 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
|
615 #else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
616 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
|
617 linked with GNU getopt."); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
618 #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
|
619 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
|
620 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
|
621 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
|
622 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
|
623 puts ("\n"); |
621 | 624 |
4126
9a906e5f9b28
* etags.c (print_help): Break up the very long strings containing
Jim Blandy <jimb@redhat.com>
parents:
4052
diff
changeset
|
625 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
|
626 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
|
627 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
628 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
|
629 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
|
630 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
631 if (CTAGS) |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
632 puts ("-B, --backward-search\n\ |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
633 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
|
634 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
|
635 |
4126
9a906e5f9b28
* etags.c (print_help): Break up the very long strings containing
Jim Blandy <jimb@redhat.com>
parents:
4052
diff
changeset
|
636 puts ("-C, --c++\n\ |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
637 Treat files whose name suffix defaults to C language as C++ files."); |
621 | 638 |
26262
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 ("--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
|
640 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
|
641 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
|
642 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
|
643 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
|
644 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
|
645 ("\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
|
646 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
647 if (CTAGS) |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
648 puts ("-d, --defines\n\ |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
649 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
|
650 else |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
651 puts ("-D, --no-defines\n\ |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
652 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
|
653 This makes the tags file smaller."); |
621 | 654 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
655 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
|
656 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
657 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
|
658 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
|
659 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
|
660 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
|
661 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
|
662 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
|
663 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
|
664 } |
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
665 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
666 if (CTAGS) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
667 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
|
668 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
|
669 else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
670 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
|
671 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
|
672 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
|
673 puts ("--members\n\ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
674 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
|
675 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
676 #ifdef ETAGS_REGEXPS |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
677 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
|
678 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
|
679 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
|
680 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
|
681 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
|
682 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
|
683 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
|
684 --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
|
685 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
|
686 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
|
687 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
|
688 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
|
689 #endif /* ETAGS_REGEXPS */ |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
690 puts ("-o FILE, --output=FILE\n\ |
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
691 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
|
692 puts ("-I, --ignore-indentation\n\ |
621 | 693 Don't rely on indentation quite as much as normal. Currently,\n\ |
694 this means not to assume that a closing brace in the first\n\ | |
695 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
|
696 definition in C and C++."); |
621 | 697 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
698 if (CTAGS) |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
699 { |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
700 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
|
701 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
|
702 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
|
703 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
|
704 and C++ member functions."); |
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
705 puts ("-u, --update\n\ |
621 | 706 Update the tag entries for the given files, leaving tag\n\ |
707 entries for other files in place. Currently, this is\n\ | |
708 implemented by deleting the existing entries for the given\n\ | |
709 files and then rewriting the new entries at the end of the\n\ | |
710 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
|
711 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
|
712 puts ("-v, --vgrind\n\ |
621 | 713 Generates an index of items intended for human consumption,\n\ |
714 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
|
715 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
|
716 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
|
717 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
|
718 files."); |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
719 puts ("-x, --cxref\n\ |
621 | 720 Like --vgrind, but in the style of cxref, rather than vgrind.\n\ |
721 The output uses line numbers instead of page numbers, but\n\ | |
722 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
|
723 which you like."); |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
724 } |
621 | 725 |
726 puts ("-V, --version\n\ | |
727 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
|
728 -h, --help\n\ |
621 | 729 Print this help message."); |
730 | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
731 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
|
732 |
16373
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
733 puts (""); |
26323
98d99afb5ffb
* etags.c (print_help): Change email address to send bugs to.
Gerd Moellmann <gerd@gnu.org>
parents:
26262
diff
changeset
|
734 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
|
735 |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
736 exit (GOOD); |
621 | 737 } |
738 | |
739 | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
740 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
|
741 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
742 at_language, |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
743 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
|
744 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
|
745 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
|
746 }; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
747 |
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
|
748 /* 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
|
749 typedef struct |
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 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
|
752 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
|
753 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
|
754 } argument; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
755 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
756 #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
|
757 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
758 #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
|
759 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
760 /* 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
|
761 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
|
762 #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
|
763 typedef struct { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
764 short curlen; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
765 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
|
766 } vspec; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
767 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
768 /* |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
769 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
|
770 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
|
771 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
|
772 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
|
773 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
|
774 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
|
775 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
|
776 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
|
777 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
|
778 |
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
|
779 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
|
780 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
|
781 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
|
782 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
|
783 */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
784 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
785 #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
|
786 #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
|
787 #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
|
788 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
|
789 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
|
790 vspec *out; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
791 char *in; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
792 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
793 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
|
794 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
|
795 static struct dsc$descriptor_s i; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
796 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
|
797 long status; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
798 short retval; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
799 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
800 if (pass1) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
801 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
802 pass1 = FALSE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
803 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
|
804 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
|
805 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
|
806 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
|
807 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
|
808 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
|
809 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
|
810 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
|
811 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
812 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
|
813 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
814 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
|
815 return 1; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
816 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
817 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
|
818 retval = 0; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
819 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
820 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
821 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
|
822 retval = -1; |
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 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
|
825 pass1 = TRUE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
826 return retval; |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
827 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
828 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
829 /* |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
830 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
|
831 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
|
832 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
833 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
|
834 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
|
835 char *arg; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
836 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
|
837 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
838 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
|
839 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
840 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
|
841 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
842 case 1: |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
843 *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
|
844 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
|
845 case 0: |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
846 *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
|
847 return NULL; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
848 default: |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
849 *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
|
850 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
|
851 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
852 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
853 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
854 #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
|
855 system (cmd) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
856 char *cmd; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
857 { |
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
|
858 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
|
859 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
860 #endif |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
861 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
862 #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
|
863 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
|
864 char *s; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
865 { |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
866 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
|
867 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
868 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
|
869 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
|
870 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
871 *s = EOS; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
872 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
873 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
874 else |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
875 *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
|
876 return start; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
877 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
878 #endif /* VMS */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
879 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
880 |
15683 | 881 int |
240 | 882 main (argc, argv) |
883 int argc; | |
884 char *argv[]; | |
885 { | |
886 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
|
887 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
|
888 char **included_files; |
240 | 889 char *this_file; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
890 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
|
891 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
|
892 linebuffer filename_lb; |
240 | 893 #ifdef VMS |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
894 bool got_err; |
240 | 895 #endif |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
896 |
9773
bd49556a7552
(main, etags_getcwd): Test DOS_NT instead of MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
9635
diff
changeset
|
897 #ifdef DOS_NT |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
898 _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
|
899 #endif /* DOS_NT */ |
5448
18de002e47dd
(main) [MSDOS]: Open all files as binary.
Richard M. Stallman <rms@gnu.org>
parents:
5044
diff
changeset
|
900 |
240 | 901 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
|
902 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
|
903 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
|
904 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
|
905 file_count = 0; |
240 | 906 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
907 /* 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
|
908 is small. */ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
909 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
|
910 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
911 #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
|
912 /* 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
|
913 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
|
914 /* 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
|
915 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
|
916 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
|
917 #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
|
918 |
240 | 919 /* |
920 * 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
|
921 * 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
|
922 * global variables. |
240 | 923 */ |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
924 if (!CTAGS) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
925 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
926 typedefs = typedefs_and_cplusplus = constantypedefs = TRUE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
927 globals = TRUE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
928 members = FALSE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
929 } |
240 | 930 |
9975
e21b0674f37c
* etags.c (<errno.h>): #include added.
Francesco Potortì <pot@gnu.org>
parents:
9773
diff
changeset
|
931 while (1) |
240 | 932 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
933 int opt; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
934 char *optstring; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
935 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
936 #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
|
937 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
|
938 #else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
939 optstring = "-aCdDf:Il:o:StTi:BuvxwVhH"; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
940 #endif /* ETAGS_REGEXPS */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
941 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
942 #ifndef LONG_OPTIONS |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
943 optstring = optstring + 1; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
944 #endif /* LONG_OPTIONS */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
945 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
946 opt = getopt_long (argc, argv, optstring, longopts, 0); |
621 | 947 if (opt == EOF) |
948 break; | |
949 | |
950 switch (opt) | |
240 | 951 { |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
952 case 0: |
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
953 /* If getopt returns 0, then it has already processed a |
621 | 954 long-named option. We should do nothing. */ |
955 break; | |
240 | 956 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
957 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
|
958 /* 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
|
959 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
|
960 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
|
961 ++current_arg; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
962 ++file_count; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
963 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
964 |
621 | 965 /* Common options. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
966 case 'a': append_to_tagfile = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
967 case 'C': cplusplus = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
968 case 'd': constantypedefs = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
969 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
|
970 case 'f': /* for compatibility with old makefiles */ |
621 | 971 case 'o': |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
972 if (tagfile) |
621 | 973 { |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
974 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
|
975 suggest_asking_for_help (); |
240 | 976 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
977 tagfile = optarg; |
621 | 978 break; |
10449
2266157d9bcc
* etags.c (longopts, print_help, main): Use -I as abbreviation
Francesco Potortì <pot@gnu.org>
parents:
10404
diff
changeset
|
979 case 'I': |
2266157d9bcc
* etags.c (longopts, print_help, main): Use -I as abbreviation
Francesco Potortì <pot@gnu.org>
parents:
10404
diff
changeset
|
980 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
|
981 noindentypedefs = TRUE; |
2266157d9bcc
* etags.c (longopts, print_help, main): Use -I as abbreviation
Francesco Potortì <pot@gnu.org>
parents:
10404
diff
changeset
|
982 break; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
983 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
|
984 { |
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 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
|
986 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
|
987 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
988 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
|
989 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
|
990 ++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
|
991 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
992 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
993 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
994 #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
|
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 = optarg; |
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; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1000 case 'R': |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1001 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
|
1002 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
|
1003 ++current_arg; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1004 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
|
1005 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
|
1006 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
|
1007 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
|
1008 ++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
|
1009 break; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1010 #endif /* ETAGS_REGEXPS */ |
621 | 1011 case 'V': |
1012 print_version (); | |
1013 break; | |
10047
9b284d98b102
* etags.c (print_help): print --regex usage for ctags also.
Francesco Potortì <pot@gnu.org>
parents:
9976
diff
changeset
|
1014 case 'h': |
621 | 1015 case 'H': |
1016 print_help (); | |
1017 break; | |
8180
c98f9acb71e3
* etags.c (main): Don't barf on obsolete -t and -T switches.
Francesco Potortì <pot@gnu.org>
parents:
7776
diff
changeset
|
1018 case 't': |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1019 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
|
1020 break; |
c98f9acb71e3
* etags.c (main): Don't barf on obsolete -t and -T switches.
Francesco Potortì <pot@gnu.org>
parents:
7776
diff
changeset
|
1021 case 'T': |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1022 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
|
1023 break; |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
1024 #if (!CTAGS) |
621 | 1025 /* Etags options */ |
1026 case 'i': | |
1027 included_files[nincluded_files++] = optarg; | |
1028 break; | |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
1029 #else /* CTAGS */ |
621 | 1030 /* Ctags options. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1031 case 'B': searchar = '?'; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1032 case 'u': update = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1033 case 'v': vgrind_style = TRUE; /*FALLTHRU*/ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1034 case 'x': cxref_style = TRUE; break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1035 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
|
1036 #endif /* CTAGS */ |
621 | 1037 default: |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1038 suggest_asking_for_help (); |
240 | 1039 } |
1040 } | |
1041 | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1042 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
|
1043 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1044 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
|
1045 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
|
1046 ++current_arg; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1047 ++file_count; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1048 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1049 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1050 if (nincluded_files == 0 && file_count == 0) |
240 | 1051 { |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
1052 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
|
1053 suggest_asking_for_help (); |
240 | 1054 } |
1055 | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1056 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
|
1057 tagfile = CTAGS ? "tags" : "TAGS"; |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
1058 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
|
1059 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
|
1060 { |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
1061 char *oldcwd = cwd; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
1062 cwd = concat (oldcwd, "/", ""); |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
1063 free (oldcwd); |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
1064 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1065 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
|
1066 tagfiledir = cwd; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1067 else |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
1068 tagfiledir = absolute_dirname (tagfile, cwd); |
240 | 1069 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1070 init (); /* set up boolean "functions" */ |
240 | 1071 |
1072 initbuffer (&lb); | |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
1073 initbuffer (&token_name); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1074 initbuffer (&lbs[0].lb); |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1075 initbuffer (&lbs[1].lb); |
240 | 1076 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
|
1077 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1078 if (!CTAGS) |
240 | 1079 { |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1080 if (streq (tagfile, "-")) |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1081 { |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1082 tagf = stdout; |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1083 #ifdef DOS_NT |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1084 /* 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
|
1085 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
|
1086 if (!isatty (fileno (stdout))) |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1087 setmode (fileno (stdout), O_BINARY); |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1088 #endif /* DOS_NT */ |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
1089 } |
240 | 1090 else |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1091 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
|
1092 if (tagf == NULL) |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
1093 pfatal (tagfile); |
240 | 1094 } |
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 /* |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1097 * 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
|
1098 */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1099 for (i = 0; i < current_arg; ++i) |
240 | 1100 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1101 switch (argbuffer[i].arg_type) |
240 | 1102 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1103 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
|
1104 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
|
1105 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1106 #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
|
1107 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
|
1108 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
|
1109 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
|
1110 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
|
1111 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
|
1112 break; |
240 | 1113 #endif |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1114 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
|
1115 #ifdef VMS |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1116 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
|
1117 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1118 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
|
1119 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1120 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
|
1121 argc--, argv++; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1122 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1123 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1124 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1125 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
|
1126 } |
240 | 1127 #else |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1128 this_file = argbuffer[i].what; |
240 | 1129 #endif |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1130 /* 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
|
1131 (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
|
1132 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
|
1133 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
|
1134 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
|
1135 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1136 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
|
1137 #ifdef VMS |
240 | 1138 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1139 #endif |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1140 break; |
240 | 1141 } |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1142 } |
10761
7aa80669e697
* etags.c (C_entries): Bug corrected in xrealloc of token_str.
Francesco Potortì <pot@gnu.org>
parents:
10754
diff
changeset
|
1143 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1144 #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
|
1145 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
|
1146 #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
|
1147 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1148 if (!CTAGS) |
240 | 1149 { |
401 | 1150 while (nincluded_files-- > 0) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1151 fprintf (tagf, "\f\n%s,include\n", *included_files++); |
401 | 1152 |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1153 fclose (tagf); |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
1154 exit (GOOD); |
240 | 1155 } |
1156 | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1157 /* 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
|
1158 because we want them ordered. Let's do it now. */ |
240 | 1159 if (cxref_style) |
1160 { | |
1161 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
|
1162 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
|
1163 head = NULL; |
240 | 1164 exit (GOOD); |
1165 } | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1166 |
621 | 1167 if (update) |
240 | 1168 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1169 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
|
1170 for (i = 0; i < current_arg; ++i) |
240 | 1171 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1172 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
|
1173 continue; |
240 | 1174 sprintf (cmd, |
1175 "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
|
1176 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
|
1177 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
|
1178 fatal ("failed to execute shell command", (char *)NULL); |
240 | 1179 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1180 append_to_tagfile = TRUE; |
240 | 1181 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1182 |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1183 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
|
1184 if (tagf == NULL) |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1185 pfatal (tagfile); |
240 | 1186 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
|
1187 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
|
1188 head = NULL; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1189 fclose (tagf); |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1190 |
240 | 1191 if (update) |
1192 { | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1193 char cmd[BUFSIZ]; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1194 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
|
1195 exit (system (cmd)); |
240 | 1196 } |
16373
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
1197 return GOOD; |
240 | 1198 } |
1199 | |
1200 | |
26262
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 |
240 | 1202 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1203 * 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
|
1204 * 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
|
1205 * 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
|
1206 * 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
|
1207 * 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
|
1208 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1209 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
|
1210 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
|
1211 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
|
1212 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
|
1213 { |
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 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
|
1215 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
|
1216 |
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 /* 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
|
1218 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
|
1219 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
|
1220 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
|
1221 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
|
1222 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
|
1223 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
|
1224 *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
|
1225 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
|
1226 /* 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
|
1227 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
|
1228 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
|
1229 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
|
1230 { |
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 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
|
1232 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
|
1233 return compr; |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1234 if (!MSDOS) |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1235 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
|
1236 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
|
1237 *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
|
1238 } 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
|
1239 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
|
1240 } |
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 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1242 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1243 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1244 /* |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1245 * 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
|
1246 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1247 static language * |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1248 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
|
1249 char *name; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1250 { |
26262
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 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
|
1252 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1253 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
|
1254 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
|
1255 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
|
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 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
|
1258 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
|
1259 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
|
1260 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
|
1261 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1262 |
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 NULL; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1264 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1265 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1266 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1267 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1268 * 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
|
1269 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1270 static language * |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1271 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
|
1272 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
|
1273 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1274 language *lang; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1275 char **iname; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1276 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1277 if (interpreter == NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1278 return NULL; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1279 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
|
1280 if (lang->interpreters != NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1281 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
|
1282 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
|
1283 return lang; |
13404
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 return NULL; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1286 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1287 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1288 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1289 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1290 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1291 * 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
|
1292 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1293 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
|
1294 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
|
1295 char *file; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1296 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1297 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
|
1298 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
|
1299 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1300 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
|
1301 if (suffix == NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1302 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
|
1303 suffix += 1; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1304 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
|
1305 if (lang->suffixes != NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1306 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
|
1307 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
|
1308 return lang; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1309 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
|
1310 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1311 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1312 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1313 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1314 /* |
240 | 1315 * This routine is called on each file argument. |
1316 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1317 static void |
240 | 1318 process_file (file) |
1319 char *file; | |
1320 { | |
1321 struct stat stat_buf; | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1322 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
|
1323 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
|
1324 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
|
1325 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
|
1326 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1327 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1328 canonicalize_filename (file); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1329 if (streq (file, tagfile) && !streq (tagfile, "-")) |
240 | 1330 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1331 error ("skipping inclusion of %s in self.", file); |
240 | 1332 return; |
1333 } | |
26262
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 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
|
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 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
|
1337 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
|
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 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
|
1340 { |
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 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
|
1342 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
|
1343 } |
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 /* 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
|
1346 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
|
1347 { |
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 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
|
1349 { |
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 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
|
1351 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
|
1352 } 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
|
1353 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
|
1354 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
|
1355 |
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 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
|
1357 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
|
1358 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
|
1359 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
|
1360 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
|
1361 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
|
1362 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
|
1363 } |
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 |
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 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
|
1366 { |
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 /* 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
|
1368 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
|
1369 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
|
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 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
|
1372 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
|
1373 } |
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 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
|
1375 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1376 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
|
1377 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1378 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
|
1379 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
|
1380 { |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1381 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
|
1382 { |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1383 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
|
1384 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
|
1385 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
|
1386 { |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1387 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
|
1388 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
|
1389 { |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1390 real_name = compressed_name; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1391 break; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1392 } |
26262
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 } |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1394 if (real_name != NULL) |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1395 break; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1396 } /* 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
|
1397 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
|
1398 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
|
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 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
|
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 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
|
1403 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
|
1404 } |
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 } |
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 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
|
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 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
|
1410 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
|
1411 } |
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 } /* 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
|
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 (!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
|
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 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
|
1417 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
|
1418 } |
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 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
|
1420 { |
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 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
|
1422 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
|
1423 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
|
1424 } |
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 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
|
1426 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
|
1427 if (inf == NULL) |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1428 { |
26262
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 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
|
1430 goto exit; |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1431 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1432 |
26262
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 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
|
1434 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1435 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
|
1436 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
|
1437 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
|
1438 fclose (inf); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1439 |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1440 if (!CTAGS) |
240 | 1441 { |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1442 char *filename; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1443 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1444 if (filename_is_absolute (uncompressed_name)) |
6482
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 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
|
1447 filename = absolute_filename (uncompressed_name, cwd); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1448 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1449 else |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1450 { |
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
|
1451 /* 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
|
1452 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
|
1453 filename = relative_filename (uncompressed_name, tagfiledir); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
1454 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
1455 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
|
1456 free (filename); |
240 | 1457 put_entries (head); |
1458 free_tree (head); | |
1459 head = NULL; | |
1460 } | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1461 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1462 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
|
1463 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
|
1464 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
|
1465 return; |
240 | 1466 } |
1467 | |
1468 /* | |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3569
diff
changeset
|
1469 * 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
|
1470 * by setting boolean flags dependent upon the corresponding character. |
240 | 1471 * Every char which is NOT in that string is not a white char. Therefore, |
1472 * all of the array "_wht" is set to FALSE, and then the elements | |
1473 * subscripted by the chars in "white" are set to TRUE. Thus "_wht" | |
1474 * of a char is TRUE if it is the string "white", else FALSE. | |
1475 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1476 static void |
240 | 1477 init () |
1478 { | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1479 register char *sp; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1480 register int i; |
240 | 1481 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1482 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
|
1483 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
|
1484 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
|
1485 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
|
1486 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
|
1487 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
|
1488 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
|
1489 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
|
1490 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
|
1491 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
|
1492 endtoken('\0') = endtoken('\n'); |
240 | 1493 } |
1494 | |
1495 /* | |
1496 * This routine opens the specified file and calls the function | |
1497 * which finds the function and type definitions. | |
1498 */ | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1499 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
|
1500 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1501 static void |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1502 find_entries (file, inf) |
240 | 1503 char *file; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1504 FILE *inf; |
240 | 1505 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1506 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
|
1507 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
|
1508 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
|
1509 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1510 /* 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
|
1511 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
|
1512 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
|
1513 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
|
1514 file names. */ |
240 | 1515 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
|
1516 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1517 /* 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
|
1518 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
|
1519 if (lang != NULL && lang->function != NULL) |
240 | 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 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
|
1522 lang->function (inf); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1523 return; |
240 | 1524 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1525 |
26262
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 /* 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
|
1527 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
|
1528 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
|
1529 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1530 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
|
1531 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
|
1532 return; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1533 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1534 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1535 /* 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
|
1536 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
|
1537 && lb.len >= 2 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1538 && lb.buffer[0] == '#' |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1539 && lb.buffer[1] == '!') |
240 | 1540 { |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1541 char *lp; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1542 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1543 /* 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
|
1544 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
|
1545 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
|
1546 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
|
1547 if (lp != NULL) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1548 lp += 1; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1549 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
|
1550 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
|
1551 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
|
1552 *cp = '\0'; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1553 |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1554 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
|
1555 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1556 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
|
1557 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
|
1558 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1559 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
|
1560 lang->function (inf); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1561 return; |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1562 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1563 } |
240 | 1564 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1565 /* 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
|
1566 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
|
1567 which is unlikely. */ |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1568 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
|
1569 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1570 /* Try Fortran. */ |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1571 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
|
1572 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
|
1573 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
|
1574 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
1575 /* 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
|
1576 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
|
1577 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1578 /* 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
|
1579 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
|
1580 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
|
1581 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
|
1582 default_C_entries (inf); |
7e7941d8cceb
* etags.c (find_entries): rewind before rereading the input file.
Francesco Potortì <pot@gnu.org>
parents:
12242
diff
changeset
|
1583 } |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
1584 return; |
240 | 1585 } |
1586 | |
1587 /* Record a tag. */ | |
27658
5980f19581dc
(pfnote, new_pfnote, C_entries, prolog_pred, erlang_func): Add
Dave Love <fx@gnu.org>
parents:
27595
diff
changeset
|
1588 static void |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
1589 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
|
1590 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
|
1591 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
|
1592 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
|
1593 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
|
1594 int lno; /* line number */ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1595 long cno; /* character number */ |
240 | 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 register node *np; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1598 |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1599 if (CTAGS && name == NULL) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1600 return; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1601 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1602 np = xnew (1, node); |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1603 |
240 | 1604 /* 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
|
1605 if (CTAGS && !cxref_style && streq (name, "main")) |
240 | 1606 { |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
1607 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
|
1608 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
|
1609 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
|
1610 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
|
1611 fp[0] = '\0'; |
240 | 1612 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1613 else |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
1614 np->name = name; |
10623
8a73e71a55e3
* etags.c (pfnote): Initialise been_warned in the node.
Francesco Potortì <pot@gnu.org>
parents:
10449
diff
changeset
|
1615 np->been_warned = FALSE; |
240 | 1616 np->file = curfile; |
1617 np->is_func = is_func; | |
1618 np->lno = lno; | |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
1619 /* 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
|
1620 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
|
1621 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
|
1622 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
|
1623 uncomment the +1 below. */ |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
1624 np->cno = cno /* + 1 */ ; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1625 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
|
1626 if (CTAGS && !cxref_style) |
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 if (strlen (linestart) < 50) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1629 np->pat = concat (linestart, "$", ""); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1630 else |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1631 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
|
1632 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1633 else |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1634 np->pat = savenstr (linestart, linelen); |
240 | 1635 |
1636 add_node (np, &head); | |
1637 } | |
1638 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1639 /* 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
|
1640 * 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
|
1641 * 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
|
1642 * To: F.Potorti@cnuce.cnr.it |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1643 * |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1644 * 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
|
1645 * 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
|
1646 * 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
|
1647 * one character, substring; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1648 * 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
|
1649 * be one of the characters " \t(),;"; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1650 * 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
|
1651 * 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
|
1652 * |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1653 * 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
|
1654 * 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
|
1655 * `nonam'. |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1656 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1657 #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
|
1658 static void |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1659 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
|
1660 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
|
1661 int namelen; /* tag length */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1662 bool is_func; /* tag is a function */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1663 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
|
1664 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
|
1665 int lno; /* line number */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1666 long cno; /* character number */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1667 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1668 register char *cp; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1669 bool named; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1670 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1671 named = TRUE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1672 if (!CTAGS) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1673 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1674 for (cp = name; !notinname (*cp); cp++) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1675 continue; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1676 if (*cp == '\0') /* rule #1 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1677 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1678 cp = linestart + linelen - namelen; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1679 if (notinname (linestart[linelen-1])) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1680 cp -= 1; /* rule #4 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1681 if (cp >= linestart /* rule #2 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1682 && (cp == linestart |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1683 || notinname (cp[-1])) /* rule #3 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1684 && strneq (name, cp, namelen)) /* rule #2 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1685 named = FALSE; /* use unnamed tag */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1686 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1687 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1688 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1689 if (named) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1690 name = savenstr (name, namelen); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1691 else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1692 name = NULL; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1693 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
|
1694 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1695 |
240 | 1696 /* |
1697 * free_tree () | |
1698 * recurse on left children, iterate on right children. | |
1699 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1700 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
|
1701 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
|
1702 register node *np; |
240 | 1703 { |
26262
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 while (np) |
240 | 1705 { |
26262
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 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
|
1707 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
|
1708 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
|
1709 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
|
1710 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
|
1711 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
|
1712 np = node_right; |
240 | 1713 } |
1714 } | |
1715 | |
1716 /* | |
1717 * add_node () | |
1718 * Adds a node to the tree of nodes. In etags mode, we don't keep | |
1719 * it sorted; we just keep a linear list. In ctags mode, maintain | |
1720 * an ordered tree, with no attempt at balancing. | |
1721 * | |
1722 * add_node is the only function allowed to add nodes, so it can | |
1723 * maintain state. | |
1724 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1725 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
|
1726 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
|
1727 node *np, **cur_node_p; |
240 | 1728 { |
1729 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
|
1730 register node *cur_node = *cur_node_p; |
240 | 1731 |
1732 if (cur_node == NULL) | |
1733 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1734 *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
|
1735 last_node = np; |
240 | 1736 return; |
1737 } | |
1738 | |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1739 if (!CTAGS) |
240 | 1740 { |
1741 /* Etags Mode */ | |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
1742 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
|
1743 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
|
1744 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
|
1745 last_node = np; |
240 | 1746 } |
1747 else | |
1748 { | |
1749 /* 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
|
1750 dif = strcmp (np->name, cur_node->name); |
240 | 1751 |
1752 /* | |
1753 * If this tag name matches an existing one, then | |
1754 * do not add the node, but maybe print a warning. | |
1755 */ | |
1756 if (!dif) | |
1757 { | |
26262
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 if (streq (np->file, cur_node->file)) |
240 | 1759 { |
1760 if (!no_warnings) | |
1761 { | |
1762 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
|
1763 np->file, lineno, np->name); |
240 | 1764 fprintf (stderr, "Second entry ignored\n"); |
1765 } | |
1766 } | |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1767 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
|
1768 { |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1769 fprintf |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1770 (stderr, |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1771 "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
|
1772 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
|
1773 cur_node->been_warned = TRUE; |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
1774 } |
240 | 1775 return; |
1776 } | |
1777 | |
1778 /* 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
|
1779 add_node (np, dif < 0 ? &cur_node->left : &cur_node->right); |
240 | 1780 } |
1781 } | |
1782 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1783 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
|
1784 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
|
1785 register node *np; |
240 | 1786 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1787 register char *sp; |
240 | 1788 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1789 if (np == NULL) |
240 | 1790 return; |
1791 | |
1792 /* 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
|
1793 put_entries (np->left); |
240 | 1794 |
1795 /* Output this entry */ | |
1796 | |
6530
12e47da67bb5
* etags.c (emacs_tags_format, ETAGS): removed. Use CTAGS instead.
Francesco Potortì <pot@gnu.org>
parents:
6482
diff
changeset
|
1797 if (!CTAGS) |
240 | 1798 { |
26262
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 if (np->name != NULL) |
21355
b33f3f6d7f74
(put_entries): Use %ld.
Richard M. Stallman <rms@gnu.org>
parents:
20788
diff
changeset
|
1800 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
|
1801 np->pat, np->name, np->lno, np->cno); |
240 | 1802 else |
21355
b33f3f6d7f74
(put_entries): Use %ld.
Richard M. Stallman <rms@gnu.org>
parents:
20788
diff
changeset
|
1803 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
|
1804 np->pat, np->lno, np->cno); |
240 | 1805 } |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1806 else |
240 | 1807 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1808 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
|
1809 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
|
1810 |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1811 if (cxref_style) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1812 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1813 if (vgrind_style) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1814 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
|
1815 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
|
1816 else |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1817 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
|
1818 np->name, np->lno, np->file, np->pat); |
240 | 1819 } |
1820 else | |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1821 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1822 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
|
1823 |
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 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
|
1825 { /* a function */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1826 putc (searchar, tagf); |
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 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1829 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
|
1830 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1831 if (*sp == '\\' || *sp == searchar) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1832 putc ('\\', tagf); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1833 putc (*sp, tagf); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1834 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1835 putc (searchar, tagf); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1836 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1837 else |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1838 { /* 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
|
1839 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
|
1840 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
1841 putc ('\n', tagf); |
240 | 1842 } |
1843 } | |
1844 | |
1845 /* 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
|
1846 put_entries (np->right); |
240 | 1847 } |
1848 | |
1849 /* 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
|
1850 static int |
240 | 1851 number_len (num) |
1852 long num; | |
1853 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1854 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
|
1855 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
|
1856 len += 1; |
240 | 1857 return len; |
1858 } | |
1859 | |
1860 /* | |
1861 * 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
|
1862 * 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
|
1863 * 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
|
1864 * 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
|
1865 * backward compatibility. |
240 | 1866 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
1867 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
|
1868 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
|
1869 register node *np; |
240 | 1870 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
1871 register int total; |
240 | 1872 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1873 if (np == NULL) |
240 | 1874 return 0; |
1875 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1876 for (total = 0; np != NULL; np = np->right) |
240 | 1877 { |
1878 /* 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
|
1879 total += total_size_of_entries (np->left); |
240 | 1880 |
1881 /* 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
|
1882 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
|
1883 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
|
1884 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
|
1885 total += 1 + strlen (np->name); /* \001name */ |
240 | 1886 } |
1887 | |
1888 return total; | |
1889 } | |
1890 | |
1891 /* | |
1892 * The C symbol tables. | |
1893 */ | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1894 enum sym_type |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
1895 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1896 st_none, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1897 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
|
1898 st_C_gnumacro, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1899 st_C_ignore, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1900 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
|
1901 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
|
1902 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
|
1903 }; |
240 | 1904 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
1905 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
|
1906 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
|
1907 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
|
1908 |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1909 /* 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
|
1910 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
|
1911 %[ |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1912 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
|
1913 %% |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
1914 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
|
1915 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
|
1916 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
|
1917 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
|
1918 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
|
1919 @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
|
1920 @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
|
1921 @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
|
1922 @end, 0, st_C_objend |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1923 import, C_JAVA, st_C_ignore |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1924 package, C_JAVA, st_C_ignore |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
1925 friend, C_PLPL, st_C_ignore |
17785
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
1926 extends, C_JAVA, st_C_javastruct |
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
1927 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
|
1928 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
|
1929 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
|
1930 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
|
1931 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
|
1932 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
|
1933 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
|
1934 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
|
1935 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
|
1936 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
|
1937 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
|
1938 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
|
1939 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
|
1940 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
|
1941 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
|
1942 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
|
1943 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
|
1944 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
|
1945 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
|
1946 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
|
1947 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
|
1948 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
|
1949 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
|
1950 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
|
1951 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
|
1952 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
|
1953 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
|
1954 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
|
1955 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
|
1956 # 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
|
1957 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
|
1958 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
|
1959 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
|
1960 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
|
1961 # 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
|
1962 # 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
|
1963 #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
|
1964 #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
|
1965 %] |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1966 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
|
1967 /*%<*/ |
26262
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 /* 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
|
1969 /* 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
|
1970 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
|
1971 |
26262
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 #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
|
1973 #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
|
1974 #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
|
1975 #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
|
1976 #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
|
1977 /* 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
|
1978 |
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 #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
|
1980 __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
|
1981 #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
|
1982 static unsigned int |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
1983 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
|
1984 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
|
1985 register unsigned int len; |
240 | 1986 { |
26262
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 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
|
1988 { |
26262
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, 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
|
1991 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
|
1992 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
|
1993 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
|
1994 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
|
1995 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
|
1996 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
|
1997 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
|
1998 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
|
1999 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
|
2000 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
|
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, 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 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
|
2011 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
|
2012 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
|
2013 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
|
2014 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
|
2015 }; |
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 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
|
2017 |
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 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
|
2019 { |
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 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
|
2021 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
|
2022 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
|
2023 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
|
2024 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
|
2025 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
|
2026 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
|
2027 } |
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 return hval; |
240 | 2029 } |
2030 | |
26262
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 #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
|
2032 __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
|
2033 #endif |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
2034 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
|
2035 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
|
2036 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
|
2037 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
|
2038 { |
26262
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 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
|
2040 { |
26262
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 {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, |
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 {"@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
|
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 {"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
|
2046 {"@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
|
2047 {""}, |
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 {"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
|
2049 {""}, |
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 {"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
|
2051 {""}, {""}, |
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 {"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
|
2053 {""}, {""}, |
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 {"@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
|
2055 {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, |
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 {"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
|
2057 {"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
|
2058 {"@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
|
2059 {""}, {""}, {""}, {""}, |
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 {"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
|
2061 {""}, {""}, {""}, {""}, {""}, {""}, |
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 {"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
|
2063 {"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
|
2064 {"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
|
2065 {""}, |
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 {"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
|
2067 {""}, |
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 {"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
|
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 {"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
|
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 {"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
|
2073 {"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
|
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 {"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
|
2076 {""}, |
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 {"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
|
2078 {"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
|
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 {"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
|
2081 {"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
|
2082 {"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
|
2083 {"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
|
2084 {""}, |
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 {"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
|
2086 {""}, {""}, {""}, |
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 {"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
|
2088 {""}, {""}, |
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 {"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
|
2090 {"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
|
2091 {"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
|
2092 {"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
|
2093 {"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
|
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 {"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
|
2096 {"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
|
2097 {"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
|
2098 {"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
|
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 {"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
|
2101 {"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
|
2102 {""}, {""}, {""}, |
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 {"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
|
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 {"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
|
2106 {""}, {""}, {""}, |
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 {"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
|
2108 {"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
|
2109 {""}, {""}, {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2110 {"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
|
2111 {"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
|
2112 {""}, |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2113 {"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
|
2114 }; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2115 |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2116 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
|
2117 { |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2118 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
|
2119 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2120 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
|
2121 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2122 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
|
2123 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2124 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
|
2125 return &wordlist[key]; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2126 } |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2127 } |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2128 return 0; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2129 } |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2130 /*%>*/ |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2131 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
2132 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
|
2133 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
|
2134 char *str; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2135 int len; |
240 | 2136 int c_ext; |
2137 { | |
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
|
2138 register struct C_stab_entry *se = in_word_set (str, len); |
240 | 2139 |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2140 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
|
2141 return st_none; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2142 return se->type; |
240 | 2143 } |
2144 | |
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 * 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
|
2147 * 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
|
2148 */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2149 enum |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2150 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2151 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
|
2152 foperator, /* func: operator keyword seen (cplpl) */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2153 fvnameseen, /* function or variable name seen */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2154 fstartlist, /* func: just after open parenthesis */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2155 finlist, /* func: in parameter list */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2156 flistseen, /* func: after parameter list */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2157 fignore, /* func: before open brace */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2158 vignore /* var-like: ignore until ';' */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2159 } fvdef; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2160 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2161 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
|
2162 |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2163 /* |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2164 * typedefs are recognized using a simple finite automaton. |
14021
19bab04cf346
(substitute): Fix spelling in message.
Karl Heuer <kwzh@gnu.org>
parents:
13696
diff
changeset
|
2165 * typdef is its state variable. |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2166 */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2167 enum |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2168 { |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
2169 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
|
2170 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
|
2171 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
|
2172 tinbody, /* inside typedef body */ |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2173 tend, /* just before typedef tag */ |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2174 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
|
2175 } typdef; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2176 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2177 |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
2178 /* |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2179 * 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
|
2180 * 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
|
2181 * variable. |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2182 */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2183 enum |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2184 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2185 snone, /* nothing seen yet */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2186 skeyseen, /* struct-like keyword seen */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2187 stagseen, /* struct-like tag seen */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2188 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
|
2189 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
|
2190 } structdef; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2191 |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2192 /* |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2193 * 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
|
2194 * 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
|
2195 * keyword. |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2196 */ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2197 char *structtag = "<uninited>"; |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2198 enum sym_type structtype; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2199 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2200 /* |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2201 * 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
|
2202 */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2203 char *objtag = "<uninited>"; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2204 |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2205 /* |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2206 * 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
|
2207 */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2208 enum |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2209 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2210 dnone, /* nothing seen */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2211 dsharpseen, /* '#' seen as first char on line */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2212 ddefineseen, /* '#' and 'define' seen */ |
5044
d3bd7baee39f
(FUNCST, TYPEDST, STRUCTST, DEFINEST): Delete excess commas.
Richard M. Stallman <rms@gnu.org>
parents:
4937
diff
changeset
|
2213 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
|
2214 } definedef; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2215 |
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 * 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
|
2218 * 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
|
2219 */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2220 enum |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2221 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2222 onone, /* nothing seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2223 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
|
2224 oimplementation, /* @implementations seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2225 otagseen, /* class name seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2226 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
|
2227 ocatseen, /* category name seen */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2228 oinbody, /* in @implementation body */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2229 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
|
2230 omethodtag, /* after method name */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2231 omethodcolon, /* after method colon */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2232 omethodparm, /* after method parameter */ |
14230
6b836f84bccf
(enum sym_type, anonymous enum): Delete final comma.
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
2233 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
|
2234 } objdef; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2235 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2236 |
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 * 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
|
2239 * 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
|
2240 */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2241 typedef struct |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2242 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2243 bool valid; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2244 char *str; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2245 bool named; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2246 int linelen; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2247 int lineno; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2248 long linepos; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2249 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
|
2250 } 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
|
2251 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2252 token tok; /* latest token read */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2253 |
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 * 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
|
2256 * 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
|
2257 */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2258 bool next_token_is_func; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2259 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2260 /* |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2261 * 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
|
2262 */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2263 bool yacc_rules; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2264 |
240 | 2265 /* |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2266 * 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
|
2267 */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2268 int methodlen; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2269 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
2270 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
|
2271 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
|
2272 |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2273 /* |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2274 * consider_token () |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2275 * 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
|
2276 * 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
|
2277 * 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
|
2278 * |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2279 * *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
|
2280 * 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
|
2281 * |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2282 * Globals |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2283 * fvdef IN OUT |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2284 * structdef IN OUT |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2285 * definedef IN OUT |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2286 * typdef IN OUT |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2287 * objdef IN OUT |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2288 * next_token_is_func IN OUT |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2289 */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2290 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
2291 static bool |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2292 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
|
2293 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
|
2294 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
|
2295 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
|
2296 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
|
2297 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
|
2298 int parlev; /* IN: parenthesis level */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2299 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
|
2300 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2301 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
|
2302 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2303 /* |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2304 * Advance the definedef state machine. |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2305 */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2306 switch (definedef) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2307 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2308 case dnone: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2309 /* 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
|
2310 break; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2311 case dsharpseen: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2312 if (toktype == st_C_define) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2313 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2314 definedef = ddefineseen; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2315 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2316 else |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2317 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2318 definedef = dignorerest; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2319 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2320 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2321 case ddefineseen: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2322 /* |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2323 * 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
|
2324 * and constantypedefs is FALSE. |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2325 */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2326 definedef = dignorerest; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2327 *is_func_or_var = (c == '('); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2328 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
|
2329 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2330 else |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2331 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2332 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
|
2333 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2334 default: |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2335 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
|
2336 } |
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 /* |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2339 * Now typedefs |
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 switch (typdef) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2342 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2343 case tnone: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2344 if (toktype == st_C_typedef) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2345 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2346 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
|
2347 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
|
2348 fvextern = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2349 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
|
2350 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2351 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2352 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
|
2353 case tkeyseen: |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2354 switch (toktype) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2355 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2356 case st_none: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2357 case st_C_typespec: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2358 case st_C_struct: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2359 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
|
2360 typdef = ttypeseen; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2361 break; |
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 /* 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
|
2364 break; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2365 case tend: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2366 switch (toktype) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2367 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2368 case st_C_typespec: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2369 case st_C_struct: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2370 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
|
2371 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2372 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2373 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2374 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2375 |
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 currently only invoked when cblev==0. |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2378 * 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
|
2379 * 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
|
2380 * within structs. |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2381 * |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2382 * 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
|
2383 * 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
|
2384 * 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
|
2385 */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2386 switch (toktype) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2387 { |
17785
5b92f8ba5c6d
Added support for the Java language.
Francesco Potortì <pot@gnu.org>
parents:
17778
diff
changeset
|
2388 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
|
2389 if (structdef == stagseen) |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
2390 structdef = scolonseen; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
2391 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2392 case st_C_struct: |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2393 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
|
2394 if (typdef == tkeyseen |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2395 || (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
|
2396 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2397 structdef = skeyseen; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2398 structtype = toktype; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2399 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2400 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2401 } |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2402 |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2403 if (structdef == skeyseen) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2404 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2405 /* 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
|
2406 that may be defined inside. */ |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2407 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
|
2408 structtag = savenstr (str, len); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2409 else |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2410 structtag = "<enum>"; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2411 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
|
2412 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2413 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2414 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2415 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
|
2416 definedef = dnone; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2417 |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2418 /* Detect GNU macros. |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2419 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2420 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
|
2421 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
|
2422 |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2423 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
|
2424 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
|
2425 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
|
2426 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
|
2427 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
|
2428 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
|
2429 removing the initial 'F' character and substituting '-' for '_'. |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2430 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
|
2431 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
|
2432 implemented. */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2433 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
|
2434 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2435 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
|
2436 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2437 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2438 if (next_token_is_func) |
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 next_token_is_func = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2441 fvdef = fignore; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2442 *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
|
2443 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2444 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2445 |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2446 /* 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
|
2447 switch (objdef) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2448 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2449 case onone: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2450 switch (toktype) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2451 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2452 case st_C_objprot: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2453 objdef = oprotocol; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2454 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2455 case st_C_objimpl: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2456 objdef = oimplementation; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2457 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2458 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2459 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2460 case oimplementation: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2461 /* 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
|
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 = oinbody; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2464 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2465 case oprotocol: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2466 /* 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
|
2467 objtag = savenstr (str, len); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2468 objdef = otagseen; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2469 *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
|
2470 return TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2471 case oparenseen: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2472 objdef = ocatseen; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2473 *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
|
2474 return TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2475 case oinbody: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2476 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2477 case omethodsign: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2478 if (parlev == 0) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2479 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2480 objdef = omethodtag; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2481 methodlen = len; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2482 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
|
2483 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
|
2484 token_name.buffer[methodlen] = '\0'; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2485 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
|
2486 return TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2487 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2488 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2489 case omethodcolon: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2490 if (parlev == 0) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2491 objdef = omethodparm; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2492 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2493 case omethodparm: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2494 if (parlev == 0) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2495 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2496 objdef = omethodtag; |
14144
beb39f795f21
(consider_token): Fix typo in expression.
Karl Heuer <kwzh@gnu.org>
parents:
14021
diff
changeset
|
2497 methodlen += len; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2498 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
|
2499 strncat (token_name.buffer, str, len); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2500 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
|
2501 return TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2502 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2503 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2504 case oignore: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2505 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
|
2506 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2507 /* 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
|
2508 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
|
2509 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
|
2510 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
|
2511 class tags. |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2512 free (objtag); */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2513 objdef = onone; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2514 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2515 return FALSE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2516 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2517 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2518 /* 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
|
2519 switch (toktype) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2520 { |
26262
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 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
|
2522 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
|
2523 /* FALLTHRU */ |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2524 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
|
2525 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
|
2526 fvdef = fvnone; /* should be useless */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2527 return FALSE; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2528 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
|
2529 fvextern = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2530 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
|
2531 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
|
2532 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
|
2533 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
|
2534 *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
|
2535 return TRUE; |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2536 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
|
2537 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
|
2538 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2539 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
|
2540 *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
|
2541 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
|
2542 } |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2543 if (constantypedefs && structdef == sinbody && structtype == st_C_enum) |
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2544 return TRUE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2545 if (fvdef == fvnone) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2546 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2547 fvdef = fvnameseen; /* function or variable */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2548 *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
|
2549 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2550 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2551 break; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2552 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2553 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
2554 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2555 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2556 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2557 /* |
240 | 2558 * C_entries () |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2559 * This routine finds functions, variables, typedefs, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2560 * #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
|
2561 * C syntax and adds them to the list. |
240 | 2562 */ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2563 #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
|
2564 #define switch_line_buffers() (curndx = 1 - curndx) |
240 | 2565 |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2566 #define curlb (lbs[curndx].lb) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2567 #define othlb (lbs[1-curndx].lb) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2568 #define newlb (lbs[newndx].lb) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2569 #define curlinepos (lbs[curndx].linepos) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2570 #define othlinepos (lbs[1-curndx].linepos) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2571 #define newlinepos (lbs[newndx].linepos) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2572 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2573 #define CNL_SAVE_DEFINEDEF() \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2574 do { \ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2575 curlinepos = charno; \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2576 lineno++; \ |
15243
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
2577 linecharno = charno; \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2578 charno += readline (&curlb, inf); \ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2579 lp = curlb.buffer; \ |
2004
6469a137fea6
(C_entries): New local variable quotednl. Used for
Richard M. Stallman <rms@gnu.org>
parents:
1938
diff
changeset
|
2580 quotednl = FALSE; \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2581 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
|
2582 } while (0) |
240 | 2583 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2584 #define CNL() \ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2585 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
|
2586 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
|
2587 if (savetok.valid) \ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2588 { \ |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2589 tok = savetok; \ |
10801
32f98b512dd9
* etags.c (C_entries): token_saved removed. Initialise tok.valid and
Francesco Potortì <pot@gnu.org>
parents:
10761
diff
changeset
|
2590 savetok.valid = FALSE; \ |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2591 } \ |
240 | 2592 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
|
2593 } while (0) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2594 |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2595 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
2596 static void |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2597 make_C_tag (isfun) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2598 bool isfun; |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2599 { |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2600 /* 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
|
2601 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
|
2602 if (tok.valid) |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2603 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2604 if (traditional_tag_style) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2605 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2606 /* 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
|
2607 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
|
2608 char *name = NULL; |
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 if (CTAGS || tok.named) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2611 name = savestr (token_name.buffer); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2612 pfnote (name, isfun, |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2613 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
|
2614 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2615 else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2616 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
|
2617 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
|
2618 tok.valid = FALSE; |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2619 } |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2620 else if (DEBUG) |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2621 abort (); |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2622 } |
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
2623 |
240 | 2624 |
27658
5980f19581dc
(pfnote, new_pfnote, C_entries, prolog_pred, erlang_func): Add
Dave Love <fx@gnu.org>
parents:
27595
diff
changeset
|
2625 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
2626 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
|
2627 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
|
2628 FILE *inf; /* input file */ |
240 | 2629 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2630 register char c; /* latest char read; '\0' for end of line */ |
240 | 2631 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
|
2632 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
|
2633 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
|
2634 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
|
2635 char *qualifier; /* string used to qualify names */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2636 int qlen; /* length of qualifier */ |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2637 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
|
2638 int parlev; /* current parenthesis level */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2639 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
|
2640 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
|
2641 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
|
2642 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2643 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2644 tokoff = toklen = 0; /* keep compiler quiet */ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2645 curndx = newndx = 0; |
240 | 2646 lineno = 0; |
2647 charno = 0; | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2648 lp = curlb.buffer; |
240 | 2649 *lp = 0; |
2650 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2651 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
|
2652 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
|
2653 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
|
2654 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
|
2655 tok.valid = savetok.valid = FALSE; |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2656 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
|
2657 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
|
2658 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
|
2659 cplpl = (c_ext & C_PLPL) == C_PLPL; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2660 cjava = (c_ext & C_JAVA) == C_JAVA; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2661 if (cjava) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2662 { qualifier = "."; qlen = 1; } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2663 else |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2664 { qualifier = "::"; qlen = 2; } |
240 | 2665 |
2666 while (!feof (inf)) | |
2667 { | |
2668 c = *lp++; | |
2669 if (c == '\\') | |
2670 { | |
621 | 2671 /* If we're at the end of the line, the next character is a |
2672 '\0'; don't skip it, because it's the thing that tells us | |
2673 to read the next line. */ | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2674 if (*lp == '\0') |
2004
6469a137fea6
(C_entries): New local variable quotednl. Used for
Richard M. Stallman <rms@gnu.org>
parents:
1938
diff
changeset
|
2675 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2676 quotednl = TRUE; |
2004
6469a137fea6
(C_entries): New local variable quotednl. Used for
Richard M. Stallman <rms@gnu.org>
parents:
1938
diff
changeset
|
2677 continue; |
6469a137fea6
(C_entries): New local variable quotednl. Used for
Richard M. Stallman <rms@gnu.org>
parents:
1938
diff
changeset
|
2678 } |
401 | 2679 lp++; |
240 | 2680 c = ' '; |
2681 } | |
2682 else if (incomm) | |
2683 { | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2684 switch (c) |
240 | 2685 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2686 case '*': |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2687 if (*lp == '/') |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2688 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2689 c = *lp++; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2690 incomm = FALSE; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2691 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2692 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2693 case '\0': |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2694 /* 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
|
2695 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
|
2696 CNL_SAVE_DEFINEDEF (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2697 break; |
240 | 2698 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2699 continue; |
240 | 2700 } |
2701 else if (inquote) | |
2702 { | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2703 switch (c) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2704 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2705 case '"': |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2706 inquote = FALSE; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2707 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2708 case '\0': |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2709 /* 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
|
2710 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
|
2711 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
|
2712 CNL_SAVE_DEFINEDEF (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2713 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2714 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2715 continue; |
240 | 2716 } |
2717 else if (inchar) | |
2718 { | |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2719 switch (c) |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2720 { |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2721 case '\0': |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2722 /* 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
|
2723 CNL (); |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2724 /* FALLTHRU */ |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2725 case '\'': |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2726 inchar = FALSE; |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2727 break; |
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
2728 } |
240 | 2729 continue; |
2730 } | |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
2731 else |
240 | 2732 switch (c) |
2733 { | |
2734 case '"': | |
2735 inquote = TRUE; | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2736 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
|
2737 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2738 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
|
2739 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
|
2740 } |
240 | 2741 continue; |
2742 case '\'': | |
2743 inchar = TRUE; | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2744 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
|
2745 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2746 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
|
2747 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
|
2748 } |
240 | 2749 continue; |
2750 case '/': | |
2751 if (*lp == '*') | |
2752 { | |
2753 lp++; | |
2754 incomm = TRUE; | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2755 continue; |
240 | 2756 } |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2757 else if (/* cplpl && */ *lp == '/') |
240 | 2758 { |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2759 c = '\0'; |
727 | 2760 break; |
240 | 2761 } |
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
|
2762 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
|
2763 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2764 case '%': |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2765 if ((c_ext & YACC) && *lp == '%') |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2766 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2767 /* 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
|
2768 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
|
2769 definedef = dnone; fvdef = fvnone; fvextern = FALSE; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2770 typdef = tnone; structdef = snone; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2771 next_token_is_func = FALSE; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2772 midtoken = inquote = inchar = incomm = quotednl = FALSE; |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2773 cblev = 0; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2774 yacc_rules = !yacc_rules; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2775 continue; |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2776 } |
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
|
2777 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
|
2778 break; |
240 | 2779 case '#': |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2780 if (definedef == dnone) |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2781 { |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2782 char *cp; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2783 bool cpptoken = TRUE; |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2784 |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2785 /* 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
|
2786 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
|
2787 token. */ |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2788 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
|
2789 if (!iswhite (*cp)) |
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 if (*cp == '*' && *(cp+1) == '/') |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2792 { |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2793 cp++; |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2794 cpptoken = TRUE; |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2795 } |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2796 else |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2797 cpptoken = FALSE; |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2798 } |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2799 if (cpptoken) |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2800 definedef = dsharpseen; |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2801 } /* if (definedef == dnone) */ |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2802 |
240 | 2803 continue; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2804 } /* switch (c) */ |
240 | 2805 |
2806 | |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
2807 /* 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
|
2808 if ((definedef != dnone |
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2809 || (cblev == 0 && structdef != scolonseen) |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
2810 || (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
|
2811 || (structdef == sinbody && purec)) |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
2812 && typdef != tignore |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2813 && definedef != dignorerest |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2814 && fvdef != finlist) |
240 | 2815 { |
2816 if (midtoken) | |
2817 { | |
2818 if (endtoken (c)) | |
2819 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2820 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
|
2821 |
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 if (c == ':' && cplpl && *lp == ':' && begtoken (lp[1])) |
240 | 2823 { |
2824 /* | |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
2825 * 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
|
2826 * 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
|
2827 * :: is not recognised. |
240 | 2828 */ |
2829 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
|
2830 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
|
2831 c = lp[-1]; |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
2832 goto intok; |
240 | 2833 } |
2834 else | |
2835 { | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2836 if (yacc_rules |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2837 || 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
|
2838 c_ext, cblev, parlev, &funorvar)) |
240 | 2839 { |
26262
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 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
|
2841 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
2842 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
|
2843 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
|
2844 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
|
2845 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
|
2846 while (*lp != '\0' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
2847 && !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
|
2848 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
|
2849 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
|
2850 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
|
2851 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2852 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
|
2853 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
|
2854 && funorvar |
4750
cdefe4f21650
Mon Sep 20 18:06:12 1993 Francesco Potorti` (pot at fly)
Francesco Potortì <pot@gnu.org>
parents:
4696
diff
changeset
|
2855 && 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
|
2856 && structdef == sinbody) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2857 /* 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
|
2858 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2859 int len = strlen (structtag) + qlen + toklen; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2860 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
|
2861 strcpy (token_name.buffer, structtag); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2862 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
|
2863 strncat (token_name.buffer, |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2864 newlb.buffer + tokoff, toklen); |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2865 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
|
2866 tok.named = TRUE; |
240 | 2867 } |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2868 else if (objdef == ocatseen) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2869 /* Objective C category */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2870 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2871 int len = strlen (objtag) + 2 + toklen; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2872 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
|
2873 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
|
2874 strcat (token_name.buffer, "("); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2875 strncat (token_name.buffer, |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2876 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
|
2877 strcat (token_name.buffer, ")"); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2878 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
|
2879 tok.named = TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2880 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2881 else if (objdef == omethodtag |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2882 || objdef == omethodparm) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2883 /* Objective C method */ |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2884 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2885 tok.named = TRUE; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2886 } |
240 | 2887 else |
2888 { | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2889 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
|
2890 strncpy (token_name.buffer, |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2891 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
|
2892 token_name.buffer[toklen] = '\0'; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2893 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
|
2894 /* Name macros and members. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2895 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
|
2896 || typdef == ttypeseen |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2897 || typdef == tend |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2898 || (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
|
2899 && 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
|
2900 || (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
|
2901 && 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
|
2902 && structdef == sinbody)); |
240 | 2903 } |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2904 tok.lineno = lineno; |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2905 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
|
2906 tok.buffer = newlb.buffer; |
cd1c0b5e8634
* etags.c (C_entries): Initialise the new members of TOKEN.
Francesco Potortì <pot@gnu.org>
parents:
10623
diff
changeset
|
2907 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
|
2908 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
|
2909 |
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
|
2910 if (definedef == dnone |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2911 && (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
|
2912 || 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
|
2913 || structdef == stagseen |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2914 || typdef == tend |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2915 || objdef != onone)) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2916 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2917 if (current_lb_is_new) |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
2918 switch_line_buffers (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2919 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2920 else |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2921 make_C_tag (funorvar); |
240 | 2922 } |
2923 midtoken = FALSE; | |
2924 } | |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2925 } /* if (endtoken (c)) */ |
240 | 2926 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
|
2927 intok: |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2928 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2929 toklen++; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2930 continue; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2931 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2932 } /* if (midtoken) */ |
240 | 2933 else if (begtoken (c)) |
2934 { | |
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
|
2935 switch (definedef) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2936 { |
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 case dnone: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2938 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
|
2939 { |
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
|
2940 case fstartlist: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2941 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
|
2942 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
|
2943 case flistseen: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2944 make_C_tag (TRUE); /* a function */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2945 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
|
2946 break; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2947 case fvnameseen: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2948 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
|
2949 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
|
2950 } |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
2951 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
|
2952 structdef = snone; |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
2953 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
|
2954 case dsharpseen: |
10623
8a73e71a55e3
* etags.c (pfnote): Initialise been_warned in the node.
Francesco Potortì <pot@gnu.org>
parents:
10449
diff
changeset
|
2955 savetok = tok; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2956 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2957 if (!yacc_rules || lp == newlb.buffer + 1) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2958 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2959 tokoff = lp - 1 - newlb.buffer; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2960 toklen = 1; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2961 midtoken = TRUE; |
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 continue; |
10623
8a73e71a55e3
* etags.c (pfnote): Initialise been_warned in the node.
Francesco Potortì <pot@gnu.org>
parents:
10449
diff
changeset
|
2964 } /* if (begtoken) */ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2965 } /* if must look at token */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2966 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2967 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2968 /* 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
|
2969 after having handled a token.*/ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2970 switch (c) |
401 | 2971 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2972 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
|
2973 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
|
2974 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2975 switch (objdef) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2976 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2977 case otagseen: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2978 objdef = oignore; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2979 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
|
2980 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2981 case omethodtag: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2982 case omethodparm: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2983 objdef = omethodcolon; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2984 methodlen += 1; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2985 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
|
2986 strcat (token_name.buffer, ":"); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2987 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
|
2988 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
2989 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2990 if (structdef == stagseen) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
2991 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
|
2992 else |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2993 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
|
2994 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2995 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
|
2996 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
|
2997 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2998 make_C_tag (FALSE); /* a yacc function */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
2999 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
|
3000 } |
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 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
|
3002 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
|
3003 fvextern = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3004 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
|
3005 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
|
3006 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3007 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3008 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
|
3009 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
|
3010 break; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3011 if (cblev == 0) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3012 switch (typdef) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3013 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3014 case tend: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3015 make_C_tag (FALSE); /* a typedef */ |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3016 /* FALLTHRU */ |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3017 default: |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3018 typdef = tnone; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3019 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3020 switch (fvdef) |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3021 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3022 case fignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3023 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3024 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
|
3025 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
|
3026 || (globals && cblev == 0 && (!fvextern || declarations))) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3027 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
|
3028 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
|
3029 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
|
3030 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
|
3031 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
|
3032 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
|
3033 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
|
3034 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
|
3035 /* FALLTHRU */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3036 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
|
3037 fvextern = FALSE; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3038 fvdef = fvnone; |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3039 /* 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
|
3040 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
|
3041 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
|
3042 tok.valid = FALSE; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3043 } |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3044 if (structdef == stagseen) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3045 structdef = snone; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3046 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3047 case ',': |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3048 if (definedef != dnone) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3049 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3050 switch (objdef) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3051 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3052 case omethodtag: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3053 case omethodparm: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3054 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
|
3055 objdef = oinbody; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3056 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3057 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3058 switch (fvdef) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3059 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3060 case foperator: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3061 case finlist: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3062 case fignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3063 case vignore: |
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 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
|
3066 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
|
3067 || (globals && cblev == 0 && (!fvextern || declarations))) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3068 make_C_tag (FALSE); /* a variable */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3069 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3070 default: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3071 fvdef = fvnone; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3072 } |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3073 if (structdef == stagseen) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3074 structdef = snone; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3075 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3076 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
|
3077 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
|
3078 break; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3079 if (cblev == 0 && typdef == tend) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3080 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3081 typdef = tignore; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3082 make_C_tag (FALSE); /* a typedef */ |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3083 break; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3084 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3085 switch (fvdef) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3086 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3087 case foperator: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3088 case finlist: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3089 case fignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3090 case vignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3091 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3092 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
|
3093 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
|
3094 || (globals && cblev == 0 && (!fvextern || declarations))) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3095 make_C_tag (FALSE); /* a variable */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3096 /* FALLTHRU */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3097 default: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3098 fvdef = fvnone; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3099 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3100 if (structdef == stagseen) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3101 structdef = snone; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3102 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3103 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
|
3104 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
|
3105 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3106 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
|
3107 objdef = oparenseen; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3108 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
|
3109 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3110 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
|
3111 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
|
3112 && 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
|
3113 && *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
|
3114 && structdef != sinbody) |
9193
86fd33a4f327
* etags.c (C_entries): Recognise typedef of ANSI style functions.
Francesco Potortì <pot@gnu.org>
parents:
8789
diff
changeset
|
3115 { |
26262
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 /* 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
|
3117 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
|
3118 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
|
3119 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
|
3120 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3121 /* 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
|
3122 case foperator: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3123 fvdef = fstartlist; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3124 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3125 case flistseen: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3126 fvdef = finlist; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3127 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
|
3128 } |
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
|
3129 parlev++; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3130 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3131 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
|
3132 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
|
3133 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3134 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
|
3135 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3136 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
|
3137 objdef = oignore; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3138 } |
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
|
3139 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
|
3140 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3141 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
|
3142 { |
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
|
3143 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
|
3144 case finlist: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3145 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
|
3146 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
|
3147 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3148 if (cblev == 0 && (typdef == tend)) |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3149 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3150 typdef = tignore; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3151 make_C_tag (FALSE); /* a typedef */ |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3152 } |
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 } |
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 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
|
3155 parlev = 0; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3156 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3157 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
|
3158 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
|
3159 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
|
3160 if (typdef == ttypeseen) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3161 typdef = tinbody; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3162 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
|
3163 { |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3164 case skeyseen: /* unnamed struct */ |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
3165 structdef = sinbody; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3166 structtag = "_anonymous_"; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3167 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3168 case stagseen: |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3169 case scolonseen: /* named struct */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3170 structdef = sinbody; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3171 make_C_tag (FALSE); /* a struct */ |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3172 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
|
3173 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3174 switch (fvdef) |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3175 { |
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3176 case flistseen: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3177 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
|
3178 /* FALLTHRU */ |
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3179 case fignore: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3180 fvdef = fvnone; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
3181 break; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3182 case fvnone: |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3183 switch (objdef) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3184 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3185 case otagseen: |
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 class */ |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3187 objdef = oignore; |
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 case omethodtag: |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3190 case omethodparm: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3191 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
|
3192 objdef = oinbody; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3193 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3194 default: |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
3195 /* 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
|
3196 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
|
3197 cblev = -1; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3198 } |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3199 } |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
3200 cblev++; |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
3201 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3202 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
|
3203 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
|
3204 break; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3205 if (fvdef == fstartlist) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3206 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
|
3207 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3208 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
|
3209 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
|
3210 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3211 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
|
3212 { |
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
|
3213 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
|
3214 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
|
3215 } |
4051
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
3216 else if (cblev > 0) |
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
3217 cblev--; |
73aa16fc728d
(consider_token): was `==', now is `='.
Richard M. Stallman <rms@gnu.org>
parents:
3921
diff
changeset
|
3218 if (cblev == 0) |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3219 { |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3220 if (typdef == tinbody) |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3221 typdef = tend; |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
3222 /* 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
|
3223 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
|
3224 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
|
3225 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
|
3226 struct tags. |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
3227 if (structdef == sinbody) |
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
3228 free (structtag); */ |
10761
7aa80669e697
* etags.c (C_entries): Bug corrected in xrealloc of token_str.
Francesco Potortì <pot@gnu.org>
parents:
10754
diff
changeset
|
3229 |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3230 structdef = snone; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3231 structtag = "<error>"; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3232 } |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3233 break; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3234 case '=': |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3235 if (definedef != dnone) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3236 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3237 switch (fvdef) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3238 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3239 case foperator: |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3240 case finlist: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3241 case fignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3242 case vignore: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3243 break; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3244 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
|
3245 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
|
3246 || (globals && cblev == 0 && (!fvextern || declarations))) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3247 make_C_tag (FALSE); /* a variable */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3248 /* FALLTHRU */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3249 default: |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3250 fvdef = vignore; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3251 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3252 break; |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3253 case '+': |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3254 case '-': |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3255 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
|
3256 { |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3257 objdef = omethodsign; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3258 break; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3259 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3260 /* FALLTHRU */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3261 case '#': case '~': case '&': case '%': case '/': case '|': |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3262 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
|
3263 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
|
3264 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
|
3265 /* 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
|
3266 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
|
3267 { |
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 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
|
3269 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
|
3270 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
|
3271 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
|
3272 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
|
3273 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
|
3274 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
|
3275 } |
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
|
3276 break; |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3277 case '\0': |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3278 if (objdef == otagseen) |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3279 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3280 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
|
3281 objdef = oignore; |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3282 } |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3283 /* 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
|
3284 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
|
3285 CNL_SAVE_DEFINEDEF (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3286 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
|
3287 CNL (); |
2323
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3288 break; |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3289 } /* switch (c) */ |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3290 |
626d9ac52bc9
(YACC): flag added to c_ext.
Richard M. Stallman <rms@gnu.org>
parents:
2004
diff
changeset
|
3291 } /* while not eof */ |
240 | 3292 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3293 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3294 /* |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3295 * 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
|
3296 * 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
|
3297 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3298 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
|
3299 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
|
3300 FILE *inf; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3301 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3302 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
|
3303 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3304 |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3305 /* 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
|
3306 static void |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3307 plain_C_entries (inf) |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3308 FILE *inf; |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3309 { |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3310 C_entries (0, inf); |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3311 } |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3312 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3313 /* Always do C++. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3314 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
|
3315 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
|
3316 FILE *inf; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3317 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3318 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
|
3319 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3320 |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
3321 /* Always do Java. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3322 static void |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3323 Cjava_entries (inf) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3324 FILE *inf; |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
3325 { |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
3326 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
|
3327 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
3328 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3329 /* Always do C*. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3330 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
|
3331 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
|
3332 FILE *inf; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3333 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3334 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
|
3335 } |
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 /* Always do Yacc. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3338 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
|
3339 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
|
3340 FILE *inf; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3341 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3342 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
|
3343 } |
240 | 3344 |
26262
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 /* 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
|
3346 #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
|
3347 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
|
3348 !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
|
3349 && (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
|
3350 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
|
3351 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
|
3352 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
|
3353 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
|
3354 ) |
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 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3356 |
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 /* |
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 * 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
|
3359 * 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
|
3360 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3361 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
|
3362 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
|
3363 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
|
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 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
|
3366 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3367 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
|
3368 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
|
3369 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3370 |
240 | 3371 /* Fortran parsing */ |
3372 | |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3373 static bool tail P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3374 static void takeprec P_((void)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3375 static void getit P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3376 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3377 static bool |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3378 tail (cp) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3379 char *cp; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3380 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3381 register int len = 0; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3382 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3383 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
|
3384 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
|
3385 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
|
3386 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3387 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
|
3388 return TRUE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3389 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3390 return FALSE; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3391 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3392 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3393 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3394 takeprec () |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3395 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3396 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3397 if (*dbp != '*') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3398 return; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3399 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
|
3400 dbp = skip_spaces (dbp); |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3401 if (strneq (dbp, "(*)", 3)) |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3402 { |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3403 dbp += 3; |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3404 return; |
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3405 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3406 if (!isdigit (*dbp)) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3407 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3408 --dbp; /* force failure */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3409 return; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3410 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3411 do |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3412 dbp++; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3413 while (isdigit (*dbp)); |
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 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3416 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3417 getit (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3418 FILE *inf; |
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 register char *cp; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3421 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3422 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3423 if (*dbp == '\0') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3424 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3425 lineno++; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3426 linecharno = charno; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3427 charno += readline (&lb, inf); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3428 dbp = lb.buffer; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3429 if (dbp[5] != '&') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3430 return; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3431 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
|
3432 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3433 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3434 if (!isalpha (*dbp) && *dbp != '_' && *dbp != '$') |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3435 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
|
3436 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
|
3437 continue; |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3438 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
|
3439 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
|
3440 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
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 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3443 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3444 Fortran_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3445 FILE *inf; |
240 | 3446 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3447 LOOP_ON_INPUT_LINES (inf, lb, dbp) |
240 | 3448 { |
3449 if (*dbp == '%') | |
3450 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
|
3451 dbp = skip_spaces (dbp); |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3452 if (*dbp == '\0') |
240 | 3453 continue; |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3454 switch (lowcase (*dbp)) |
240 | 3455 { |
3456 case 'i': | |
3457 if (tail ("integer")) | |
3458 takeprec (); | |
3459 break; | |
3460 case 'r': | |
3461 if (tail ("real")) | |
3462 takeprec (); | |
3463 break; | |
3464 case 'l': | |
3465 if (tail ("logical")) | |
3466 takeprec (); | |
3467 break; | |
3468 case 'c': | |
3469 if (tail ("complex") || tail ("character")) | |
3470 takeprec (); | |
3471 break; | |
3472 case 'd': | |
3473 if (tail ("double")) | |
3474 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3475 dbp = skip_spaces (dbp); |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3476 if (*dbp == '\0') |
240 | 3477 continue; |
3478 if (tail ("precision")) | |
3479 break; | |
3480 continue; | |
3481 } | |
3482 break; | |
3483 } | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3484 dbp = skip_spaces (dbp); |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3485 if (*dbp == '\0') |
240 | 3486 continue; |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
3487 switch (lowcase (*dbp)) |
240 | 3488 { |
3489 case 'f': | |
3490 if (tail ("function")) | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3491 getit (inf); |
240 | 3492 continue; |
3493 case 's': | |
3494 if (tail ("subroutine")) | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3495 getit (inf); |
240 | 3496 continue; |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
3497 case 'e': |
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
3498 if (tail ("entry")) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3499 getit (inf); |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
3500 continue; |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3501 case 'b': |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3502 if (tail ("blockdata") || tail ("block data")) |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3503 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3504 dbp = skip_spaces (dbp); |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3505 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
|
3506 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
|
3507 lb.buffer, dbp - lb.buffer, lineno, linecharno); |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3508 else |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3509 getit (inf); /* look for name */ |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3510 } |
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
3511 continue; |
240 | 3512 } |
3513 } | |
3514 } | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3515 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3516 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3517 * 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
|
3518 * 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
|
3519 */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3520 |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3521 static void adagetit P_((FILE *, char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3522 |
26262
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 /* 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
|
3524 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
|
3525 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
|
3526 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
|
3527 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
|
3528 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
|
3529 { |
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 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
|
3531 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
|
3532 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
|
3533 |
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 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
|
3535 { |
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 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
|
3537 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
|
3538 || (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
|
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 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
|
3541 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
|
3542 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
|
3543 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
|
3544 } |
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 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
|
3546 { |
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 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
|
3548 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
|
3549 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
|
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 /* 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
|
3552 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
|
3553 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
|
3554 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
|
3555 } |
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 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
|
3557 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
|
3558 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
|
3559 /* 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
|
3560 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
|
3561 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
|
3562 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
|
3563 } |
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 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
|
3565 { |
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 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
|
3567 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
|
3568 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
|
3569 } |
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 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
|
3571 { |
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 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
|
3573 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
|
3574 (*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
|
3575 && (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
|
3576 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 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
|
3578 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
|
3579 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
|
3580 } |
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 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
|
3582 *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
|
3583 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
|
3584 *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
|
3585 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
|
3586 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
|
3587 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
|
3588 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
|
3589 } |
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 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3592 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
|
3593 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
|
3594 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
|
3595 { |
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 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
|
3597 |
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 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
|
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 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
|
3601 { |
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 /* 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
|
3603 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
|
3604 { |
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 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
|
3606 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
|
3607 { |
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 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
|
3609 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
|
3610 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
|
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 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
|
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 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
|
3615 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
|
3616 } |
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 |
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 /* 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
|
3620 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
|
3621 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
|
3622 |
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 /* 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
|
3624 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
|
3625 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
|
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 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
|
3628 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
|
3629 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 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
|
3631 } |
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 |
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 /* 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
|
3634 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
|
3635 { |
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 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 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
|
3638 } |
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 |
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 /* 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
|
3641 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
|
3642 { |
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 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
|
3644 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
|
3645 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
|
3646 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
|
3647 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
|
3648 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
|
3649 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
|
3650 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
|
3651 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
|
3652 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
|
3653 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
|
3654 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
|
3655 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
|
3656 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
|
3657 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
|
3658 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
|
3659 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
|
3660 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
|
3661 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
|
3662 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
|
3663 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
|
3664 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
|
3665 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
|
3666 { |
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 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
|
3668 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
|
3669 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
|
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 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
|
3672 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
|
3673 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
|
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 |
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 /* 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
|
3677 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
|
3678 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
|
3679 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3680 } /* 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
|
3681 } /* 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
|
3682 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3683 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3684 /* |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3685 * 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
|
3686 * Unix and microcontroller assembly tag handling |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3687 * 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
|
3688 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3689 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3690 Asm_labels (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3691 FILE *inf; |
240 | 3692 { |
3693 register char *cp; | |
3694 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3695 LOOP_ON_INPUT_LINES (inf, lb, cp) |
240 | 3696 { |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3697 /* 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
|
3698 following identifier. */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3699 if (isalpha (*cp) || *cp == '_' || *cp == '.' || *cp == '$') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3700 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3701 /* Read past label. */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3702 cp++; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3703 while (isalnum (*cp) || *cp == '_' || *cp == '.' || *cp == '$') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3704 cp++; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3705 if (*cp == ':' || iswhite (*cp)) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3706 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3707 /* 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
|
3708 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
|
3709 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
|
3710 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3711 } |
240 | 3712 } |
3713 } | |
3714 | |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3715 /* |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3716 * 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
|
3717 * 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
|
3718 * 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
|
3719 * 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
|
3720 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3721 static void |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3722 Perl_functions (inf) |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3723 FILE *inf; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3724 { |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3725 register char *cp; |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3726 |
26262
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 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
|
3728 { |
26262
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++ == '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
|
3730 && *cp++ == 'u' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3731 && *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
|
3732 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3733 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
|
3734 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
|
3735 { |
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 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
|
3737 while (*cp != '\0' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3738 && !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
|
3739 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
|
3740 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
|
3741 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
|
3742 } |
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 } |
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 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
|
3745 && ((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
|
3746 *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
|
3747 && *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
|
3748 || (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
|
3749 *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
|
3750 && *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
|
3751 && *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
|
3752 && *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
|
3753 && *cp++ == 'l')) |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3754 && (*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
|
3755 { |
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 /* 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
|
3757 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
|
3758 |
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 = 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
|
3760 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
|
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 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
|
3763 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
|
3764 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
|
3765 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
|
3766 } |
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 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
|
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 /* 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
|
3770 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
|
3771 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
|
3772 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
|
3773 } |
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 /* 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
|
3776 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
|
3777 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
|
3778 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
|
3779 } |
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 } |
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 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3782 |
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 /* |
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 * 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
|
3785 * 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
|
3786 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3787 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
|
3788 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
|
3789 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
|
3790 { |
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 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
|
3792 |
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 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
|
3794 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3795 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
|
3796 && *cp++ == 'e' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3797 && *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
|
3798 { |
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 cp = skip_spaces (cp); |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3800 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
|
3801 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
|
3802 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
|
3803 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
|
3804 } |
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 |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3806 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
|
3807 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
|
3808 && *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
|
3809 && *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
|
3810 && *cp++ == 's' |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3811 && *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
|
3812 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3813 cp = skip_spaces (cp); |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
3814 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
|
3815 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
|
3816 pfnote (NULL, TRUE, |
13404
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3817 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
|
3818 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3819 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3820 } |
9d6c77b66cfb
* etags.c (get_lang_from_name, get_lang_from_interpreter,
Francesco Potortì <pot@gnu.org>
parents:
13380
diff
changeset
|
3821 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3822 /* Idea by Corny de Souza |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3823 * Cobol tag functions |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3824 * 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
|
3825 * 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
|
3826 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3827 static void |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3828 Cobol_paragraphs (inf) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3829 FILE *inf; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3830 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3831 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
|
3832 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3833 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
|
3834 { |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3835 if (lb.len < 9) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3836 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
|
3837 bp += 8; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3838 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3839 /* 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
|
3840 if (bp[-1] != ' ' || !isalnum (bp[0])) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3841 continue; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3842 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3843 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
|
3844 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
|
3845 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
|
3846 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
|
3847 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
|
3848 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3849 } |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3850 |
240 | 3851 /* Added by Mosur Mohan, 4/22/88 */ |
3852 /* Pascal parsing */ | |
3853 | |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
3854 /* |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
3855 * 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
|
3856 * 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
|
3857 * "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
|
3858 * the tag is skipped. |
240 | 3859 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
3860 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3861 Pascal_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
3862 FILE *inf; |
240 | 3863 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3864 linebuffer tline; /* mostly copied from C_entries */ |
240 | 3865 long save_lcno; |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3866 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
|
3867 char c, *cp, *namebuf; |
240 | 3868 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
3869 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
|
3870 incomment, /* point is inside a comment */ |
240 | 3871 inquote, /* point is inside '..' string */ |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3872 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
|
3873 keyword, so next item = potential tag */ |
240 | 3874 found_tag, /* point is after a potential tag */ |
3875 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
|
3876 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
|
3877 next token will determine whether this |
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3878 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
|
3879 whether it is a real tag */ |
240 | 3880 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3881 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
|
3882 namebuf = NULL; /* keep compiler quiet */ |
240 | 3883 lineno = 0; |
3884 charno = 0; | |
3885 dbp = lb.buffer; | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3886 *dbp = '\0'; |
240 | 3887 initbuffer (&tline); |
3888 | |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3889 incomment = inquote = FALSE; |
240 | 3890 found_tag = FALSE; /* have a proc name; check if extern */ |
3891 get_tagname = FALSE; /* have found "procedure" keyword */ | |
3892 inparms = FALSE; /* found '(' after "proc" */ | |
3893 verify_tag = FALSE; /* check if "extern" is ahead */ | |
3894 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3895 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
3896 while (!feof (inf)) /* long main loop to get next char */ |
240 | 3897 { |
3898 c = *dbp++; | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3899 if (c == '\0') /* if end of line */ |
240 | 3900 { |
15243
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
3901 lineno++; |
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
3902 linecharno = charno; |
c024dca549c5
* etags.c (CNL_SAVE_DEFINEDEF): Set linecharno for use by readline.
Francesco Potortì <pot@gnu.org>
parents:
14982
diff
changeset
|
3903 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
|
3904 dbp = lb.buffer; |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3905 if (*dbp == '\0') |
240 | 3906 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
|
3907 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
|
3908 || get_tagname)) |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3909 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
|
3910 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
|
3911 the procedure or function */ |
240 | 3912 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3913 if (incomment) |
240 | 3914 { |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3915 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
|
3916 incomment = FALSE; |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3917 else if (c == '*' && *dbp == ')') /* within (* *) comments */ |
240 | 3918 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3919 dbp++; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3920 incomment = FALSE; |
240 | 3921 } |
3922 continue; | |
3923 } | |
3924 else if (inquote) | |
3925 { | |
3926 if (c == '\'') | |
3927 inquote = FALSE; | |
3928 continue; | |
3929 } | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
3930 else |
240 | 3931 switch (c) |
3932 { | |
3933 case '\'': | |
3934 inquote = TRUE; /* found first quote */ | |
3935 continue; | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3936 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
|
3937 incomment = TRUE; |
240 | 3938 continue; |
3939 case '(': | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3940 if (*dbp == '*') /* found open (* comment */ |
240 | 3941 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
3942 incomment = TRUE; |
240 | 3943 dbp++; |
3944 } | |
3945 else if (found_tag) /* found '(' after tag, i.e., parm-list */ | |
3946 inparms = TRUE; | |
3947 continue; | |
3948 case ')': /* end of parms list */ | |
3949 if (inparms) | |
3950 inparms = FALSE; | |
3951 continue; | |
3952 case ';': | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3953 if (found_tag && !inparms) /* end of proc or fn stmt */ |
240 | 3954 { |
3955 verify_tag = TRUE; | |
3956 break; | |
3957 } | |
3958 continue; | |
3959 } | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3960 if (found_tag && verify_tag && (*dbp != ' ')) |
240 | 3961 { |
3962 /* 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
|
3963 if (*dbp == '\0') |
240 | 3964 continue; |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3965 if (lowcase (*dbp == 'e')) |
240 | 3966 { |
3967 if (tail ("extern")) /* superfluous, really! */ | |
3968 { | |
3969 found_tag = FALSE; | |
3970 verify_tag = FALSE; | |
3971 } | |
3972 } | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3973 else if (lowcase (*dbp) == 'f') |
240 | 3974 { |
3975 if (tail ("forward")) /* check for forward reference */ | |
3976 { | |
3977 found_tag = FALSE; | |
3978 verify_tag = FALSE; | |
3979 } | |
3980 } | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3981 if (found_tag && verify_tag) /* not external proc, so make tag */ |
240 | 3982 { |
3983 found_tag = FALSE; | |
3984 verify_tag = FALSE; | |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
3985 pfnote (namebuf, TRUE, |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3986 tline.buffer, save_len, save_lineno, save_lcno); |
240 | 3987 continue; |
3988 } | |
3989 } | |
3990 if (get_tagname) /* grab name of proc or fn */ | |
3991 { | |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
3992 if (*dbp == '\0') |
240 | 3993 continue; |
3994 | |
3995 /* 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
|
3996 grow_linebuffer (&tline, lb.len + 1); |
240 | 3997 strcpy (tline.buffer, lb.buffer); |
3998 save_lineno = lineno; | |
3999 save_lcno = linecharno; | |
4000 | |
4001 /* grab block name */ | |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4002 for (cp = dbp + 1; *cp != '\0' && !endtoken (*cp); cp++) |
240 | 4003 continue; |
20788
2bf465c6cc6b
(getit, Cobol_paragraphs, Pascal_functions,
Richard M. Stallman <rms@gnu.org>
parents:
20071
diff
changeset
|
4004 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
|
4005 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
|
4006 save_len = dbp - lb.buffer + 1; |
240 | 4007 get_tagname = FALSE; |
4008 found_tag = TRUE; | |
4009 continue; | |
4010 | |
4011 /* and proceed to check for "extern" */ | |
4012 } | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4013 else if (!incomment && !inquote && !found_tag) |
240 | 4014 { |
4015 /* check for proc/fn keywords */ | |
12398
ccfd646cfad9
* etags.c (plain_C_entries): new function.
Francesco Potortì <pot@gnu.org>
parents:
12344
diff
changeset
|
4016 switch (lowcase (c)) |
240 | 4017 { |
4018 case 'p': | |
4019 if (tail ("rocedure")) /* c = 'p', dbp has advanced */ | |
4020 get_tagname = TRUE; | |
4021 continue; | |
4022 case 'f': | |
4023 if (tail ("unction")) | |
4024 get_tagname = TRUE; | |
4025 continue; | |
4026 } | |
4027 } | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4028 } /* while not eof */ |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
4029 |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
4030 free (tline.buffer); |
240 | 4031 } |
4032 | |
4033 /* | |
4034 * lisp tag functions | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4035 * look for (def or (DEF, quote or QUOTE |
240 | 4036 */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4037 |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4038 static int L_isdef P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4039 static int L_isquote P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4040 static void L_getit P_((void)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4041 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4042 static int |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4043 L_isdef (strp) |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4044 register char *strp; |
240 | 4045 { |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4046 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
|
4047 && (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
|
4048 && (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
|
4049 } |
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4050 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4051 static int |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4052 L_isquote (strp) |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4053 register char *strp; |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4054 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4055 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
|
4056 && (*++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
|
4057 && (*++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
|
4058 && (*++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
|
4059 && (*++strp == 'e' || *strp == 'E') |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4060 && iswhite (*++strp)); |
240 | 4061 } |
4062 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4063 static void |
240 | 4064 L_getit () |
4065 { | |
4066 register char *cp; | |
4067 | |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4068 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
|
4069 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
|
4070 else if (*dbp == '(') |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4071 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4072 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
|
4073 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
|
4074 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
|
4075 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
|
4076 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
|
4077 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4078 |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
4079 for (cp = dbp /*+1*/; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4080 *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
|
4081 cp++) |
4663
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4082 continue; |
5f0ff5c890a8
* etags.c (L_isdef, L_isquote, L_getit): small optimisations.
Francesco Potortì <pot@gnu.org>
parents:
4406
diff
changeset
|
4083 if (cp == dbp) |
240 | 4084 return; |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
4085 |
20071
dd3a2332a66f
(L_getit): Always make named tags so that Emacs
Karl Heuer <kwzh@gnu.org>
parents:
19185
diff
changeset
|
4086 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
|
4087 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
240 | 4088 } |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4089 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4090 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4091 Lisp_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4092 FILE *inf; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4093 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4094 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
|
4095 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4096 if (dbp[0] == '(') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4097 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4098 if (L_isdef (dbp)) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4099 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4100 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
|
4101 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4102 L_getit (); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4103 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4104 else |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4105 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4106 /* Check for (foo::defmumble name-defined ... */ |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4107 do |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4108 dbp++; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4109 while (*dbp != '\0' && !iswhite (*dbp) |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4110 && *dbp != ':' && *dbp != '(' && *dbp != ')'); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4111 if (*dbp == ':') |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4112 { |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4113 do |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4114 dbp++; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4115 while (*dbp == ':'); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4116 |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4117 if (L_isdef (dbp - 1)) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4118 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4119 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
|
4120 dbp = skip_spaces (dbp); |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4121 L_getit (); |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4122 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4123 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4124 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4125 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4126 } |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4127 } |
240 | 4128 |
4129 /* | |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4130 * Postscript tag functions |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4131 * 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
|
4132 * 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
|
4133 * 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
|
4134 * 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
|
4135 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4136 static void |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4137 Postscript_functions (inf) |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4138 FILE *inf; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4139 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4140 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
|
4141 |
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 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
|
4143 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4144 if (bp[0] == '/') |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4145 { |
26262
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 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
|
4147 *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
|
4148 ep++) |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4149 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
|
4150 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
|
4151 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
|
4152 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4153 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
|
4154 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4155 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
|
4156 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
|
4157 get_tag (bp); |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4158 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4159 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4160 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4161 |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4162 |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4163 /* |
240 | 4164 * Scheme tag functions |
4165 * look for (def... xyzzy | |
4166 * look for (def... (xyzzy | |
4167 * look for (def ... ((...(xyzzy .... | |
4168 * look for (set! xyzzy | |
4169 */ | |
4170 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4171 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4172 Scheme_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4173 FILE *inf; |
240 | 4174 { |
26262
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 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
|
4176 |
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 LOOP_ON_INPUT_LINES (inf, lb, bp) |
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 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
|
4180 && (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
|
4181 && (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
|
4182 && (bp[3] == 'F' || bp[3] == 'f')) |
240 | 4183 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4184 bp = skip_non_spaces (bp); |
240 | 4185 /* 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
|
4186 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
|
4187 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
|
4188 get_tag (bp); |
240 | 4189 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4190 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
|
4191 && (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
|
4192 && (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
|
4193 && (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
|
4194 && (bp[4] == '!' || bp[4] == '!') |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4195 && (iswhite (bp[5]))) |
240 | 4196 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4197 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
|
4198 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
|
4199 get_tag (bp); |
240 | 4200 } |
4201 } | |
4202 } | |
4203 | |
4204 /* Find tags in TeX and LaTeX input files. */ | |
4205 | |
4206 /* TEX_toktab is a table of TeX control sequences that define tags. | |
4207 Each TEX_tabent records one such control sequence. | |
4208 CONVERT THIS TO USE THE Stab TYPE!! */ | |
4209 struct TEX_tabent | |
4210 { | |
4211 char *name; | |
4212 int len; | |
4213 }; | |
4214 | |
4215 struct TEX_tabent *TEX_toktab = NULL; /* Table with tag tokens */ | |
4216 | |
4217 /* Default set of control sequences to put into TEX_toktab. | |
4218 The value of environment var TEXTAGS is prepended to this. */ | |
4219 | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4220 char *TEX_defenv = "\ |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
4221 :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
|
4222 :part:appendix:entry:index"; |
240 | 4223 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4224 static void TEX_mode P_((FILE *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4225 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
|
4226 static int TEX_Token P_((char *)); |
240 | 4227 |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4228 char TEX_esc = '\\'; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4229 char TEX_opgrp = '{'; |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4230 char TEX_clgrp = '}'; |
240 | 4231 |
4232 /* | |
4233 * TeX/LaTeX scanning loop. | |
4234 */ | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4235 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4236 TeX_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4237 FILE *inf; |
240 | 4238 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4239 char *cp, *lasthit; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4240 register int i; |
240 | 4241 |
4242 /* 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
|
4243 TEX_mode (inf); |
240 | 4244 |
4245 /* Initialize token table once from environment. */ | |
4246 if (!TEX_toktab) | |
4247 TEX_toktab = TEX_decode_env ("TEXTAGS", TEX_defenv); | |
4248 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4249 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
|
4250 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4251 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
|
4252 /* 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
|
4253 while ((cp = etags_strchr (cp, TEX_esc)) != NULL) |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4254 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4255 if (*++cp == '\0') |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4256 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
|
4257 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
|
4258 lasthit = cp; |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4259 i = TEX_Token (lasthit); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4260 if (i >= 0) |
240 | 4261 { |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4262 /* 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
|
4263 register char *p; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4264 for (p = lasthit + TEX_toktab[i].len; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4265 *p != '\0' && *p != TEX_clgrp; |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4266 p++) |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4267 continue; */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4268 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
|
4269 lb.buffer, lb.len, lineno, linecharno); |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4270 break; /* We only tag a line once */ |
240 | 4271 } |
4272 } | |
4273 } | |
4274 } | |
4275 | |
4276 #define TEX_LESC '\\' | |
4277 #define TEX_SESC '!' | |
4278 #define TEX_cmt '%' | |
4279 | |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
4280 /* 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
|
4281 chars accordingly. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4282 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4283 TEX_mode (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4284 FILE *inf; |
240 | 4285 { |
4286 int c; | |
4287 | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4288 while ((c = getc (inf)) != EOF) |
240 | 4289 { |
4290 /* Skip to next line if we hit the TeX comment char. */ | |
4291 if (c == TEX_cmt) | |
4292 while (c != '\n') | |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4293 c = getc (inf); |
240 | 4294 else if (c == TEX_LESC || c == TEX_SESC ) |
4295 break; | |
4296 } | |
4297 | |
4298 if (c == TEX_LESC) | |
4299 { | |
4300 TEX_esc = TEX_LESC; | |
4301 TEX_opgrp = '{'; | |
4302 TEX_clgrp = '}'; | |
4303 } | |
4304 else | |
4305 { | |
4306 TEX_esc = TEX_SESC; | |
4307 TEX_opgrp = '<'; | |
4308 TEX_clgrp = '>'; | |
4309 } | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4310 /* 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
|
4311 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
|
4312 rewind (inf); |
240 | 4313 } |
4314 | |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
4315 /* 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
|
4316 Build token table. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4317 static struct TEX_tabent * |
240 | 4318 TEX_decode_env (evarname, defenv) |
4319 char *evarname; | |
4320 char *defenv; | |
4321 { | |
4322 register char *env, *p; | |
4323 | |
4324 struct TEX_tabent *tab; | |
4325 int size, i; | |
4326 | |
4327 /* Append default string to environment. */ | |
4328 env = getenv (evarname); | |
4329 if (!env) | |
4330 env = defenv; | |
4331 else | |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4332 { |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4333 char *oldenv = env; |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4334 env = concat (oldenv, defenv, ""); |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4335 } |
240 | 4336 |
4337 /* Allocate a token table */ | |
4338 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
|
4339 if ((p = etags_strchr (p, ':')) && *++p != '\0') |
240 | 4340 size++; |
1026
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4341 /* Add 1 to leave room for null terminator. */ |
cc96e2df9b71
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
774
diff
changeset
|
4342 tab = xnew (size + 1, struct TEX_tabent); |
240 | 4343 |
4344 /* Unpack environment string into token table. Be careful about */ | |
4345 /* zero-length strings (leading ':', "::" and trailing ':') */ | |
4346 for (i = 0; *env;) | |
4347 { | |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
4348 p = etags_strchr (env, ':'); |
240 | 4349 if (!p) /* End of environment string. */ |
4350 p = env + strlen (env); | |
4351 if (p - env > 0) | |
4352 { /* Only non-zero strings. */ | |
4353 tab[i].name = savenstr (env, p - env); | |
4354 tab[i].len = strlen (tab[i].name); | |
4355 i++; | |
4356 } | |
4357 if (*p) | |
4358 env = p + 1; | |
4359 else | |
4360 { | |
4361 tab[i].name = NULL; /* Mark end of table. */ | |
4362 tab[i].len = 0; | |
4363 break; | |
4364 } | |
4365 } | |
4366 return tab; | |
4367 } | |
4368 | |
4369 /* 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
|
4370 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
|
4371 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
|
4372 Keep the capital `T' in `token' for dumb truncating compilers |
240 | 4373 (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
|
4374 static int |
240 | 4375 TEX_Token (cp) |
4376 char *cp; | |
4377 { | |
4378 int i; | |
4379 | |
4380 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
|
4381 if (strneq (TEX_toktab[i].name, cp, TEX_toktab[i].len)) |
240 | 4382 return i; |
4383 return -1; | |
4384 } | |
4385 | |
28663
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4386 /* Texinfo support. Dave Love, Mar. 2000. */ |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4387 static void |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4388 Texinfo_functions (inf) |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4389 FILE * inf; |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4390 { |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4391 char *cp, *start; |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4392 LOOP_ON_INPUT_LINES (inf, lb, cp) |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4393 { |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4394 if ((*cp++ == '@' && *cp++ == 'n' && *cp++ == 'o' && *cp++ == 'd' |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4395 && *cp++ == 'e' && iswhite (*cp++))) |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4396 { |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4397 while (iswhite (*cp)) |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4398 cp++; |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4399 start = cp; |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4400 while (*cp != '\0' && *cp != ',') |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4401 cp++; |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4402 pfnote (savenstr (start, cp - start), TRUE, |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4403 lb.buffer, cp - lb.buffer + 1, lineno, linecharno); |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4404 } |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4405 } |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4406 } |
75826102199c
(Texinfo_functions): New function.
Dave Love <fx@gnu.org>
parents:
27948
diff
changeset
|
4407 |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4408 /* |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4409 * 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
|
4410 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4411 * 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
|
4412 * 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
|
4413 */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4414 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
|
4415 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
|
4416 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
|
4417 |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4418 static void |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4419 Prolog_functions (inf) |
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4420 FILE *inf; |
240 | 4421 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4422 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
|
4423 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4424 int allocated; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4425 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4426 allocated = 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4427 len = 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4428 last = NULL; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4429 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4430 LOOP_ON_INPUT_LINES (inf, lb, cp) |
240 | 4431 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4432 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
|
4433 continue; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4434 else if (iswhite (cp[0])) /* Not a predicate */ |
240 | 4435 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
|
4436 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
|
4437 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
|
4438 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
|
4439 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4440 /* 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
|
4441 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
|
4442 if (last == NULL) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4443 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
|
4444 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
|
4445 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
|
4446 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
|
4447 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
|
4448 last[len] = '\0'; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4449 } |
240 | 4450 } |
4451 } | |
4452 | |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4453 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4454 static void |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4455 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
|
4456 linebuffer *plb; |
6756
8086a2590e2f
* etags.c (outf, outfiledir): renamed to tagf, tagfiledir.
Francesco Potortì <pot@gnu.org>
parents:
6592
diff
changeset
|
4457 FILE *inf; |
240 | 4458 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4459 char *cp; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4460 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4461 do |
240 | 4462 { |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4463 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
|
4464 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
|
4465 return; |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4466 lineno++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4467 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
|
4468 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4469 while (!feof(inf)); |
240 | 4470 } |
14859
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 /* |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4473 * 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
|
4474 * <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
|
4475 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4476 * 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
|
4477 * 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
|
4478 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4479 * 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
|
4480 * was found. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4481 */ |
27658
5980f19581dc
(pfnote, new_pfnote, C_entries, prolog_pred, erlang_func): Add
Dave Love <fx@gnu.org>
parents:
27595
diff
changeset
|
4482 static int |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4483 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
|
4484 char *s; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4485 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
|
4486 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4487 int pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4488 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4489 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4490 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
|
4491 if (pos < 1) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4492 return 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4493 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4494 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
|
4495 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
|
4496 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4497 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
|
4498 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4499 if (s[pos] == '(') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4500 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4501 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4502 /* Save only the first clause. */ |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4503 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
|
4504 || len != (int)strlen (last) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4505 || !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
|
4506 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4507 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
|
4508 return len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4509 } |
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 return 0; |
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 |
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 * 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
|
4516 * 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
|
4517 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4518 * 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
|
4519 * - 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
|
4520 * - 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
|
4521 * Backslash quotes everything. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4522 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4523 static int |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4524 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
|
4525 char *s; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4526 int pos; |
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 int origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4529 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4530 origpos = pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4531 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4532 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
|
4533 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4534 /* 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
|
4535 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4536 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
|
4537 { |
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 if (s[pos] == '\'') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4543 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4544 pos++; |
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 while (1) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4547 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4548 if (s[pos] == '\'') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4549 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4550 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4551 if (s[pos] != '\'') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4552 break; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4553 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
|
4554 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4555 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
|
4556 /* 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
|
4557 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4558 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
|
4559 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4560 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
|
4561 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4562 pos += 2; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4563 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4564 else |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4565 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4566 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4567 return pos - origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4568 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4569 else |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4570 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4571 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4572 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4573 /* |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4574 * 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
|
4575 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4576 * 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
|
4577 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4578 * 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
|
4579 */ |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4580 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
|
4581 static void erlang_attribute P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4582 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
|
4583 |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4584 static void |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4585 Erlang_functions (inf) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4586 FILE *inf; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4587 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4588 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
|
4589 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4590 int allocated; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4591 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4592 allocated = 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4593 len = 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4594 last = NULL; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4595 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4596 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
|
4597 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4598 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
|
4599 continue; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4600 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
|
4601 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
|
4602 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
|
4603 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
|
4604 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
|
4605 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
|
4606 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
|
4607 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4608 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
|
4609 last = NULL; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4610 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4611 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
|
4612 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4613 /* |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4614 * 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
|
4615 * 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
|
4616 */ |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4617 if (last == NULL) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4618 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
|
4619 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
|
4620 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
|
4621 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
|
4622 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
|
4623 last[len] = '\0'; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4624 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4625 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4626 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4627 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4628 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4629 /* |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4630 * 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
|
4631 * <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
|
4632 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4633 * 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
|
4634 * 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
|
4635 * |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4636 * 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
|
4637 * was found. |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4638 */ |
27658
5980f19581dc
(pfnote, new_pfnote, C_entries, prolog_pred, erlang_func): Add
Dave Love <fx@gnu.org>
parents:
27595
diff
changeset
|
4639 static int |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4640 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
|
4641 char *s; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4642 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
|
4643 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4644 int pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4645 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4646 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4647 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
|
4648 if (pos < 1) |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4649 return 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4650 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4651 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
|
4652 pos = skip_spaces (s + pos) - s; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4653 |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4654 /* Save only the first clause. */ |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4655 if (s[pos++] == '(' |
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4656 && (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
|
4657 || len != (int)strlen (last) |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4658 || !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
|
4659 { |
26262
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 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
|
4661 return len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4662 } |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4663 |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4664 return 0; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4665 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4666 |
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 /* |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4669 * 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
|
4670 * and records. |
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 * 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
|
4673 * -define(foo, bar). |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4674 * -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
|
4675 * -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
|
4676 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4677 static void |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4678 erlang_attribute (s) |
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 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4681 int pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4682 int len; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4683 |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4684 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
|
4685 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4686 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
|
4687 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
|
4688 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4689 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
|
4690 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
|
4691 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
|
4692 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
|
4693 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
|
4694 } |
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 return; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4697 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4698 |
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 /* |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4701 * 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
|
4702 * 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
|
4703 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4704 static int |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4705 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
|
4706 char *s; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4707 int pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4708 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4709 int origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4710 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4711 origpos = pos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4712 |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4713 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
|
4714 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4715 /* 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
|
4716 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4717 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
|
4718 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4719 return pos - origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4720 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4721 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
|
4722 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4723 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4724 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4725 while (1) |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4726 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4727 if (s[pos] == '\'') |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4728 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4729 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4730 break; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4731 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4732 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
|
4733 /* 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
|
4734 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4735 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
|
4736 { |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4737 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
|
4738 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4739 pos += 2; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4740 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4741 else |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4742 pos++; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4743 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4744 return pos - origpos; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4745 } |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4746 else |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4747 return -1; |
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
4748 } |
240 | 4749 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4750 #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
|
4751 |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4752 static char *scan_separators P_((char *)); |
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4753 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
|
4754 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
|
4755 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
|
4756 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4757 /* 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
|
4758 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
|
4759 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
|
4760 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
|
4761 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
|
4762 terminates name string. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4763 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
|
4764 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
|
4765 char *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 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
|
4768 char *copyto = name; |
18042
c378dd0b8de7
Various cleanups on TeX, Erlang, Prolog, C.
Francesco Potortì <pot@gnu.org>
parents:
17785
diff
changeset
|
4769 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
|
4770 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4771 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
|
4772 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4773 if (quoted) |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4774 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4775 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
|
4776 *copyto++ = '\t'; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4777 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
|
4778 *copyto++ = sep; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4779 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4780 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4781 /* 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
|
4782 *copyto++ = '\\'; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4783 *copyto++ = *name; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4784 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4785 quoted = FALSE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4786 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4787 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
|
4788 quoted = TRUE; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4789 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
|
4790 break; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4791 else |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4792 *copyto++ = *name; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4793 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4794 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4795 /* 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
|
4796 *copyto = '\0'; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4797 return name; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4798 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4799 |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4800 /* 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
|
4801 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
|
4802 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
|
4803 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
|
4804 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
|
4805 bool ignore_case; |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4806 { |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4807 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
|
4808 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
|
4809 |
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 /* 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
|
4811 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
|
4812 { |
26262
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 /* 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
|
4814 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
|
4815 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
|
4816 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
|
4817 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
|
4818 |
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 /* 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
|
4820 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
|
4821 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
|
4822 { |
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 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
|
4824 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
|
4825 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
|
4826 |
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 /* 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
|
4828 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
|
4829 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
|
4830 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4831 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
|
4832 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
|
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 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
|
4835 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
|
4836 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
|
4837 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
|
4838 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
|
4839 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4840 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
|
4841 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4842 /* 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
|
4843 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
|
4844 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4845 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
|
4846 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
|
4847 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
|
4848 |
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 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
|
4850 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
|
4851 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4852 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
|
4853 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
|
4854 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4855 *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
|
4856 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
|
4857 if (lang == NULL) |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4858 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
|
4859 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
|
4860 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4861 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
|
4862 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4863 /* 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
|
4864 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
|
4865 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
|
4866 break; |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4867 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4868 } |
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4869 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4870 /* 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
|
4871 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
|
4872 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
|
4873 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
|
4874 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
|
4875 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
|
4876 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
|
4877 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4878 char *name; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4879 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
|
4880 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
|
4881 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
|
4882 |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
4883 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4884 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
|
4885 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4886 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
|
4887 return; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4888 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4889 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
|
4890 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
|
4891 { |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
4892 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
|
4893 return; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4894 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4895 (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
|
4896 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4897 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
|
4898 /* 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
|
4899 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
|
4900 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
|
4901 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
|
4902 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
|
4903 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4904 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
|
4905 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
|
4906 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4907 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
|
4908 return; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4909 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4910 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4911 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
|
4912 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
|
4913 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
|
4914 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
|
4915 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
|
4916 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
|
4917 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
|
4918 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
|
4919 } |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4920 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4921 /* |
13380
12bfc1ecec61
* etags.c (lowcase): Use the standard tolower function.
Francesco Potortì <pot@gnu.org>
parents:
12879
diff
changeset
|
4922 * 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
|
4923 * arguments. |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4924 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4925 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
|
4926 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
|
4927 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
|
4928 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
|
4929 { |
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
|
4930 char *result, *t; |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4931 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
|
4932 |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
4933 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
|
4934 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
|
4935 |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4936 /* 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
|
4937 if (out[size - 1] == '\\') |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4938 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
|
4939 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
|
4940 t != NULL; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4941 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
|
4942 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
|
4943 { |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4944 dig = t[1] - '0'; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4945 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
|
4946 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
|
4947 } |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4948 else |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4949 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
|
4950 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4951 /* 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
|
4952 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
|
4953 |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4954 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
|
4955 if (*out == '\\' && isdigit (*++out)) |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4956 { |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4957 /* 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
|
4958 dig = *out - '0'; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4959 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
|
4960 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
|
4961 t += diglen; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4962 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4963 else |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4964 *t++ = *out; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4965 *t = '\0'; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
4966 |
26262
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 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
|
4968 abort (); |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4969 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4970 return result; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4971 } |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4972 |
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 /* Deallocate all patterns. */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4974 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
|
4975 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
|
4976 { |
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 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
|
4978 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
|
4979 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
4980 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
|
4981 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
|
4982 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
|
4983 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
|
4984 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
|
4985 } |
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 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
|
4987 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
4988 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
4989 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
|
4990 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
|
4991 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
|
4992 { |
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 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
|
4994 |
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 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
|
4996 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
|
4997 /* 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
|
4998 for (cp = bp + 1; |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
4999 *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
|
5000 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
|
5001 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
|
5002 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
|
5003 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
|
5004 } |
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 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5006 #endif /* ETAGS_REGEXPS */ |
240 | 5007 /* 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
|
5008 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
|
5009 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
|
5010 linebuffer *lbp; |
240 | 5011 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5012 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
|
5013 lbp->buffer = xnew (200, char); |
240 | 5014 } |
5015 | |
5016 /* | |
26262
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 * 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
|
5018 * 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
|
5019 * `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
|
5020 * |
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 * 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
|
5022 * 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
|
5023 * 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
|
5024 * file). |
240 | 5025 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5026 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
|
5027 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
|
5028 linebuffer *lbp; |
240 | 5029 register FILE *stream; |
5030 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5031 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
|
5032 register char *p = lbp->buffer; |
240 | 5033 register char *pend; |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5034 int chars_deleted; |
240 | 5035 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5036 pend = p + lbp->size; /* Separate to avoid 386/IX compiler bug. */ |
240 | 5037 |
5038 while (1) | |
5039 { | |
5040 register int c = getc (stream); | |
5041 if (p == pend) | |
5042 { | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5043 /* 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
|
5044 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
|
5045 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
|
5046 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
|
5047 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
|
5048 lbp->buffer = buffer; |
240 | 5049 } |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5050 if (c == EOF) |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5051 { |
14859
efa1bc6b7b17
* etags.c (just_read_file): Reset lineno and charno on entry.
Francesco Potortì <pot@gnu.org>
parents:
14230
diff
changeset
|
5052 *p = '\0'; |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5053 chars_deleted = 0; |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5054 break; |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5055 } |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5056 if (c == '\n') |
240 | 5057 { |
10990
c0ceaa45ded7
* etags.c (process_file): free (filename) after using it.
Francesco Potortì <pot@gnu.org>
parents:
10801
diff
changeset
|
5058 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
|
5059 { |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5060 p -= 1; |
15772
eb1cef7102e3
(readline_internal) [DOS_NT]: Don't include CRs when
Richard M. Stallman <rms@gnu.org>
parents:
15683
diff
changeset
|
5061 #ifdef DOS_NT |
16373
d50369f4bb41
* etags.c (print_version): Print copyright info.
Francesco Potortì <pot@gnu.org>
parents:
16086
diff
changeset
|
5062 /* 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
|
5063 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
|
5064 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
|
5065 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
|
5066 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
|
5067 chars_deleted = 1; |
eb1cef7102e3
(readline_internal) [DOS_NT]: Don't include CRs when
Richard M. Stallman <rms@gnu.org>
parents:
15683
diff
changeset
|
5068 #else |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5069 chars_deleted = 2; |
15772
eb1cef7102e3
(readline_internal) [DOS_NT]: Don't include CRs when
Richard M. Stallman <rms@gnu.org>
parents:
15683
diff
changeset
|
5070 #endif |
10376
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5071 } |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5072 else |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5073 { |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5074 chars_deleted = 1; |
b1c4515958b6
* etags.c (Lang_function): Use void instead to declare the
Francesco Potortì <pot@gnu.org>
parents:
10355
diff
changeset
|
5075 } |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5076 *p = '\0'; |
240 | 5077 break; |
5078 } | |
5079 *p++ = c; | |
5080 } | |
26262
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 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
|
5082 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5083 return lbp->len + chars_deleted; |
240 | 5084 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5085 |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5086 /* |
17602
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5087 * 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
|
5088 * 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
|
5089 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5090 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
|
5091 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
|
5092 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
|
5093 FILE *stream; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5094 { |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5095 /* 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
|
5096 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
|
5097 #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
|
5098 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
|
5099 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
|
5100 |
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 /* 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
|
5102 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
|
5103 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
|
5104 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5105 /* 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
|
5106 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
|
5107 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
|
5108 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5109 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
|
5110 switch (match) |
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 case -2: |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5113 /* 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
|
5114 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
|
5115 { |
26262
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 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
|
5117 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
|
5118 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5119 break; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5120 case -1: |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5121 /* No match. */ |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5122 break; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5123 default: |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5124 /* 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
|
5125 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
|
5126 { |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5127 /* 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
|
5128 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
|
5129 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
|
5130 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
|
5131 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
|
5132 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5133 else |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5134 { |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5135 /* Make an unnamed tag. */ |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5136 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
|
5137 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
|
5138 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5139 break; |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5140 } |
39b58a508be6
* etags.c [TeX_named_tokens]: Set to FALSE if undefined.
Francesco Potortì <pot@gnu.org>
parents:
17477
diff
changeset
|
5141 } |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5142 #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
|
5143 |
9976
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5144 return result; |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5145 } |
240 | 5146 |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5147 /* |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5148 * 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
|
5149 * 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
|
5150 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5151 static char * |
240 | 5152 savestr (cp) |
5153 char *cp; | |
5154 { | |
5155 return savenstr (cp, strlen (cp)); | |
5156 } | |
5157 | |
10404
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5158 /* |
631f1dac6f7a
Global polishing, some bugs corrected, dynamic allocation used instead
Francesco Potortì <pot@gnu.org>
parents:
10378
diff
changeset
|
5159 * 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
|
5160 * 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
|
5161 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5162 static char * |
240 | 5163 savenstr (cp, len) |
5164 char *cp; | |
5165 int len; | |
5166 { | |
5167 register char *dp; | |
5168 | |
5169 dp = xnew (len + 1, char); | |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5170 strncpy (dp, cp, len); |
240 | 5171 dp[len] = '\0'; |
5172 return dp; | |
5173 } | |
5174 | |
5175 /* | |
5176 * Return the ptr in sp at which the character c last | |
5177 * appears; NULL if not found | |
5178 * | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5179 * Identical to POSIX strrchr, included for portability. |
240 | 5180 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5181 static char * |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5182 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
|
5183 register const char *sp; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5184 register int c; |
240 | 5185 { |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5186 register const char *r; |
240 | 5187 |
5188 r = NULL; | |
5189 do | |
5190 { | |
5191 if (*sp == c) | |
5192 r = sp; | |
5193 } while (*sp++); | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5194 return (char *)r; |
240 | 5195 } |
5196 | |
774 | 5197 |
240 | 5198 /* |
5199 * Return the ptr in sp at which the character c first | |
5200 * appears; NULL if not found | |
5201 * | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5202 * Identical to POSIX strchr, included for portability. |
240 | 5203 */ |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5204 static char * |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5205 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
|
5206 register const char *sp; |
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5207 register int c; |
240 | 5208 { |
5209 do | |
5210 { | |
5211 if (*sp == c) | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5212 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
|
5213 } while (*sp++); |
2869e501c2de
* etags.c [ETAGS_REGEXP]: All the new code that deals with regexps
Francesco Potortì <pot@gnu.org>
parents:
9975
diff
changeset
|
5214 return NULL; |
240 | 5215 } |
5216 | |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5217 /* 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
|
5218 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
|
5219 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
|
5220 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
|
5221 { |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
5222 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
|
5223 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
|
5224 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
|
5225 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5226 |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5227 /* 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
|
5228 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
|
5229 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
|
5230 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
|
5231 { |
27661
c8b3e7e83e09
2000-02-10 Francesco Potorti` <pot@gnu.org>
Francesco Potortì <pot@gnu.org>
parents:
27658
diff
changeset
|
5232 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
|
5233 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
|
5234 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
|
5235 } |
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 |
240 | 5237 /* 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
|
5238 static void |
240 | 5239 fatal (s1, s2) |
5240 char *s1, *s2; | |
5241 { | |
5242 error (s1, s2); | |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5243 exit (BAD); |
240 | 5244 } |
5245 | |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5246 static void |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5247 pfatal (s1) |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5248 char *s1; |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5249 { |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5250 perror (s1); |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5251 exit (BAD); |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5252 } |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5253 |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5254 static void |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5255 suggest_asking_for_help () |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5256 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5257 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
|
5258 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
|
5259 #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
|
5260 "--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
|
5261 #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
|
5262 "-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
|
5263 #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
|
5264 ); |
13696
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5265 exit (BAD); |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5266 } |
f89aa5a5c485
* etags.c (Cplusplus_suffixes): Add .M suffix for Objective C++.
Francesco Potortì <pot@gnu.org>
parents:
13404
diff
changeset
|
5267 |
240 | 5268 /* 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
|
5269 static void |
240 | 5270 error (s1, s2) |
27595
25ed45af9355
2000-01-31 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26507
diff
changeset
|
5271 const char *s1, *s2; |
240 | 5272 { |
5273 fprintf (stderr, "%s: ", progname); | |
5274 fprintf (stderr, s1, s2); | |
5275 fprintf (stderr, "\n"); | |
5276 } | |
5277 | |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5278 /* Return a newly-allocated string whose contents |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5279 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
|
5280 static char * |
240 | 5281 concat (s1, s2, s3) |
5282 char *s1, *s2, *s3; | |
5283 { | |
5284 int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3); | |
5285 char *result = xnew (len1 + len2 + len3 + 1, char); | |
5286 | |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5287 strcpy (result, s1); |
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5288 strcpy (result + len1, s2); |
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5289 strcpy (result + len1 + len2, s3); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5290 result[len1 + len2 + len3] = '\0'; |
240 | 5291 |
5292 return result; | |
5293 } | |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5294 |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5295 /* 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
|
5296 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
|
5297 static char * |
7227
6fa038c33a0f
[MSDOS]: #include <sys/param.h> for the following.
Richard M. Stallman <rms@gnu.org>
parents:
7049
diff
changeset
|
5298 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
|
5299 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5300 #ifdef HAVE_GETCWD |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5301 int bufsize = 200; |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5302 char *path = xnew (bufsize, char); |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5303 |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5304 while (getcwd (path, bufsize) == NULL) |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5305 { |
9975
e21b0674f37c
* etags.c (<errno.h>): #include added.
Francesco Potortì <pot@gnu.org>
parents:
9773
diff
changeset
|
5306 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
|
5307 pfatal ("getcwd"); |
9975
e21b0674f37c
* etags.c (<errno.h>): #include added.
Francesco Potortì <pot@gnu.org>
parents:
9773
diff
changeset
|
5308 bufsize *= 2; |
17778
c3ff4c535c9c
* etags.c: (Cplusplus_suffixes): .pdb is Postscript with C syntax.
Francesco Potortì <pot@gnu.org>
parents:
17602
diff
changeset
|
5309 free (path); |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5310 path = xnew (bufsize, char); |
8789
81a2817b99b2
(etags_getcwd): Use getcwd if available.
Karl Heuer <kwzh@gnu.org>
parents:
8180
diff
changeset
|
5311 } |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5312 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5313 canonicalize_filename (path); |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5314 return path; |
16394
675944d1abc9
(etags_getcwd) [WINDOWSNT]: Convert backslashes to slashes.
Richard M. Stallman <rms@gnu.org>
parents:
16373
diff
changeset
|
5315 |
16086
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5316 #else /* not HAVE_GETCWD */ |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5317 #ifdef MSDOS |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5318 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
|
5319 |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5320 getwd (path); |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5321 |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5322 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
|
5323 if (*p == '\\') |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5324 *p = '/'; |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5325 else |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5326 *p = lowcase (*p); |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5327 |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5328 return strdup (path); |
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5329 #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
|
5330 linebuffer path; |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5331 FILE *pipe; |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5332 |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5333 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
|
5334 pipe = (FILE *) popen ("pwd 2>/dev/null", "r"); |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5335 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
|
5336 pfatal ("pwd"); |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5337 pclose (pipe); |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5338 |
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5339 return path.buffer; |
16086
33519c691e63
(etags_getcwd): Use getcwd if available even if MSDOS.
Richard M. Stallman <rms@gnu.org>
parents:
15772
diff
changeset
|
5340 #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
|
5341 #endif /* not HAVE_GETCWD */ |
10378
fb23ac6e6199
* etags.c (pfatal): New function.
Francesco Potortì <pot@gnu.org>
parents:
10376
diff
changeset
|
5342 } |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5343 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5344 /* 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
|
5345 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
|
5346 static char * |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5347 relative_filename (file, dir) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5348 char *file, *dir; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5349 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5350 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
|
5351 int i; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5352 |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
5353 /* 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
|
5354 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
|
5355 fp = afn; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5356 dp = dir; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5357 while (*fp++ == *dp++) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5358 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
|
5359 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
|
5360 #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
|
5361 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
|
5362 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
|
5363 #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
|
5364 do /* look at the equal chars until '/' */ |
16540
bf7e776e40f6
* etags.c (relative_filename): Bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
16394
diff
changeset
|
5365 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
|
5366 while (*fp != '/'); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5367 |
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 /* 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
|
5369 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
|
5370 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
|
5371 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
|
5372 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
|
5373 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
|
5374 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
|
5375 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
|
5376 |
1b5cc3740793
Tue Apr 15 16:09:15 1997 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
17168
diff
changeset
|
5377 /* 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
|
5378 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
|
5379 free (afn); |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
5380 |
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
5381 return res; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5382 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5383 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5384 /* 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
|
5385 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
|
5386 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
|
5387 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
|
5388 char *file, *dir; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5389 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5390 char *slashp, *cp, *res; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5391 |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5392 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
|
5393 res = savestr (file); |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5394 #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
|
5395 /* 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
|
5396 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
|
5397 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
|
5398 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
|
5399 #endif |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5400 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
|
5401 res = concat (dir, file, ""); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5402 |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5403 /* Delete the "/dirname/.." and "/." substrings. */ |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5404 slashp = etags_strchr (res, '/'); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5405 while (slashp != NULL && slashp[0] != '\0') |
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 if (slashp[1] == '.') |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5408 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5409 if (slashp[2] == '.' |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5410 && (slashp[3] == '/' || slashp[3] == '\0')) |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5411 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5412 cp = slashp; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5413 do |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5414 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
|
5415 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
|
5416 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
|
5417 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
|
5418 #ifdef DOS_NT |
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5419 /* 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
|
5420 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
|
5421 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
|
5422 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
|
5423 cp = slashp; |
14920
b909bb3e64c9
(absolutefn) [DOS_NT]: Support Novell drives whose drive
Richard M. Stallman <rms@gnu.org>
parents:
14859
diff
changeset
|
5424 #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
|
5425 strcpy (cp, slashp + 3); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5426 slashp = cp; |
7776
f91e2cf8770b
* etags.c (absolute_filename): Remove infinite loop bug when
Francesco Potortì <pot@gnu.org>
parents:
7775
diff
changeset
|
5427 continue; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5428 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5429 else if (slashp[2] == '/' || slashp[2] == '\0') |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5430 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5431 strcpy (slashp, slashp + 2); |
7776
f91e2cf8770b
* etags.c (absolute_filename): Remove infinite loop bug when
Francesco Potortì <pot@gnu.org>
parents:
7775
diff
changeset
|
5432 continue; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5433 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5434 } |
7776
f91e2cf8770b
* etags.c (absolute_filename): Remove infinite loop bug when
Francesco Potortì <pot@gnu.org>
parents:
7775
diff
changeset
|
5435 |
f91e2cf8770b
* etags.c (absolute_filename): Remove infinite loop bug when
Francesco Potortì <pot@gnu.org>
parents:
7775
diff
changeset
|
5436 slashp = etags_strchr (slashp + 1, '/'); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5437 } |
24140
9e4d1d3eab09
(etags_getcwd, absolute_filename) [DOS_NT]: Canonicalize
Geoff Voelker <voelker@cs.washington.edu>
parents:
24059
diff
changeset
|
5438 |
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
|
5439 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
|
5440 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
|
5441 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
|
5442 return res; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5443 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5444 |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5445 /* 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
|
5446 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
|
5447 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
|
5448 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
|
5449 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
|
5450 char *file, *dir; |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5451 { |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5452 char *slashp, *res; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5453 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
|
5454 |
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 (file); |
6592
9a76406c9f98
* etags.c (main): use etags_getcwd for compatibility.
Francesco Potortì <pot@gnu.org>
parents:
6530
diff
changeset
|
5456 slashp = etags_strrchr (file, '/'); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5457 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
|
5458 return savestr (dir); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5459 save = slashp[1]; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5460 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
|
5461 res = absolute_filename (file, dir); |
6482
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5462 slashp[1] = save; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5463 |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5464 return res; |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5465 } |
91112dd5c9f5
* etags.c (cwd, outfiledir): vars added.
Francesco Potortì <pot@gnu.org>
parents:
5976
diff
changeset
|
5466 |
26262
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 /* 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
|
5468 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
|
5469 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
|
5470 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
|
5471 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
|
5472 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5473 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
|
5474 #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
|
5475 || (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
|
5476 #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
|
5477 ); |
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 } |
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 |
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 /* 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
|
5481 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
|
5482 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
|
5483 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
|
5484 { |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5485 #ifdef DOS_NT |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
5486 /* Canonicalize drive letter case. */ |
30969
1ccc2bce4062
(canonicalize_filename) [DOS_NT]: Upcase the first
Eli Zaretskii <eliz@gnu.org>
parents:
30231
diff
changeset
|
5487 if (fn[0] && fn[1] == ':' && islower (fn[0])) |
26507
aabdfbf65c68
1999-11-19 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
26340
diff
changeset
|
5488 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
|
5489 /* 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
|
5490 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
|
5491 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
|
5492 *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
|
5493 #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
|
5494 /* 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
|
5495 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
|
5496 #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
|
5497 } |
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5498 |
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
|
5499 /* 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
|
5500 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
|
5501 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
|
5502 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
|
5503 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
|
5504 { |
26262
c416a18b0a5d
Checked in at last a lot of improvementes and bug fixes. The oldest dating
Francesco Potortì <pot@gnu.org>
parents:
26083
diff
changeset
|
5505 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
|
5506 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
|
5507 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
|
5508 } |
4ed8667d6bd9
Wed Nov 13 17:51:29 1996 Francesco Potorti` <F.Potorti@cnuce.cnr.it>
Francesco Potortì <pot@gnu.org>
parents:
16540
diff
changeset
|
5509 |
240 | 5510 /* Like malloc but get fatal error if memory is exhausted. */ |
30231
5b3608e3adaf
(xmalloc, xrealloc): Make externally visible, for use
Gerd Moellmann <gerd@gnu.org>
parents:
28663
diff
changeset
|
5511 long * |
240 | 5512 xmalloc (size) |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
5513 unsigned int size; |
240 | 5514 { |
11673
46d2178719ad
(C_entries): Cast result of xrealloc.
Richard M. Stallman <rms@gnu.org>
parents:
11231
diff
changeset
|
5515 long *result = (long *) malloc (size); |
5940
e663f6626075
* etags.c (absolute_pathnames, cwd): added global vars.
Francesco Potortì <pot@gnu.org>
parents:
5580
diff
changeset
|
5516 if (result == NULL) |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
5517 fatal ("virtual memory exhausted", (char *)NULL); |
240 | 5518 return result; |
5519 } | |
5520 | |
30231
5b3608e3adaf
(xmalloc, xrealloc): Make externally visible, for use
Gerd Moellmann <gerd@gnu.org>
parents:
28663
diff
changeset
|
5521 long * |
240 | 5522 xrealloc (ptr, size) |
5523 char *ptr; | |
5580
517d8eb361f8
* etags.c (stab_entry, stab_create, stab_find, stab_search,
Francesco Potortì <pot@gnu.org>
parents:
5448
diff
changeset
|
5524 unsigned int size; |
240 | 5525 { |
12879
3b90cbba7dad
* etags.c (Pascal_functions): Close comment bug corrected.
Francesco Potortì <pot@gnu.org>
parents:
12398
diff
changeset
|
5526 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
|
5527 if (result == NULL) |
16607
16b8d910795f
* etags.c (C_entries): Test tok.valid. This handles some
Francesco Potortì <pot@gnu.org>
parents:
16573
diff
changeset
|
5528 fatal ("virtual memory exhausted", (char *)NULL); |
240 | 5529 return result; |
5530 } |