Convert std::run to ivecs

This commit is contained in:
Brian Anderson 2011-08-11 22:31:45 -07:00
parent 5c042a02cd
commit 13439dc870
5 changed files with 22 additions and 20 deletions

View file

@ -623,7 +623,7 @@ fn main(args: vec[str]) {
}
// We run 'gcc' here
let err_code = run::run_program(prog, ivec::to_vec(gcc_args));
let err_code = run::run_program(prog, gcc_args);
if 0 != err_code {
sess.err(#fmt("linking with gcc failed with code %d", err_code));
sess.note(#fmt("gcc arguments: %s",
@ -633,13 +633,13 @@ fn main(args: vec[str]) {
// Clean up on Darwin
if sess.get_targ_cfg().os == session::os_macos {
run::run_program("dsymutil", [saved_out_filename]);
run::run_program("dsymutil", ~[saved_out_filename]);
}
// Remove the temporary object file if we aren't saving temps
if !sopts.save_temps {
run::run_program("rm", [saved_out_filename + ".o"]);
run::run_program("rm", ~[saved_out_filename + ".o"]);
}
}

View file

@ -26,7 +26,7 @@ fn write_file(filename: &str, content: &str) {
~[io::create,
io::truncate]).write_str(content);
// Work around https://github.com/graydon/rust/issues/726
std::run::run_program("chmod", ["644", filename]);
std::run::run_program("chmod", ~["644", filename]);
}
fn file_contains(filename: &str, needle: &str) -> bool {
@ -177,7 +177,7 @@ fn check_variants_of_ast(crate: &ast::crate, codemap: &codemap::codemap, filenam
fn check_whole_compiler(code: &str) {
let filename = "test.rs";
write_file(filename, code);
let p = std::run::program_output("/Users/jruderman/code/rust/build/stage1/rustc", ["-c", filename]);
let p = std::run::program_output("/Users/jruderman/code/rust/build/stage1/rustc", ~["-c", filename]);
//log_err #fmt("Status: %d", p.status);
//log_err "Output: " + p.out;
if p.err != "" {
@ -311,7 +311,7 @@ fn check_roundtrip_convergence(code: &str, maxIters: uint) {
log_err #fmt("Did not converge after %u iterations!", i);
write_file("round-trip-a.rs", old);
write_file("round-trip-b.rs", new);
std::run::run_program("diff", ["-w", "-u", "round-trip-a.rs", "round-trip-b.rs"]);
std::run::run_program("diff", ~["-w", "-u", "round-trip-a.rs", "round-trip-b.rs"]);
fail "Mismatch";
}
}

View file

@ -13,23 +13,25 @@ native "rust" mod rustrt {
int;
}
fn arg_vec(prog: str, args: vec[str]) -> vec[sbuf] {
let argptrs = [str::buf(prog)];
for arg: str in args { vec::push[sbuf](argptrs, str::buf(arg)); }
vec::push[sbuf](argptrs, 0 as sbuf);
fn arg_vec(prog: str, args: &[str]) -> [sbuf] {
let argptrs = ~[str::buf(prog)];
for arg: str in args { argptrs += ~[str::buf(arg)]; }
argptrs += ~[0 as sbuf];
ret argptrs;
}
fn spawn_process(prog: str, args: vec[str], in_fd: int, out_fd: int,
fn spawn_process(prog: str, args: &[str], in_fd: int, out_fd: int,
err_fd: int) -> int {
// Note: we have to hold on to this vector reference while we hold a
// pointer to its buffer
let argv = arg_vec(prog, args);
let pid = rustrt::rust_run_program(vec::buf(argv), in_fd, out_fd, err_fd);
let argvv = ivec::to_vec(argv);
let pid = rustrt::rust_run_program(
vec::buf(argvv), in_fd, out_fd, err_fd);
ret pid;
}
fn run_program(prog: str, args: vec[str]) -> int {
fn run_program(prog: str, args: &[str]) -> int {
ret os::waitpid(spawn_process(prog, args, 0, 0, 0));
}
@ -48,7 +50,7 @@ resource program_res(p: program) {
p.destroy();
}
fn start_program(prog: str, args: vec[str]) -> @program_res {
fn start_program(prog: str, args: &[str]) -> @program_res {
let pipe_input = os::pipe();
let pipe_output = os::pipe();
let pipe_err = os::pipe();
@ -112,7 +114,7 @@ fn read_all(rd: &io::reader) -> str {
ret buf;
}
fn program_output(prog: str, args: vec[str])
fn program_output(prog: str, args: [str])
-> {status: int, out: str, err: str} {
let pr = start_program(prog, args);
pr.close_input();

View file

@ -140,7 +140,7 @@ fn worker(p: port[request]) {
let pipe_err = os::pipe();
let spawnproc =
bind run::spawn_process(execparms.prog,
ivec::to_vec(execparms.args),
execparms.args,
pipe_in.in,
pipe_out.out,
pipe_err.out);

View file

@ -11,9 +11,9 @@ import std::ivec;
#[cfg(target_os = "macos")]
#[test]
fn test_leaks() {
run::run_program("echo", []);
run::start_program("echo", []);
run::program_output("echo", []);
run::run_program("echo", ~[]);
run::start_program("echo", ~[]);
run::program_output("echo", ~[]);
}
// FIXME
@ -28,7 +28,7 @@ fn test_pipes() {
let pipe_out = os::pipe();
let pipe_err = os::pipe();
let pid = run::spawn_process("cat", [],
let pid = run::spawn_process("cat", ~[],
pipe_in.in, pipe_out.out, pipe_err.out);
os::libc::close(pipe_in.in);
os::libc::close(pipe_out.out);