chiark / gitweb /
* adt-testreport-onepackage: seddery the log to remove ctrl chars.
[autopkgtest.git] / runner / adt-testreport-onepackage
index 37c4766ff68b07f91ecefcd857f561576c12e8c0..0d7a6e62b974a8896e033d84e3657788277c5c48 100755 (executable)
@@ -47,12 +47,12 @@ printf >&3 "starting "
 rm -rf "$tmp"
 mkdir "$tmp"
 
->"$tmp"/_log
+>"$tmp"/_log_raw
 
 if $interactive; then
-       echo '(log diverted to stdout)' >>"$tmp"/_log
+       echo '(log diverted to stdout)' >>"$tmp"/_log_raw
 else
-       exec >>"$tmp"/_log
+       exec >>"$tmp"/_log_raw
 fi
 exec 4>&1
 
@@ -376,6 +376,15 @@ else
        progress "fault ($ourx)."
 fi
 
+perl <"$tmp"/_log_raw >"$tmp"/_log -pe '
+       s/[^\012\040-\133\135-\176]/
+               $& eq "\t" ? "\\t" :
+               $& eq "\r" ? "\\r" :
+               $& eq "\b" ? "\\b" :
+               $& eq "\\" ? "\\\\" :
+               sprintf "\\x%02x", ord $&
+       /ge'
+
 if [ "x$email" = x ]; then
        if $interactive; then
                cat "$tmp"/_log >&2