checking man page includes and prototypes?
Rich Morin
rdm at cfcl.com
Wed Jun 14 16:14:12 UTC 2006
I'm doing a lot of editing of section 2 and 3 man pages,
concentrating on the includes and prototypes. Although
I'm trying to be careful, it's quite likely that some
errors will slip past me. So, I'm casting about for a
way to do an automated sanity check. Here's one idea:
For each man page
For each prototype
Construct a C test file.
Compile the test file.
Look for nastygrams, etc.
For example, the sysconf(3) SYNOPSIS contains the lines:
#include <unistd.h>
long
sysconf(int name);
I can turn this into the file test.c:
#include <unistd.h>
main() {
int name;
sysconf(name);
}
Compiling this (e.g., "cc test.c") finishes silently.
So far, so good...
Editing "sysconf" into "sysconfx" produces a promising
nastygram:
/usr/bin/ld: Undefined symbols:
_sysconfx
collect2: ld returned 1 exit status
However, editing "int name;" into "float name;' does
NOT cause a nastygram. So, it appears that prototype
checking is not being done. The gcc(1) man page gave
me the idea of trying
gcc -pedantic -ansi test.c
but this didn't make any visible difference. I see a
bazillion other options, including a bunch of "-W..."
goodies, but I'd rather not try them all at random. I
tried "gcc -pedantic -ansi -Wstrict-prototypes test.c",
but it only complained about my "main" statement (?):
test.c:3: warning: function declaration isn't a prototype
Any suggestions (general or specific) on how I might be
able to cajole gcc (or whatever) into helping me?
-r
P.S. The "obvious" strategy of inspecting the header file(s)
breaks down under closer examination. The declaration
may be located in an include file which is referenced
indirectly, #defines or #ifdefs may be involved, etc.
So, for a general, automated solution, I'd like to rely
on the compiler (etc) to tell me whether the usage is
complete and correct.
--
http://www.cfcl.com/rdm Rich Morin
http://www.cfcl.com/rdm/resume rdm at cfcl.com
http://www.cfcl.com/rdm/weblog +1 650-873-7841
Technical editing and writing, programming, and web development
More information about the freebsd-doc
mailing list