(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