code: func GetEntries(ctx context.Context, conf Config) ([]chan string, error) {
  	if conf.Type != RotateStyleSyslog {
  		return nil, errors.New("Only Syslog style rotation currently supported")
  	}
  	// expand any globs in the list of files so our list all represents real files
  	var filenames []string
  	for _, filePath := range conf.Paths {
  		if filePath == "-" {
  			filenames = append(filenames, filePath)
  		} else {
  			files, err := filepath.Glob(filePath)
  			if err != nil {
  				return nil, err
  			}
  			files = removeStateFiles(files, conf)
  			files = removeFilteredPaths(files, conf.FilterPaths)
  			filenames = append(filenames, files...)
  		}
  	}
  	if len(filenames) == 0 {
  		return nil, errors.New("After removing missing files and state files from the list, there are no files left to tail")
  	}
  
  	// make our lines channel list; we'll get one channel for each file
  	linesChans := make([]chan string, 0, len(filenames))
  	numFiles := len(filenames)
  	for _, file := range filenames {
  		var lines chan string
  		if file == "-" {
  			lines = tailStdIn(ctx)
  		} else {
  			stateFile := getStateFile(conf, file, numFiles)
  			tailer, err := getTailer(conf, file, stateFile)
  			if err != nil {
  				return nil, err
  			}
  			lines = tailSingleFile(ctx, tailer, file, stateFile)
  		}
  		linesChans = append(linesChans, lines)
  	}
  
  	return linesChans, nil
  }
docs: // GetEntries sets up a list of channels that get one line at a time from each
  // file down each channel.