internal static bool swallow(Frame caller, IO io, int term) { int c; do { c = io.Peek(caller); if (c != term) return true; //TRAPBEG; io.Read(caller); //TRAPEND; } while (c != -1); return false; }
internal static String rb_io_getline_fast(Frame caller, IO file, char rs) { StringBuilder builder = new StringBuilder(); while (!file.EndOfStream(caller)) { READ_CHECK(caller, file.f, file); //TRAP_BEG(); int c = file.Read(caller); //TRAP_END(); if (c == IO.EOF) break; builder.Append((char)c); if ((char)c == rs) break; } if (builder.Length > 0) { file.oflineno++; lineno_global.value = file.oflineno; String line = new String(builder.ToString()); line.Tainted = true; return line; } else return null; }