go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers-sdk/v1/util/linefeed/linefeed.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package linefeed
     5  
     6  import "io"
     7  
     8  var (
     9  	// the '\r' rune
    10  	RByte byte = 13
    11  	// the '\n' rune
    12  	NByte byte = 10
    13  )
    14  
    15  type lineFeedReader struct {
    16  	r io.Reader
    17  }
    18  
    19  // NewLineFeedReader creates a new io.Reader that replaces /r with /n
    20  // see https://github.com/golang/go/issues/7802
    21  func NewLineFeedReader(r io.Reader) io.Reader {
    22  	return &lineFeedReader{r: r}
    23  }
    24  
    25  func (r lineFeedReader) Read(p []byte) (n int, err error) {
    26  	n, err = r.r.Read(p)
    27  	for i, b := range p {
    28  		if b == RByte {
    29  			p[i] = NByte
    30  		}
    31  	}
    32  	return
    33  }