1package playlistfs23import (4 "bufio"5 "bytes"6)78type Fields []string910func parseFields(buf []byte, min int, max int) ([]Fields, error) {11 lineRdr := bytes.NewBuffer(buf)12 lineScr := bufio.NewScanner(lineRdr)1314 var result []Fields15 for lineScr.Scan() {16 fieldRdr := bytes.NewBuffer(lineScr.Bytes())17 fieldScr := bufio.NewScanner(fieldRdr)18 fieldScr.Split(bufio.ScanWords)1920 var fields Fields21 for fieldScr.Scan() {22 field := fieldScr.Text()23 fields = append(fields, field)24 }2526 err := fieldScr.Err()27 if err != nil {28 return []Fields{}, err29 }3031 numFields := len(fields)32 if numFields < min {33 return []Fields{}, ErrTooFewArgs34 } else if max != -1 && numFields > max {35 return []Fields{}, ErrTooManyArgs36 }3738 result = append(result, fields)39 }4041 err := lineScr.Err()42 if err != nil {43 return []Fields{}, err44 }4546 return result, nil47}