Colin Walters 0e1a3ee345 gsubprocess: Fix up communicate
We weren't closing the streams after we were done reading or writing,
which is kind of essential.  The easy way to fix this is to just use
g_output_stream_splice() to a GMemoryOutputStream rather than
hand-rolling it.  This results in a substantial reduction of code
complexity.

A second serious issue is that we were marking the task as complete when
the process exits, but that's racy - there could still be data to read
from stdout.  Fix this by just refcounting outstanding operations.

This code, not surprisingly, looks a lot like the "multi" test.

Next, because processes output binary data, I'd be forced to annotate
the char*/length pairs as (array) (element-type uint8).  But rather than
doing that, it's *far* simpler to just use GBytes.

We need a version of this that actually validates as UTF-8, that will be
in the next patch.
2013-10-17 14:32:44 -04:00
..
2013-10-17 10:12:27 -04:00
2013-10-03 10:37:30 -04:00
2013-10-17 14:32:44 -04:00
2013-10-04 22:08:36 +02:00
2013-10-17 10:12:27 -04:00
2012-02-02 16:22:42 +01:00
2013-10-17 10:12:27 -04:00
2013-06-30 10:32:18 +02:00
2013-02-15 05:39:20 -05:00
2013-04-21 16:25:15 -04:00
2012-07-03 21:14:41 -04:00
2013-05-25 23:15:36 -04:00
2013-06-23 14:15:05 +02:00
2013-04-21 16:31:14 -04:00
2013-02-04 22:35:29 -05:00
2012-11-28 00:58:03 -05:00
2013-04-21 16:31:14 -04:00
2011-06-07 08:55:31 +08:00
2012-11-29 16:29:47 -03:00
2011-02-08 10:05:00 -05:00
2012-12-12 15:20:22 +01:00
2011-02-08 10:05:00 -05:00
2012-08-19 02:21:02 -04:00
2012-08-19 02:21:02 -04:00
2013-07-11 12:35:45 -04:00
2013-07-11 12:35:45 -04:00
2011-06-04 18:48:19 -04:00
2012-01-13 17:12:57 +01:00
2012-12-29 00:22:34 -05:00
2011-08-29 14:49:32 -04:00
2013-10-04 09:51:31 -04:00
2011-10-16 21:41:15 -04:00
2013-10-17 14:32:44 -04:00
2013-10-17 14:32:44 -04:00
2013-03-26 10:51:48 +01:00
2011-10-02 22:33:10 -04:00
2013-04-21 16:31:14 -04:00
2012-07-03 21:14:41 -04:00
2012-11-15 14:19:06 -05:00
2012-08-18 23:15:58 -04:00