Hi Kaspars, Kaspars Bankovskis wrote on Sat, Dec 06, 2014 at 11:00:35PM +0200:
> I'm proposing the following changes to stdarg(3). > Moved description of return values to its own section + macro cleanup. Committed, thanks. Ingo > Index: stdarg.3 > =================================================================== > RCS file: /cvs/src/share/man/man3/stdarg.3,v > retrieving revision 1.18 > diff -u -p -r1.18 stdarg.3 > --- stdarg.3 30 Nov 2014 21:21:59 -0000 1.18 > +++ stdarg.3 6 Dec 2014 20:43:31 -0000 > @@ -57,15 +57,15 @@ > A function may be called with a varying number of arguments of varying > types. > The include file > -.Aq Pa stdarg.h > +.In stdarg.h > declares a type > -.Pq Li va_list > +.Vt va_list > and defines three macros for stepping > through a list of arguments whose number and types are not known to > the called function. > .Pp > The called function must declare an object of type > -.Li va_list > +.Vt va_list > which is used by the macros > .Fn va_start , > .Fn va_arg , > @@ -95,17 +95,13 @@ macro, it should not be declared as a re > function, nor an array type. > .Pp > The > -.Fn va_start > -macro returns no value. > -.Pp > -The > .Fn va_arg > macro expands to an expression that has the type and value of the next > argument in the call. > The parameter > .Fa ap > is the > -.Li va_list Fa ap > +.Va va_list ap > initialized by > .Fn va_start . > Each call to > @@ -134,33 +130,24 @@ promoted type should be used as the argu > The following describes which types should be promoted (and to what): > .Bl -dash -compact > .It > -.Va short > +.Vt short > is promoted to > -.Va int > +.Vt int > .It > -.Va float > +.Vt float > is promoted to > -.Va double > +.Vt double > .It > -.Va char > +.Vt char > is promoted to > -.Va int > +.Vt int > .El > .Pp > The same rules apply to unsigned versions of the above types, as well > as their bit-type equivalents (e.g.\& > -.Dv int8_t > +.Vt int8_t > and > -.Dv int16_t ) . > -.Pp > -The first use of the > -.Fn va_arg > -macro after that of the > -.Fn va_start > -macro returns the argument after > -.Fa last . > -Successive invocations return the values of the remaining > -arguments. > +.Vt int16_t ) . > .Pp > The > .Fn va_copy > @@ -176,20 +163,28 @@ macro as had previously been used to rea > .Fa src . > .Pp > The > -.Fn va_copy > -macro returns no value. > -.Pp > -The > .Fn va_end > macro handles a normal return from the function whose variable argument > list was initialized by > .Fn va_start > or > .Fn va_copy . > +.Sh RETURN VALUES > +The first use of the > +.Fn va_arg > +macro after that of the > +.Fn va_start > +macro returns the argument after > +.Fa last . > +Successive invocations return the values of the remaining > +arguments. > .Pp > The > +.Fn va_start , > +.Fn va_copy > +and > .Fn va_end > -macro returns no value. > +macros return no value. > .Sh EXAMPLES > The function > .Fn foo > @@ -232,7 +227,7 @@ These macros are > compatible with the historic macros they replace. > A backward compatible version can be found in the include > file > -.Aq Pa varargs.h . > +.In varargs.h . > .Pp > The > .Fn va_start , > @@ -248,7 +243,7 @@ The > and > .Fn va_end > macros were introduced in > -.St -ansiC-89 . > +.St -ansiC . > The > .Fn va_copy > macro was introduced in > @@ -267,7 +262,7 @@ code to > code, > but it also creates difficulties for variadic functions that > wish to pass all of their arguments on to a function > -that takes a > -.Li va_list > -argument, such as > +that takes an argument of type > +.Vt va_list , > +such as > .Xr vfprintf 3 .