From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:39024) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S75AU-0005uE-Km for qemu-devel@nongnu.org; Mon, 12 Mar 2012 09:20:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S75AJ-00044D-O1 for qemu-devel@nongnu.org; Mon, 12 Mar 2012 09:20:05 -0400 Received: from mail-ey0-f173.google.com ([209.85.215.173]:46998) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S75AI-00043l-HM for qemu-devel@nongnu.org; Mon, 12 Mar 2012 09:19:55 -0400 Received: by eaaf11 with SMTP id f11so1255304eaa.4 for ; Mon, 12 Mar 2012 06:19:46 -0700 (PDT) From: "=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?=" Date: Mon, 12 Mar 2012 14:11:27 +0100 Message-Id: <1331557893-30806-2-git-send-email-marcandre.lureau@redhat.com> In-Reply-To: <1331557893-30806-1-git-send-email-marcandre.lureau@redhat.com> References: <1331557893-30806-1-git-send-email-marcandre.lureau@redhat.com> Subject: [Qemu-devel] [PATCH/RFC 1/7] ppm_save: use QEMUFile List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= --- hw/vga.c | 22 ++++++++++++---------- 1 files changed, 12 insertions(+), 10 deletions(-) diff --git a/hw/vga.c b/hw/vga.c index 5994f43..24af4a1 100644 --- a/hw/vga.c +++ b/hw/vga.c @@ -2364,19 +2364,20 @@ void vga_init_vbe(VGACommonState *s, MemoryRegion *system_memory) int ppm_save(const char *filename, struct DisplaySurface *ds) { - FILE *f; + QEMUFile *f; uint8_t *d, *d1; uint32_t v; int y, x; uint8_t r, g, b; - int ret; char *linebuf, *pbuf; + gchar *header; + + f = qemu_fopen(filename, "wb"); + g_return_val_if_fail(f != NULL, -1); + + header = g_strdup_printf("P6\n%d %d\n%d\n", ds->width, ds->height, 255); + qemu_put_buffer(f, (uint8_t*)header, strlen(header)); - f = fopen(filename, "wb"); - if (!f) - return -1; - fprintf(f, "P6\n%d %d\n%d\n", - ds->width, ds->height, 255); linebuf = g_malloc(ds->width * 3); d1 = ds->data; for(y = 0; y < ds->height; y++) { @@ -2397,11 +2398,12 @@ int ppm_save(const char *filename, struct DisplaySurface *ds) d += ds->pf.bytes_per_pixel; } d1 += ds->linesize; - ret = fwrite(linebuf, 1, pbuf - linebuf, f); - (void)ret; + qemu_put_buffer(f, (uint8_t*)linebuf, pbuf - linebuf); } + g_free(linebuf); - fclose(f); + g_free(header); + qemu_fclose(f); return 0; } -- 1.7.7.6