honk/vendor/humungus.tedunangst.com/r/webs/log/uncontrol.go
2022-11-13 16:19:53 +01:00

37 lines
560 B
Go

package log
import (
"io"
)
type unctrlwriter struct {
w io.Writer
}
func filteredwrite(w io.Writer, p []byte) (int, error) {
r := make([]byte, len(p))
for i, c := range p {
if c < 32 && i != len(p)-1 {
if c == '\t' || c == '\n' {
c = ' '
} else {
c = '.'
}
}
r[i] = c
}
return w.Write(r)
}
func (u unctrlwriter) Write(p []byte) (int, error) {
for i, c := range p {
if c < 32 && i != len(p)-1 {
return filteredwrite(u.w, p)
}
}
return u.w.Write(p)
}
func unctrl(w io.Writer) io.Writer {
return unctrlwriter{w: w}
}