Fixes file read issue that caused a premature return

This commit is contained in:
sloumdrone 2019-06-27 22:21:27 -07:00
parent d6b686d325
commit 08cde441c7
1 changed files with 21 additions and 8 deletions

View File

@ -15,27 +15,38 @@ type Mailcap struct {
}
func NewMailcap() *Mailcap {
mc := Mailcap{}
mc := Mailcap{make(Cap)}
mc.getCaps()
return &mc
}
func (m *Mailcap) ShowAll() {
fmt.Print(m.Caps)
for k, _ := range m.Caps {
fmt.Println(k)
}
}
func (m *Mailcap) Show(mime string) {
if v, ok := m.Caps[mime]; ok {
fmt.Println(mime + ":")
fmt.Print(v)
fmt.Println("")
} else {
fmt.Printf("Cannot find %s\n", mime)
}
}
func (m *Mailcap) ShowSourceFiles() {
for _, s := range getMailcapFileList() {
fmt.Println(s)
fmt.Println("")
}
}
func (m *Mailcap) getCaps() {
lnNum := 0
var moreCaps Cap
moreCaps = make(Cap)
for _, mailcapFile := range getMailcapFileList() {
file, err := os.Open(mailcapFile)
if err != nil {
@ -77,11 +88,14 @@ func getMailcapFileList() (mCapSlice []string) {
}
func readMailcapFile(f *os.File,ln int) (Cap, int) {
caps := Cap{}
caps := make(Cap)
reader := bufio.NewReader(f)
for {
l, e := reader.ReadString('\n')
if e != nil || l[0] == '#' || strings.TrimSpace(l) == "" {
if e != nil {
break
}
if strings.TrimSpace(l) == "" || l[0] == '#' {
continue
}
@ -114,17 +128,16 @@ func readMailcapFile(f *os.File,ln int) (Cap, int) {
if _, ok := caps[key]; ok {
caps[key] = append(caps[key], fields)
} else {
var outputfield Fields
caps[key] = outputfield
caps[key] = make(Fields,0,10)
caps[key] = append(caps[key], fields)
}
return caps, ln
}
return caps, ln
}
func parseLine(ln string) (string, Entry, error) {
outputFields := Entry{}
outputFields := make(Entry)
i := 0
n := len(ln)
fields := make([]string, 0, 10)