Deleted Added
full compact
print.c (87249) print.c (87628)
1/*
2 * Copyright (c) 1987, 1993, 1994
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
1/*
2 * Copyright (c) 1987, 1993, 1994
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34#include <sys/cdefs.h>
35
36__FBSDID("$FreeBSD: head/usr.bin/ctags/print.c 87249 2001-12-03 00:07:59Z markm $");
37
34#if 0
38#ifndef lint
35#ifndef lint
39static const char sccsid[] = "@(#)print.c 8.3 (Berkeley) 4/2/94";
36static char sccsid[] = "@(#)print.c 8.3 (Berkeley) 4/2/94";
40#endif
37#endif
38#endif
41
39
40#include <sys/cdefs.h>
41__FBSDID("$FreeBSD: head/usr.bin/ctags/print.c 87628 2001-12-10 21:13:08Z dwmalone $");
42
42#include <limits.h>
43#include <stdio.h>
44#include <stdlib.h>
45#include <string.h>
46#include <unistd.h>
47
48#include "ctags.h"
49
50/*
51 * getline --
52 * get the line the token of interest occurred on,
53 * prepare it for printing.
54 */
55void
56getline()
57{
58 long saveftell;
59 int c;
60 int cnt;
61 char *cp;
62
63 saveftell = ftell(inf);
64 (void)fseek(inf, lineftell, L_SET);
65 if (xflag)
66 for (cp = lbuf; GETC(!=, EOF) && c != '\n'; *cp++ = c)
67 continue;
68 /*
69 * do all processing here, so we don't step through the
70 * line more than once; means you don't call this routine
71 * unless you're sure you've got a keeper.
72 */
73 else for (cnt = 0, cp = lbuf; GETC(!=, EOF) && cnt < ENDLINE; ++cnt) {
74 if (c == '\\') { /* backslashes */
75 if (cnt > ENDLINE - 2)
76 break;
77 *cp++ = '\\'; *cp++ = '\\';
78 ++cnt;
79 }
80 else if (c == (int)searchar) { /* search character */
81 if (cnt > ENDLINE - 2)
82 break;
83 *cp++ = '\\'; *cp++ = c;
84 ++cnt;
85 }
86 else if (c == '\n') { /* end of keep */
87 *cp++ = '$'; /* can find whole line */
88 break;
89 }
90 else
91 *cp++ = c;
92 }
93 *cp = EOS;
94 (void)fseek(inf, saveftell, L_SET);
95}
96
97/*
98 * put_entries --
99 * write out the tags
100 */
101void
102put_entries(node)
103 NODE *node;
104{
105
106 if (node->left)
107 put_entries(node->left);
108 if (vflag)
109 printf("%s %s %d\n",
110 node->entry, node->file, (node->lno + 63) / 64);
111 else if (xflag)
112 printf("%-16s %4d %-16s %s\n",
113 node->entry, node->lno, node->file, node->pat);
114 else
115 fprintf(outf, "%s\t%s\t%c^%s%c\n",
116 node->entry, node->file, searchar, node->pat, searchar);
117 if (node->right)
118 put_entries(node->right);
119}
43#include <limits.h>
44#include <stdio.h>
45#include <stdlib.h>
46#include <string.h>
47#include <unistd.h>
48
49#include "ctags.h"
50
51/*
52 * getline --
53 * get the line the token of interest occurred on,
54 * prepare it for printing.
55 */
56void
57getline()
58{
59 long saveftell;
60 int c;
61 int cnt;
62 char *cp;
63
64 saveftell = ftell(inf);
65 (void)fseek(inf, lineftell, L_SET);
66 if (xflag)
67 for (cp = lbuf; GETC(!=, EOF) && c != '\n'; *cp++ = c)
68 continue;
69 /*
70 * do all processing here, so we don't step through the
71 * line more than once; means you don't call this routine
72 * unless you're sure you've got a keeper.
73 */
74 else for (cnt = 0, cp = lbuf; GETC(!=, EOF) && cnt < ENDLINE; ++cnt) {
75 if (c == '\\') { /* backslashes */
76 if (cnt > ENDLINE - 2)
77 break;
78 *cp++ = '\\'; *cp++ = '\\';
79 ++cnt;
80 }
81 else if (c == (int)searchar) { /* search character */
82 if (cnt > ENDLINE - 2)
83 break;
84 *cp++ = '\\'; *cp++ = c;
85 ++cnt;
86 }
87 else if (c == '\n') { /* end of keep */
88 *cp++ = '$'; /* can find whole line */
89 break;
90 }
91 else
92 *cp++ = c;
93 }
94 *cp = EOS;
95 (void)fseek(inf, saveftell, L_SET);
96}
97
98/*
99 * put_entries --
100 * write out the tags
101 */
102void
103put_entries(node)
104 NODE *node;
105{
106
107 if (node->left)
108 put_entries(node->left);
109 if (vflag)
110 printf("%s %s %d\n",
111 node->entry, node->file, (node->lno + 63) / 64);
112 else if (xflag)
113 printf("%-16s %4d %-16s %s\n",
114 node->entry, node->lno, node->file, node->pat);
115 else
116 fprintf(outf, "%s\t%s\t%c^%s%c\n",
117 node->entry, node->file, searchar, node->pat, searchar);
118 if (node->right)
119 put_entries(node->right);
120}