func ParseFile(filename string) ([]*Machine, Macros, error) {
	// TODO(fhs): Check if file is readable by anyone besides the user if there is password in it.
	fd, err := os.Open(filename)
	if err != nil {
		return nil, nil, err
	}
	defer fd.Close()
	return parse(fd, &filePos{filename, 1})
}
func ParseFile(filename string) ([]*Machine, Macros, error) {
	// TODO(fhs): Check if file is readable by anyone besides the user if there is password in it.
	fd, err := os.Open(filename)
	if err != nil {
		return nil, nil, err
	}
	defer fd.Close()
	return parse(fd, &filePos{filename, 1})
}
// ParseFile parses the netrc file identified by filename and returns the set of
// machine information and macros defined in it. The ``default'' machine,
// which is intended to be used when no machine name matches, is identified
// by an empty machine name. There can be only one ``default'' machine.
//
// If there is a parsing error, an Error is returned.