Commit | Line | Data |
---|---|---|
86e31eca | 1 | /* |
ffa8a268 KB |
2 | * Copyright (c) 1987 The Regents of the University of California. |
3 | * All rights reserved. | |
4 | * | |
a3bb5b82 | 5 | * %sccs.include.redist.c% |
86e31eca KB |
6 | */ |
7 | ||
8 | #ifndef lint | |
a3bb5b82 | 9 | static char sccsid[] = "@(#)lisp.c 5.4 (Berkeley) %G%"; |
ffa8a268 | 10 | #endif /* not lint */ |
86e31eca KB |
11 | |
12 | #include <ctags.h> | |
38dde0cd | 13 | #include <string.h> |
86e31eca KB |
14 | |
15 | extern char *lbp; /* pointer shared with fortran */ | |
16 | ||
17 | /* | |
18 | * lisp tag functions | |
19 | * just look for (def or (DEF | |
20 | */ | |
21 | l_entries() | |
22 | { | |
23 | register int special; | |
24 | register char *cp, | |
25 | savedc; | |
26 | char tok[MAXTOKEN]; | |
27 | ||
28 | for (;;) { | |
29 | lineftell = ftell(inf); | |
30 | if (!fgets(lbuf,sizeof(lbuf),inf)) | |
31 | return; | |
32 | ++lineno; | |
33 | lbp = lbuf; | |
34 | if (!cicmp("(def")) | |
35 | continue; | |
36 | special = NO; | |
37 | switch(*lbp | ' ') { | |
38 | case 'm': | |
39 | if (cicmp("method")) | |
40 | special = YES; | |
41 | break; | |
42 | case 'w': | |
43 | if (cicmp("wrapper") || cicmp("whopper")) | |
44 | special = YES; | |
45 | } | |
46 | for (;!isspace(*lbp);++lbp); | |
47 | for (;isspace(*lbp);++lbp); | |
48 | for (cp = lbp;*cp && *cp != '\n';++cp); | |
49 | *cp = EOS; | |
50 | if (special) { | |
51 | if (!(cp = index(lbp,')'))) | |
52 | continue; | |
53 | for (;cp >= lbp && *cp != ':';--cp); | |
54 | if (cp < lbp) | |
55 | continue; | |
56 | lbp = cp; | |
57 | for (;*cp && *cp != ')' && *cp != ' ';++cp); | |
58 | } | |
59 | else | |
60 | for (cp = lbp + 1; | |
61 | *cp && *cp != '(' && *cp != ' ';++cp); | |
62 | savedc = *cp; | |
63 | *cp = EOS; | |
64 | (void)strcpy(tok,lbp); | |
65 | *cp = savedc; | |
66 | getline(); | |
67 | pfnote(tok,lineno); | |
68 | } | |
69 | /*NOTREACHED*/ | |
70 | } |