public override int Read(byte[] buffer, int offset, int count) { if (offset == 0) { return((int)Glk.glk_get_buffer_stream(gstr, buffer, (uint)count)); } else { byte[] temp = new byte[count]; int actual = (int)Glk.glk_get_buffer_stream(gstr, temp, (uint)count); Array.Copy(temp, 0, buffer, offset, actual); return(actual); } }