Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site fortune.UUCP Path: utzoo!linus!decvax!harpo!eagle!mhuxl!ihnp4!fortune!olson From: olson@fortune.UUCP Newsgroups: net.unix-wizards Subject: Re: C cross referencer request - (nf) Message-ID: <2069@fortune.UUCP> Date: Tue, 20-Dec-83 23:07:02 EST Article-I.D.: fortune.2069 Posted: Tue Dec 20 23:07:02 1983 Date-Received: Thu, 22-Dec-83 01:12:10 EST Sender: notes@fortune.UUCP Organization: Fortune Systems, Redwood City, CA Lines: 78 #R:sri-arpa:-1461300:fortune:11600035:000:2588 fortune!olson Dec 20 19:22:00 1983 I have written a function cross-referencer for C which works fairly well. If you are interested, send me mail. If there is enough interest, I will post it to net.sources. The man page follows. -=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -=- -=- crossref(local) UNIX Programmer's Manual crossref(local) NAME crossref - make a function cross reference listing for C programs SYNOPSIS crossref [-o file] [file ...] DESCRIPTION crossref produces a function cross reference for C programs. The -o option specifies output to the given file, otherwise output goes to stdout. 0 or more filenames may be given, files that can't be read are skipped, and processing contin- ues with the next file. If no files are given crossref reads the standard input. crossref requires that function declarations start in column 1. Macro functions are also handled. Functions declared as type function_name(params) or type function_name(params) are both recognized (where 'type' may be null). White space is allowed between the name and the '('. SAMPLE OUTPUT ASSERT() /lpr/malloc.c, 140, 211, 212, 217, 226, 228, 260, 269, 289, 290, 293, 317, 404 /lpr/lprint.c, 110, 115 ASSERT(p):#define /lpr/malloc.c, 125, 136 creat() /lpr/malloc.c, 57 free() /lpr/malloc.c, 320 free(ap):[int] /lpr/malloc.c, 283 malloc() /lpr/malloc.c, 322 malloc(nbytes):unsigned char * /lpr/malloc.c, 195 /lpr/malloc.c, 120 Note that the line showing the declaration of a function follows the list of files where it is referenced. The func- tion name on the declaration line is followed by a ':', and it's declared type. If no type is declared, it is impli- citly declared as 'int', and marked with ':[int]'. Functions referenced many times have the line # listing split at column 80, and indented 2 spaces (shown shorter here so it fits on the man page). If the function is refer- enced in more than one file, each file starts on a new line. Functions that have no declaration are presumably declared Printed 12/20/83 Fortune 1 crossref(local) UNIX Programmer's Manual crossref(local) in another file, or are library routines. AUTHOR Dave Olson, loosely based on an example in the book 'The Unix System' by S. Bourne.