| package gcfg |
| |
| import warnings "gopkg.in/warnings.v0" |
| |
| // FatalOnly filters the results of a Read*Into invocation and returns only |
| // fatal errors. That is, errors (warnings) indicating data for unknown |
| // sections / variables is ignored. Example invocation: |
| // |
| // err := gcfg.FatalOnly(gcfg.ReadFileInto(&cfg, configFile)) |
| // if err != nil { |
| // ... |
| // |
| func FatalOnly(err error) error { |
| return warnings.FatalOnly(err) |
| } |
| |
| func isFatal(err error) bool { |
| _, ok := err.(extraData) |
| return !ok |
| } |
| |
| type loc struct { |
| section string |
| subsection *string |
| variable *string |
| } |
| |
| type extraData struct { |
| loc |
| } |
| |
| type locErr struct { |
| msg string |
| loc |
| } |
| |
| func (l loc) String() string { |
| s := "section \"" + l.section + "\"" |
| if l.subsection != nil { |
| s += ", subsection \"" + *l.subsection + "\"" |
| } |
| if l.variable != nil { |
| s += ", variable \"" + *l.variable + "\"" |
| } |
| return s |
| } |
| |
| func (e extraData) Error() string { |
| return "can't store data at " + e.loc.String() |
| } |
| |
| func (e locErr) Error() string { |
| return e.msg + " at " + e.loc.String() |
| } |
| |
| var _ error = extraData{} |
| var _ error = locErr{} |