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>
Fri, 16 Sep 2011 14:46:00 +0000 (15:46 +0100)
commit3eed1c3fb211b235b3e26123a723f75db070c067
treedfd761c5177cef8769586248692e986be1607d34
parentd944e7758d8f602a3c7cfb4f9a6cf39176a8a9bc
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