(libc.info.gz) Conversion Specifier Options

Info Catalog (libc.info.gz) Registering New Conversions (libc.info.gz) Customizing Printf (libc.info.gz) Defining the Output Handler
 
 12.13.2 Conversion Specifier Options
 ------------------------------------
 
 If you define a meaning for `%A', what if the template contains `%+23A'
 or `%-#A'?  To implement a sensible meaning for these, the handler when
 called needs to be able to get the options specified in the template.
 
    Both the HANDLER-FUNCTION and ARGINFO-FUNCTION accept an argument
 that points to a `struct printf_info', which contains information about
 the options appearing in an instance of the conversion specifier.  This
 data type is declared in the header file `printf.h'.  
 
  -- Type: struct printf_info
      This structure is used to pass information about the options
      appearing in an instance of a conversion specifier in a `printf'
      template string to the handler and arginfo functions for that
      specifier.  It contains the following members:
 
     `int prec'
           This is the precision specified.  The value is `-1' if no
           precision was specified.  If the precision was given as `*',
           the `printf_info' structure passed to the handler function
           contains the actual value retrieved from the argument list.
           But the structure passed to the arginfo function contains a
           value of `INT_MIN', since the actual value is not known.
 
     `int width'
           This is the minimum field width specified.  The value is `0'
           if no width was specified.  If the field width was given as
           `*', the `printf_info' structure passed to the handler
           function contains the actual value retrieved from the
           argument list.  But the structure passed to the arginfo
           function contains a value of `INT_MIN', since the actual
           value is not known.
 
     `wchar_t spec'
           This is the conversion specifier character specified.  It's
           stored in the structure so that you can register the same
           handler function for multiple characters, but still have a
           way to tell them apart when the handler function is called.
 
     `unsigned int is_long_double'
           This is a boolean that is true if the `L', `ll', or `q' type
           modifier was specified.  For integer conversions, this
           indicates `long long int', as opposed to `long double' for
           floating point conversions.
 
     `unsigned int is_char'
           This is a boolean that is true if the `hh' type modifier was
           specified.
 
     `unsigned int is_short'
           This is a boolean that is true if the `h' type modifier was
           specified.
 
     `unsigned int is_long'
           This is a boolean that is true if the `l' type modifier was
           specified.
 
     `unsigned int alt'
           This is a boolean that is true if the `#' flag was specified.
 
     `unsigned int space'
           This is a boolean that is true if the ` ' flag was specified.
 
     `unsigned int left'
           This is a boolean that is true if the `-' flag was specified.
 
     `unsigned int showsign'
           This is a boolean that is true if the `+' flag was specified.
 
     `unsigned int group'
           This is a boolean that is true if the `'' flag was specified.
 
     `unsigned int extra'
           This flag has a special meaning depending on the context.  It
           could be used freely by the user-defined handlers but when
           called from the `printf' function this variable always
           contains the value `0'.
 
     `unsigned int wide'
           This flag is set if the stream is wide oriented.
 
     `wchar_t pad'
           This is the character to use for padding the output to the
           minimum field width.  The value is `'0'' if the `0' flag was
           specified, and `' '' otherwise.
 
Info Catalog (libc.info.gz) Registering New Conversions (libc.info.gz) Customizing Printf (libc.info.gz) Defining the Output Handler
automatically generated by info2html