diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-08-11 22:31:45 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-08-12 12:11:12 -0700 |
| commit | 13439dc87054bdcbdbe118f375e5addf5dcd78c8 (patch) | |
| tree | 80c5289cf89690c7e69aee68f778507c1f91b620 /src/lib/run_program.rs | |
| parent | 5c042a02cd3c2cbaa0a69cc6d7e90568593193d8 (diff) | |
| download | rust-13439dc87054bdcbdbe118f375e5addf5dcd78c8.tar.gz rust-13439dc87054bdcbdbe118f375e5addf5dcd78c8.zip | |
Convert std::run to ivecs
Diffstat (limited to 'src/lib/run_program.rs')
| -rw-r--r-- | src/lib/run_program.rs | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/lib/run_program.rs b/src/lib/run_program.rs index 7db81f96d5b..fa79a6330f5 100644 --- a/src/lib/run_program.rs +++ b/src/lib/run_program.rs @@ -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(); |
