Re: [Vala] Vala 0.11.6 How do I copy a file using GInputStream and GOutputStream?



On 1 March 2011 18:29, Jürg Billeter <j bitron ch> wrote:
On Tue, 2011-03-01 at 18:21 +0000, Graham Whelan wrote:
I'm trying to copy a file using GLib.InputStream and GLib.OutputStream
but the copied file ends up corrupted.

Sample code:

uint8 buffer[4096];
size_t read;
while (true) {
      read = input.read (buffer);
      if (read > 0) {
              output.write (buffer);

This should work with slicing:

   output.write (buffer[0:read]);

Jürg



Thanks for the quick response.

I've just tried your suggestion with valac 0.11.5 and 0.11.6 but it
doesn't work. Looking at the generated C code, Vala is still passing
the full length of the array and not the length of the slice.

So:
output.write (buffer[0:read]);

becomes:
g_output_stream_write ((GOutputStream*) output, buffer + 0, (gsize)
4096, NULL, &_inner_error_);

Graham



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]