Go to the first, previous, next, last section, table of contents.


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. See section 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. See section 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.


Go to the first, previous, next, last section, table of contents.