Add stdio_reader to io, just use FILE* values for now. We have things to do.
This commit is contained in:
parent
b4f92774d0
commit
f0d4e6c511
@ -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:
|
||||
//
|
||||
|
@ -8,6 +8,11 @@ native mod libc = "libc.so.6" {
|
||||
fn write(int fd, vbuf buf, uint count) -> int;
|
||||
fn close(int fd) -> int;
|
||||
|
||||
type FILE;
|
||||
fn fopen(sbuf path, sbuf mode) -> FILE;
|
||||
fn fclose(FILE f);
|
||||
fn fgetc(FILE f) -> int;
|
||||
|
||||
type dir;
|
||||
// readdir is a mess; handle via wrapper function in rustrt.
|
||||
fn opendir(sbuf d) -> dir;
|
||||
|
@ -8,6 +8,11 @@ native mod libc = "libc.dylib" {
|
||||
fn write(int fd, vbuf buf, uint count) -> int;
|
||||
fn close(int fd) -> int;
|
||||
|
||||
type FILE;
|
||||
fn fopen(sbuf path, sbuf mode) -> FILE;
|
||||
fn fclose(FILE f);
|
||||
fn fgetc(FILE f) -> int;
|
||||
|
||||
type dir;
|
||||
// readdir is a mess; handle via wrapper function in rustrt.
|
||||
fn opendir(sbuf d) -> dir;
|
||||
|
@ -6,6 +6,11 @@ native mod libc = "msvcrt.dll" {
|
||||
fn read(int fd, vbuf buf, uint count) -> int = "_read";
|
||||
fn write(int fd, vbuf buf, uint count) -> int = "_write";
|
||||
fn close(int fd) -> int = "_close";
|
||||
|
||||
type FILE;
|
||||
fn fopen(sbuf path, sbuf mode) -> FILE;
|
||||
fn fclose(FILE f);
|
||||
fn fgetc(FILE f) -> int;
|
||||
}
|
||||
|
||||
mod libc_constants {
|
||||
|
Loading…
x
Reference in New Issue
Block a user