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.