github.com/slspeek/camlistore_namedsearch@v0.0.0-20140519202248-ed6f70f7721a/third_party/code.google.com/p/go-charset/charset/file.go (about)

     1  package charset
     2  
     3  import (
     4  	"io"
     5  	"io/ioutil"
     6  	"os"
     7  	"path/filepath"
     8  )
     9  
    10  var files = make(map[string]func() (io.ReadCloser, error))
    11  
    12  // RegisterDataFile registers the existence of a given data
    13  // file with the given name that may be used by a character-set converter.
    14  // It is intended to be used by packages that wish to embed
    15  // data in the executable binary, and should not be
    16  // used normally.
    17  func RegisterDataFile(name string, open func() (io.ReadCloser, error)) {
    18  	files[name] = open
    19  }
    20  
    21  // CharsetDir gives the location of the default data file directory.
    22  // This directory will be used for files with names that have not
    23  // been registered with RegisterDataFile.
    24  var CharsetDir = "/usr/local/lib/go-charset/datafiles"
    25  
    26  func readFile(name string) (data []byte, err error) {
    27  	var r io.ReadCloser
    28  	if open := files[name]; open != nil {
    29  		r, err = open()
    30  		if err != nil {
    31  			return
    32  		}
    33  	} else {
    34  		r, err = os.Open(filepath.Join(CharsetDir, name))
    35  		if err != nil {
    36  			return
    37  		}
    38  	}
    39  	return ioutil.ReadAll(r)
    40  }