From 52461c587563822939b238379bb1d72975e80b62 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 14 Apr 1998 16:03:45 +0000 Subject: New files --- doc/tools/src2html1.4a/Ctags/print.c | 130 +++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 doc/tools/src2html1.4a/Ctags/print.c (limited to 'doc/tools/src2html1.4a/Ctags/print.c') diff --git a/doc/tools/src2html1.4a/Ctags/print.c b/doc/tools/src2html1.4a/Ctags/print.c new file mode 100644 index 0000000000..1c1c545ab6 --- /dev/null +++ b/doc/tools/src2html1.4a/Ctags/print.c @@ -0,0 +1,130 @@ +/* + * Copyright (c) 1987 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +static char sccsid[] = "@(#)print.c 5.4 (Berkeley) 2/26/91"; +#endif /* not lint */ + +#include +#include +#include +#include +#include "ctags.h" + +extern char searchar; /* ex search character */ + +/* + * getline -- + * get the line the token of interest occurred on, + * prepare it for printing. + */ +getline() +{ + register long saveftell; + register int c, + cnt; + register char *cp; + + saveftell = ftell(inf); + (void)fseek(inf,lineftell,SEEK_SET); + if (xflag) + for (cp = lbuf;GETC(!=,'\n');*cp++ = c); + /* + * do all processing here, so we don't step through the + * line more than once; means you don't call this routine + * unless you're sure you've got a keeper. + */ + else for (cnt = 0,cp = lbuf;GETC(!=,EOF) && cnt < ENDLINE;++cnt) { + if (c == (int)'\\') { /* backslashes */ + if (cnt > ENDLINE - 2) + break; + *cp++ = '\\'; *cp++ = '\\'; + ++cnt; + } + else if (c == (int)searchar) { /* search character */ + if (cnt > ENDLINE - 2) + break; + *cp++ = '\\'; *cp++ = c; + ++cnt; + } + else if (c == (int)'\n') { /* end of keep */ + *cp++ = '$'; /* can find whole line */ + break; + } + else + *cp++ = c; + } + *cp = EOS; + (void)fseek(inf,saveftell,SEEK_SET); +} + +char *symtype[]= { + "Unknown", + "Preprocessor macro", + "Preprocessor define", + "C function", + "C variable", + "C struct", + "C union", + "C typedef", + "C enum" +}; + +/* + * put_entries -- + * write out the tags + */ +put_entries(node) + register NODE *node; +{ + extern FILE *outf; /* ioptr for tags file */ + extern int vflag; /* -v: vgrind style output */ + extern int yflag; /* -y: yet another style output */ + + if (node->left) + put_entries(node->left); + if (vflag) + printf("%s %s %d\n", + node->entry,node->file,(node->lno + 63) / 64); + else if (xflag) + printf("%-16s %4d %-16s %s\n", + node->entry,node->lno,node->file,node->pat); + else if (yflag) + printf("%-16s %4d %-16s %s\n", + node->entry,node->lno,node->file,symtype[node->symbtype]); + else + fprintf(outf,"%s\t%s\t%c^%s%c\n", + node->entry,node->file,searchar,node->pat,searchar); + if (node->right) + put_entries(node->right); +} -- cgit v1.2.3