Output that goes through printf_filtered
or fputs_filtered
or
fputs_demangled
needs only to have calls to wrap_here
added
in places that would be good breaking points. The utility routines
will take care of actually wrapping if the line width is exceeded.
The argument to wrap_here
is an indentation string which is printed
only if the line breaks there. This argument is saved away and used
later. It must remain valid until the next call to wrap_here
or
until a newline has been printed through the *_filtered
functions.
Don't pass in a local variable and then return!
It is usually best to call wrap_here()
after printing a comma or space.
If you call it before printing a space, make sure that your indentation
properly accounts for the leading space that will print if the line wraps
there.
Any function or set of functions that produce filtered output must finish
by printing a newline, to flush the wrap buffer, before switching to
unfiltered ("printf
") output. Symbol reading routines that print
warnings are a good example.