GNU Info

Info Node: (libc.info)Registering New Conversions

(libc.info)Registering New Conversions


Next: Conversion Specifier Options Up: Customizing Printf
Enter node , (file) or (file)node

Registering New Conversions
---------------------------

   The function to register a new output conversion is
`register_printf_function', declared in `printf.h'.

 - Function: int register_printf_function (int SPEC, printf_function
          HANDLER-FUNCTION, printf_arginfo_function ARGINFO-FUNCTION)
     This function defines the conversion specifier character SPEC.
     Thus, if SPEC is `'Y'', it defines the conversion `%Y'.  You can
     redefine the built-in conversions like `%s', but flag characters
     like `#' and type modifiers like `l' can never be used as
     conversions; calling `register_printf_function' for those
     characters has no effect.  It is advisable not to use lowercase
     letters, since the ISO C standard warns that additional lowercase
     letters may be standardized in future editions of the standard.

     The HANDLER-FUNCTION is the function called by `printf' and
     friends when this conversion appears in a template string.  Note:
     Defining the Output Handler, for information about how to define
     a function to pass as this argument.  If you specify a null
     pointer, any existing handler function for SPEC is removed.

     The ARGINFO-FUNCTION is the function called by
     `parse_printf_format' when this conversion appears in a template
     string.  Note: Parsing a Template String, for information about
     this.

     *Attention:* In the GNU C library versions before 2.0 the
     ARGINFO-FUNCTION function did not need to be installed unless the
     user used the `parse_printf_format' function.  This has changed.
     Now a call to any of the `printf' functions will call this
     function when this format specifier appears in the format string.

     The return value is `0' on success, and `-1' on failure (which
     occurs if SPEC is out of range).

     You can redefine the standard output conversions, but this is
     probably not a good idea because of the potential for confusion.
     Library routines written by other people could break if you do
     this.


automatically generated by info2www version 1.2.2.9