diff --git a/src/genmai/Interpreter/InterIO.go b/src/genmai/Interpreter/InterIO.go index 5a1125e..c0320aa 100644 --- a/src/genmai/Interpreter/InterIO.go +++ b/src/genmai/Interpreter/InterIO.go @@ -30,6 +30,7 @@ package Interpreter import ( "bufio" + "bytes" ) //////////////////////////////////////////////////////////////// @@ -56,6 +57,26 @@ func (iio InterIO) Sendline(str string) (rc error) { } func (iio InterIO) RecvUntil(delim_s string) (ret string, rc error) { + output := "" + /* */ + for { + recv, err := iio.reader.ReadBytes(delim_s[len(delim_s) - 1]) + /* */ + if (nil != err) { + return "", err + } // if ( ... + + output += string(recv) + + if ( ( len(recv) >= len(delim_s) ) && + ( bytes.Equal(recv[len(recv) - len(delim_s):], []byte(delim_s)) ) ) { + break + } + } // for { ... + + ret = output + rc = nil + /* */ return ret, rc }