in cmd/redhat_filter/main.go [62:98]
func filter(chk rpm.Checker, cfg *config, r io.Reader, w io.Writer) error {
cr := csv.NewReader(r)
cw := csv.NewWriter(w)
for {
// read
row, err := cr.Read()
if err == io.EOF {
return nil
}
if err != nil {
return err
}
// check indexes
if err := cfg.checkIndexes(len(row)); err != nil {
return err
}
// filter
pkgs := strings.Split(row[cfg.pkgs], cfg.pkgsSep)
filtered, err := rpm.FilterFixedPackages(chk, pkgs, row[cfg.distro], row[cfg.cve])
if err != nil {
return fmt.Errorf("failed to filter packages: %v", err)
}
row[cfg.pkgs] = strings.Join(filtered, cfg.pkgsSep)
// write
if err := cw.Write(row); err != nil {
return err
}
cw.Flush()
if err := cw.Error(); err != nil {
return err
}
}
}