Spawn.vala
[gitlive] / Spawn.vala
index 92c2684..09f6974 100644 (file)
@@ -352,17 +352,16 @@ public class Spawn : Object
         
         
         if (this.cfg.exceptions && this.result != 0) {
-                       
-                       var errstr = this.output;
-                       errstr += errstr.length > 0 ? "\n" : "";
+                       var errstr = string.joinv(" ", this.cfg.args) + "\n";
+                       errstr += this.output;
+                       errstr += this.output.length > 0 ? "\n" : "";
                        errstr += this.stderr;
+                       //print("Throwing execute error:%s\n", errstr);
             throw new SpawnError.EXECUTE_ERROR(errstr);
             //this.toString = function() { return this.stderr; };
             ///throw new Exception this; // we throw self...
         }
-        
         // finally throw, or return self..
-        
         return;
     
     }
@@ -430,7 +429,7 @@ public class Spawn : Object
     {
         string prop = (ch == this.out_ch) ? "output" : "stderr";
        // print("prop: " + prop);
-        
+        //print ("spawn.read: %s\n", prop);
         
         //print(JSON.stringify(ch, null,4));
         while (true) {
@@ -445,19 +444,22 @@ public class Spawn : Object
             
             try {
                                var cond = ch.get_buffer_condition();
-                               if ((cond & GLib.IOCondition.ERR) > 0) {
-                                       return false;
-                               }
-                               if ((cond & GLib.IOCondition.IN) < 1) {
-                                       return false;
-                               }
+                               //if ((cond & GLib.IOCondition.ERR) > 0) {
+                               //      return false;
+                               //}
+                               //if ((cond & GLib.IOCondition.IN) < 1) {
+                               //      return false;
+                               //}
                 status = ch.read_line( out buffer,  out len,  out term_pos );
             } catch (Error e) {
                 //FIXme
                return false;
                 
             }
-
+            if (buffer == null) {
+                       return false;
+               }
+            //print("got buffer of %s\n", buffer);
             // print('status: '  +JSON.stringify(status));
             // print(JSON.stringify(x));
              switch(status) {
@@ -478,14 +480,13 @@ public class Spawn : Object
                     }
                     //_this[prop] += x.str_return;
                     //if (this.cfg.debug) {
-                        stdout.printf("%s : %s", prop , buffer);
+                       // stdout.printf("%s : %s", prop , buffer);
                     //}
                     if (this.cfg.async) {
                          
                         if ( Gtk.events_pending()) {
                              Gtk.main_iteration();
                         }
-                         
                     }
                     
                     //this.ctx.iteration(true);