github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/x/io/io.go (about) 1 package io 2 3 import ( 4 "bytes" 5 "io" 6 7 "golang.org/x/xerrors" 8 9 dio "github.com/aquasecurity/go-dep-parser/pkg/io" 10 ) 11 12 func NewReadSeekerAt(r io.Reader) (dio.ReadSeekerAt, error) { 13 if rr, ok := r.(dio.ReadSeekerAt); ok { 14 return rr, nil 15 } 16 17 buff := bytes.NewBuffer([]byte{}) 18 if _, err := io.Copy(buff, r); err != nil { 19 return nil, xerrors.Errorf("copy error: %w", err) 20 } 21 22 return bytes.NewReader(buff.Bytes()), nil 23 }