From f0d4e6c5119b377b6f3744aa77263a65136eb63b Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Wed, 18 Aug 2010 15:40:27 -0700 Subject: Add stdio_reader to io, just use FILE* values for now. We have things to do. --- src/lib/_io.rs | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/lib/_io.rs') diff --git a/src/lib/_io.rs b/src/lib/_io.rs index 93d06d41..a7feba2f 100644 --- a/src/lib/_io.rs +++ b/src/lib/_io.rs @@ -1,7 +1,26 @@ -import std.os; +import std.os.libc; import std._str; import std._vec; + +type stdio_reader = unsafe obj { + fn getc() -> int; +}; + +fn new_stdio_reader(str path) -> stdio_reader { + unsafe obj stdio_FILE_reader(os.libc.FILE f) { + fn getc() -> int { + ret os.libc.fgetc(f); + } + drop { + os.libc.fclose(f); + } + } + ret stdio_FILE_reader(os.libc.fopen(_str.buf(path), + _str.buf("r"))); +} + + type buf_reader = unsafe obj { fn read() -> vec[u8]; }; @@ -130,3 +149,14 @@ fn file_writer(str path, } ret fw(new_buf_writer(path, flags)); } + +// +// Local Variables: +// mode: rust +// fill-column: 78; +// indent-tabs-mode: nil +// c-basic-offset: 4 +// buffer-file-coding-system: utf-8-unix +// compile-command: "make -k -C .. 2>&1 | sed -e 's/\\/x\\//x:\\//g'"; +// End: +// -- cgit v1.2.3