func endingToTxtSlice(c chan lex, errstr, f string) ([]string, *ParseError, string) {
	l := <-c
	if l.err {
		return nil, &ParseError{f, errstr, l}, ""
	}
	s := make([]string, 0)
	quote := false
	empty := false
	for l.value != zNewline && l.value != zEOF {
		if l.err {
			return nil, &ParseError{f, errstr, l}, ""
		}
		switch l.value {
		case zString:
			empty = false
			if len(l.token) > 255 {
				sx := []string{}
				p, i := 0, 255
				for {
					if i <= len(l.token) {
						sx = append(sx, l.token[p:i])
					} else {
						sx = append(sx, l.token[p:])
						break
					}
					p, i = p+255, i+255
				}
				s = append(s, sx...)
				break
			}
			s = append(s, l.token)
		case zBlank:
			if quote {
				return nil, &ParseError{f, errstr, l}, ""
			}
		case zQuote:
			if empty && quote {
				s = append(s, "")
			}
			quote = !quote
			empty = true
		default:
			return nil, &ParseError{f, errstr, l}, ""
		}
		l = <-c
	}
	if quote {
		return nil, &ParseError{f, errstr, l}, ""
	}
	return s, nil, l.comment
}
A remainder of the rdata with embedded spaces, split on unquoted whitespace
and return the parsed string slice or an error
package dns
import (
	"encoding/base64"
	"net"
	"strconv"
	"strings"
)
type parserFunc struct {
	Func func(h RR_Header, c chan lex, origin string, file string) (RR, *ParseError, string)
	Variable bool
}
func setRR(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) {
	parserfunc, ok := typeToparserFunc[h.Rrtype]
	if ok {
		r, e, cm := parserfunc.Func(h, c, o, f)
		if parserfunc.Variable {
			return r, e, cm
		}
		if e != nil {
			return nil, e, ""
		}
		e, cm = slurpRemainder(c, f)
		if e != nil {
			return nil, e, ""
		}
		return r, nil, cm
	}
	return setRFC3597(h, c, o, f)
}
func endingToString(c chan lex, errstr, f string) (string, *ParseError, string) {
	s := ""
	l := <-c  
	for l.value != zNewline && l.value != zEOF {
		if l.err {
			return s, &ParseError{f, errstr, l}, ""
		}
		switch l.value {
		case zString:
			s += l.token
		case zBlank:  
		default:
			return "", &ParseError{f, errstr, l}, ""
		}
		l = <-c
	}
	return s, nil, l.comment
}