tool for listing C functions used in source code?
Josh Ōckert
torstenvl at gmail.com
Fri Aug 20 18:50:05 PDT 2004
On Fri, 20 Aug 2004 21:43:52 -0400, Josh Ōckert <torstenvl at gmail.com> wrote:
>
>
> On Fri, 20 Aug 2004 16:41:29 -0700 (PDT), Jeremy C. Reed
> <reed at reedmedia.net> wrote:
> > What are some good tools for searching source code that can list all the
> > standard libc functions used?
> >
> > For example, I'd like to point it at some code and have it tell me that it
> > uses:
> >
> > strftime 1 time
> > isatty 1
> > setlocale 1
> > getuid 1
> > getbsize 5
> > strlen 25
> > et cetera
> >
> > Then I could see what the most used functions are for some research I am
> > doing.
> >
> > Does anyone know of a tool that can do that?
> >
> > I am testing cscope, but it doesn't appear to behave like I want. I do
> > like how it looks at the includes though. I don't want it to be
> > interactive. I just want a list of all functions used. I can use sort and
> > uniq to count if needed.
> >
> > Next I'll look at cflow. But I am not sure if does what I want either.
> >
> > Jeremy C. Reed
> >
> > BSD News, BSD tutorials, BSD links
> > http://www.bsdnewsletter.com/
> >
> > _______________________________________________
> > freebsd-chat at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-chat
> > To unsubscribe, send any mail to "freebsd-chat-unsubscribe at freebsd.org"
> >
>
> I would try something like....
>
> for i in `ls /usr/share/man/man3/ | sed -e '/\\\..*$/d'`; do echo $i;
> grep -c $i filename.c; done
>
> in BASH
>
> That's untested, but try it. If you don't understand it, try
> man sed
> man grep
>
PS -- If you think you might use the same function more than once on a
single line, you might want to replace all tokens that can separate
two function calls with newlines and create a temporary file and then
search that instead... I'm not sure if grep counts a line that matches
twice as one match or two matches. Also, if you want only, say,
ISO/ANSI C standard library functions to be counted, you'll have to
provide your own list and use that instead of the listing of
/usr/share/man/man3
More information about the freebsd-chat
mailing list