Escape special/non-printing characters in debug output (RHBZ#731744).
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 18 Aug 2011 16:46:50 +0000 (17:46 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Sun, 28 Aug 2011 08:15:32 +0000 (09:15 +0100)
commit0b5e83cbe55ca61f2394244f75eebad03d4727e9
tree46a51be4ddbfe7ac9d8c196382ad11a417e05963
parent87b9c32c2afb7ea8c46e44753f7560c9b7ba20f7
Escape special/non-printing characters in debug output (RHBZ#731744).

The default event handler in libguestfs was simply writing all debug
output directly to stderr.  However if the output contains
non-printable characters such as terminal control codes then these
would also be sent directly.

With newer SeaBIOS there is a lame attempt to implement a splash
screen using terminal control codes, thus when libguestfs tries to
display debugging output it would cause the screen to clear and debug
output to be lost.

This commit causes all non-printing characters to be escaped.
(\n and \r characters from the appliance are treated somewhat
specially).

Furthermore, instead of using write(2), use buffered stderr calls.
(cherry picked from commit 06019bc82e107f7715ebc59e491610e06dad1e39)
src/events.c