Skip to content

Commit

Permalink
libcore: Make run::program_output UTF-8 safe
Browse files Browse the repository at this point in the history
  • Loading branch information
tychosci committed Oct 18, 2012
1 parent e28a161 commit c0cee3e
Showing 1 changed file with 16 additions and 12 deletions.
28 changes: 16 additions & 12 deletions src/libcore/run.rs
Expand Up @@ -248,12 +248,14 @@ pub fn start_program(prog: &str, args: &[~str]) -> Program {
}

fn read_all(rd: io::Reader) -> ~str {
let mut buf = ~"";
while !rd.eof() {
let bytes = rd.read_bytes(4096u);
buf += str::from_bytes(bytes);
}
move buf
let buf = io::with_bytes_writer(|wr| {
let mut bytes = [mut 0, ..4096];
while !rd.eof() {
let nread = rd.read(bytes, bytes.len());
wr.write(bytes.view(0, nread));
}
});
str::from_bytes(buf)
}

/**
Expand Down Expand Up @@ -341,13 +343,15 @@ fn writeclose(fd: c_int, s: ~str) {
fn readclose(fd: c_int) -> ~str {
let file = os::fdopen(fd);
let reader = io::FILE_reader(file, false);
let mut buf = ~"";
while !reader.eof() {
let bytes = reader.read_bytes(4096u);
buf += str::from_bytes(bytes);
}
let buf = io::with_bytes_writer(|writer| {
let mut bytes = [mut 0, ..4096];
while !reader.eof() {
let nread = reader.read(bytes, bytes.len());
writer.write(bytes.view(0, nread));
}
});
os::fclose(file);
move buf
str::from_bytes(buf)
}

/// Waits for a process to exit and returns the exit code
Expand Down

0 comments on commit c0cee3e

Please sign in to comment.