Beginning of replacing drop with resources
This commit is contained in:
parent
4c09d4a770
commit
0ba34d873d
2 changed files with 11 additions and 9 deletions
|
@ -55,7 +55,11 @@ fn convert_whence(whence: seek_style) -> int {
|
|||
ret alt whence { seek_set. { 0 } seek_cur. { 1 } seek_end. { 2 } };
|
||||
}
|
||||
|
||||
obj FILE_buf_reader(f: os::libc::FILE, must_close: bool) {
|
||||
resource FILE_res(f: os::libc::FILE) {
|
||||
os::libc::fclose(f);
|
||||
}
|
||||
|
||||
obj FILE_buf_reader(f: os::libc::FILE, res: option::t[@FILE_res]) {
|
||||
fn read(len: uint) -> vec[u8] {
|
||||
let buf = vec::alloc[u8](len);
|
||||
let read = os::libc::fread(vec::buf[u8](buf), 1u, len, f);
|
||||
|
@ -71,7 +75,6 @@ obj FILE_buf_reader(f: os::libc::FILE, must_close: bool) {
|
|||
fn tell() -> uint {
|
||||
ret os::libc::ftell(f) as uint;
|
||||
}
|
||||
drop { if must_close { os::libc::fclose(f); } }
|
||||
}
|
||||
|
||||
|
||||
|
@ -173,13 +176,13 @@ obj new_reader(rdr: buf_reader) {
|
|||
}
|
||||
|
||||
fn stdin() -> reader {
|
||||
ret new_reader(FILE_buf_reader(rustrt::rust_get_stdin(), false));
|
||||
ret new_reader(FILE_buf_reader(rustrt::rust_get_stdin(), option::none));
|
||||
}
|
||||
|
||||
fn file_reader(path: str) -> reader {
|
||||
let f = os::libc::fopen(str::buf(path), str::buf("r"));
|
||||
if f as uint == 0u { log_err "error opening " + path; fail; }
|
||||
ret new_reader(FILE_buf_reader(f, true));
|
||||
ret new_reader(FILE_buf_reader(f, option::some(@FILE_res(f))));
|
||||
}
|
||||
|
||||
|
||||
|
@ -237,7 +240,7 @@ type buf_writer =
|
|||
fn tell() -> uint ;
|
||||
};
|
||||
|
||||
obj FILE_writer(f: os::libc::FILE, must_close: bool) {
|
||||
obj FILE_writer(f: os::libc::FILE, res: option::t[@FILE_res]) {
|
||||
fn write(v: vec[u8]) {
|
||||
let len = vec::len[u8](v);
|
||||
let vbuf = vec::buf[u8](v);
|
||||
|
@ -250,7 +253,6 @@ obj FILE_writer(f: os::libc::FILE, must_close: bool) {
|
|||
fn tell() -> uint {
|
||||
ret os::libc::ftell(f) as uint;
|
||||
}
|
||||
drop { if must_close { os::libc::fclose(f); } }
|
||||
}
|
||||
|
||||
obj fd_buf_writer(fd: int, must_close: bool) {
|
||||
|
@ -372,7 +374,7 @@ fn file_writer(path: str, flags: vec[fileflag]) -> writer {
|
|||
fn buffered_file_buf_writer(path: str) -> buf_writer {
|
||||
let f = os::libc::fopen(str::buf(path), str::buf("w"));
|
||||
if f as uint == 0u { log_err "error opening " + path; fail; }
|
||||
ret FILE_writer(f, true);
|
||||
ret FILE_writer(f, option::some(@FILE_res(f)));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -64,10 +64,10 @@ fn start_program(prog: str, args: vec[str]) -> @program {
|
|||
ret io::new_writer(io::fd_buf_writer(in_fd, false));
|
||||
}
|
||||
fn output() -> io::reader {
|
||||
ret io::new_reader(io::FILE_buf_reader(out_file, false));
|
||||
ret io::new_reader(io::FILE_buf_reader(out_file, option::none));
|
||||
}
|
||||
fn err() -> io::reader {
|
||||
ret io::new_reader(io::FILE_buf_reader(err_file, false));
|
||||
ret io::new_reader(io::FILE_buf_reader(err_file, option::none));
|
||||
}
|
||||
fn close_input() {
|
||||
let invalid_fd = -1;
|
||||
|
|
Loading…
Reference in a new issue