about summary refs log tree commit diff
path: root/src/lib/run_program.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-08-11 22:31:45 -0700
committerBrian Anderson <banderson@mozilla.com>2011-08-12 12:11:12 -0700
commit13439dc87054bdcbdbe118f375e5addf5dcd78c8 (patch)
tree80c5289cf89690c7e69aee68f778507c1f91b620 /src/lib/run_program.rs
parent5c042a02cd3c2cbaa0a69cc6d7e90568593193d8 (diff)
downloadrust-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.rs20
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();