manual: clarify that scanf %n supports type modifiers
authorAlyssa Ross <hi@alyssa.is>
Mon, 29 Mar 2021 11:45:04 +0000 (11:45 +0000)
committerArjun Shankar <arjun@redhat.com>
Tue, 30 Mar 2021 18:40:39 +0000 (20:40 +0200)
My initial reading of the %n documentation was that it didn't support
type conversions, because it only mentioned int*.

Corresponding man-pages patch:
https://lore.kernel.org/linux-man/20210328215509.31666-1-hi@alyssa.is/

Reviewed-by: Arjun Shankar <arjun@redhat.com>
manual/stdio.texi

index c48e3e6..6ff1806 100644 (file)
@@ -3620,10 +3620,10 @@ function (@pxref{Parsing of Integers}) with the appropriate value
 The @samp{%X} conversion is identical to the @samp{%x} conversion.  They
 both permit either uppercase or lowercase letters to be used as digits.
 
-The default type of the corresponding argument for the @code{%d} and
-@code{%i} conversions is @code{int *}, and @code{unsigned int *} for the
-other integer conversions.  You can use the following type modifiers to
-specify other sizes of integer:
+The default type of the corresponding argument for the @code{%d},
+@code{%i}, and @code{%n} conversions is @code{int *}, and
+@code{unsigned int *} for the other integer conversions.  You can use
+the following type modifiers to specify other sizes of integer:
 
 @table @samp
 @item hh
@@ -3888,7 +3888,8 @@ The resulting pointer value is not guaranteed to be valid if it was not
 originally written during the same program execution that reads it in.
 
 The @samp{%n} conversion produces the number of characters read so far
-by this call.  The corresponding argument should be of type @code{int *}.
+by this call.  The corresponding argument should be of type @code{int *},
+unless a type modifier is in effect (@pxref{Numeric Input Conversions}).
 This conversion works in the same way as the @samp{%n} conversion for
 @code{printf}; see @ref{Other Output Conversions}, for an example.