Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Jun 2006 09:15:39 -0700
From:      Rich Morin <rdm@cfcl.com>
To:        freebsd-doc@freebsd.org
Subject:   checking man page includes and prototypes?
Message-ID:  <p062309d5c0b5e6114077@[192.168.254.205]>

next in thread | raw e-mail | index | archive | help
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@cfcl.com
http://www.cfcl.com/rdm/weblog     +1 650-873-7841

Technical editing and writing, programming, and web development



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?p062309d5c0b5e6114077>