From 2da4fecacd1b61e9e090e93c33394712fa7f066c Mon Sep 17 00:00:00 2001 From: Roy Frostig Date: Fri, 20 Aug 2010 12:57:38 -0700 Subject: Test the buffered reader and writer in _io. --- src/lib/_io.rs | 23 +++++++++++++++++++---- src/lib/_str.rs | 16 ++++++++++++++++ 2 files changed, 35 insertions(+), 4 deletions(-) (limited to 'src/lib') diff --git a/src/lib/_io.rs b/src/lib/_io.rs index 2fb225dd..0d968c5c 100644 --- a/src/lib/_io.rs +++ b/src/lib/_io.rs @@ -84,7 +84,18 @@ fn new_buf_reader(str path) -> buf_reader { ret fd_buf_reader(fd, new_buf()); } -type fileflag = tag(append(), create(), truncate()); +/** + * FIXME (issue #150): This should be + * + * type fileflag = tag(append(), create(), truncate()); + * + * but then the tag value ctors are not found from crate-importers of std, so + * we manually simulate the enum below. + */ +type fileflag = uint; +fn append() -> uint { ret 0u; } +fn create() -> uint { ret 1u; } +fn truncate() -> uint { ret 2u; } fn new_buf_writer(str path, vec[fileflag] flags) -> buf_writer { @@ -117,9 +128,13 @@ fn new_buf_writer(str path, vec[fileflag] flags) -> buf_writer { for (fileflag f in flags) { alt (f) { - case (append()) { fflags |= os.libc_constants.O_APPEND(); } - case (create()) { fflags |= os.libc_constants.O_CREAT(); } - case (truncate()) { fflags |= os.libc_constants.O_TRUNC(); } + // FIXME (issue #150): cf comment above defn of fileflag type + //case (append()) { fflags |= os.libc_constants.O_APPEND(); } + //case (create()) { fflags |= os.libc_constants.O_CREAT(); } + //case (truncate()) { fflags |= os.libc_constants.O_TRUNC(); } + case (0u) { fflags |= os.libc_constants.O_APPEND(); } + case (1u) { fflags |= os.libc_constants.O_CREAT(); } + case (2u) { fflags |= os.libc_constants.O_TRUNC(); } } } diff --git a/src/lib/_str.rs b/src/lib/_str.rs index 807edf31..a29e1daa 100644 --- a/src/lib/_str.rs +++ b/src/lib/_str.rs @@ -11,6 +11,22 @@ native "rust" mod rustrt { fn refcount[T](str s) -> uint; } +fn eq(str a, str b) -> bool { + let uint i = byte_len(a); + if (byte_len(b) != i) { + ret false; + } + while (i > 0u) { + i -= 1u; + auto cha = a.(i); + auto chb = b.(i); + if (cha != chb) { + ret false; + } + } + ret true; +} + fn is_utf8(vec[u8] v) -> bool { fail; // FIXME } -- cgit v1.2.3