docs/72375: prototype error in signal(3)

Joseph Koshy joseph.koshy at gmail.com
Wed Oct 6 14:20:07 UTC 2004


The following reply was made to PR docs/72375; it has been noted by GNATS.

From: Joseph Koshy <joseph.koshy at gmail.com>
To: Giorgos Keramidas <keramida at ceid.upatras.gr>
Cc: bug-followup at freebsd.org
Subject: Re: docs/72375: prototype error in signal(3)
Date: Wed, 6 Oct 2004 14:18:10 +0000

 > Err, please no.  The type of the return value of signal() is not really
 > `void (*)' but something more like:
 > 
 >         void (*)(int)
 
 Yes, my bad.  Please ignore the previous misguided patch.
 
 > But this is not so easy to separate from the name of the signal()
 > function without a typedef; at least not without breaking the validity
 > of the C declaration, which is a bad thing since then manpage readers
 > cannot copy/paste the prototype of signal() from its manpage.
 
 Well the visual ugliness in the current manual page arises from the 
 fact that the .Ft macro forces a line break after its idea of the 
 "type" of the function.
 
 Using .Xo/.Xc suppresses this, and puts the whole declaration on
 one line.
 
 I don't know how to suppress the inter-argument spaces inserted by
 ".Ft".  There is probably still scope for improvement of the patch
 below.
 
 Index: signal.3
 ===================================================================
 RCS file: /cvs/FreeBSD/src/lib/libc/gen/signal.3,v
 retrieving revision 1.38
 diff -u -u -r1.38 signal.3
 --- signal.3    3 Jul 2004 22:30:08 -0000       1.38
 +++ signal.3    6 Oct 2004 19:49:41 -0000
 @@ -45,8 +45,9 @@
  .\" The following is Quite Ugly, but syntactically correct.
  .\" Don't try to
  .\" fix it.
 -.Ft void \*(lp*
 +.Ft void \*(lp* Ns Xo
  .Fn signal "int sig" "void \*(lp*func\*(rp\*(lpint\*(rp\*(rp\*(rp\*(lpint"
 +.Xc
  .Pp
  or in
  .Fx Ns 's



More information about the freebsd-doc mailing list