Spawn.vala
[gitlive] / Spawn.vala
index 09334f3..8c127d3 100644 (file)
@@ -201,10 +201,9 @@ public class Spawn : Object
         int standard_error;
 
 
-        var ret = {};
         
         if (this.cfg.debug) {
-            print("cd " + this.cfg.cwd +";" + string.joinv(" ", this.cfg.args));
+           stdout.printf("cd %s; %s" , this.cfg.cwd , string.joinv(" ", this.cfg.args));
         }
         
         Process.spawn_async_with_pipes (
@@ -224,27 +223,28 @@ public class Spawn : Object
        //print(JSON.stringify(gret));    
          
         if (this.cfg.debug) {
-            print("PID: " + this.pid);
+            
+            stdout.printf("PID: %d" ,this.pid);
         }
          
         ChildWatch.add (this.pid, (w_pid, result) => {
            
-           this.result = result;
-            if (_this.debug) {
-                print("child_watch_add : result: " + result);
+            this.result = result;
+            if (this.cfg.debug) {
+                stdout.printf("child_watch_add : result:%d ", result);
             }
-           
+           
             this.read(this.out_ch);
             this.read(this.err_ch);
             
-                       
+            
             Process.close_pid(this.pid);
             this.pid = -1;
             if (this.ctx) {
                 this.ctx.quit();
             }
             this.tidyup();
-           //print("DONE TIDYUP");
+        //print("DONE TIDYUP");
             if (this.cfg.finish) {
                 this.cfg.finish(this.result);
             }
@@ -378,8 +378,8 @@ public class Spawn : Object
         
         //print("write_char retunred:" + JSON.stringify(res) +  ' ' +JSON.stringify(ret)  );
         
-            if (res != GLib.IOStatus.NORMAL) {
-                throw "Write failed";
+        if (res != GLib.IOStatus.NORMAL) {
+            throw "Write failed";
         }
         //return ret.value;
         return str.length;
@@ -396,13 +396,19 @@ public class Spawn : Object
         string prop = (ch == this.out_ch) ? "output" : "stderr";
        // print("prop: " + prop);
         var _this = this;
+        string str_return;
         
-       
         //print(JSON.stringify(ch, null,4));
         while (true) {
-            var x =   {};
-            var status = ch.read_line( x);
+            var buffer = new GLib.StringBuffer("");
+            
+            try {
+                var status = ch.read_line( buffer,  term_pos );
+            } catch (Error e) {
+                //FIXme
+                break; // ??
+                
+            }
             // print('status: '  +JSON.stringify(status));
             // print(JSON.stringify(x));
              switch(status) {