From e5580c6bd2cee66c2bf8e10f6ebc4301e8d0f86b Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 3 Jun 2017 20:25:53 +0200 Subject: LoadBytes --- eval.go | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/eval.go b/eval.go index dea1094..50eb4be 100644 --- a/eval.go +++ b/eval.go @@ -1,10 +1,10 @@ package j1 import ( + "bytes" "encoding/binary" "fmt" - "io" - "os" + "io/ioutil" ) type J1 struct { @@ -24,22 +24,20 @@ func (vm *J1) String() string { return s } -func (vm *J1) LoadFile(fname string) error { - fd, err := os.Open(fname) - if err != nil { - return err +func (vm *J1) LoadBytes(data []byte) error { + size := len(data) >> 1 + if size > len(vm.memory) { + return fmt.Errorf("too big") } - defer fd.Close() - stat, err := fd.Stat() + return binary.Read(bytes.NewReader(data), binary.BigEndian, vm.memory[:size]) +} + +func (vm *J1) LoadFile(fname string) error { + data, err := ioutil.ReadFile(fname) if err != nil { return err } - size := stat.Size() >> 1 - err = binary.Read(fd, binary.BigEndian, vm.memory[:size]) - if err != io.ErrUnexpectedEOF { - return err - } - return nil + return vm.LoadBytes(data) } func (vm *J1) Eval() { -- cgit v1.2.3