1package gcfg
2
3import (
4	"gopkg.in/warnings.v0"
5)
6
7// FatalOnly filters the results of a Read*Into invocation and returns only
8// fatal errors. That is, errors (warnings) indicating data for unknown
9// sections / variables is ignored. Example invocation:
10//
11//  err := gcfg.FatalOnly(gcfg.ReadFileInto(&cfg, configFile))
12//  if err != nil {
13//      ...
14//
15func FatalOnly(err error) error {
16	return warnings.FatalOnly(err)
17}
18
19func isFatal(err error) bool {
20	_, ok := err.(extraData)
21	return !ok
22}
23
24type extraData struct {
25	section    string
26	subsection *string
27	variable   *string
28}
29
30func (e extraData) Error() string {
31	s := "can't store data at section \"" + e.section + "\""
32	if e.subsection != nil {
33		s += ", subsection \"" + *e.subsection + "\""
34	}
35	if e.variable != nil {
36		s += ", variable \"" + *e.variable + "\""
37	}
38	return s
39}
40
41var _ error = extraData{}
42