X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/rigol/blobdiff_plain/e8e713c3a536c59f94d6402d852f353e34fac2de..7ba4ad35ccc80799826d9ade4c6eea79d0ca5843:/rigol.c diff --git a/rigol.c b/rigol.c index 818b7ea..0e9ff9e 100644 --- a/rigol.c +++ b/rigol.c @@ -306,6 +306,7 @@ void do_get_screen(struct usb_dev_handle *sc) char filename[256]; unsigned char *png; int imglen; + int ret; int l; int fd; pid_t display; @@ -320,11 +321,26 @@ void do_get_screen(struct usb_dev_handle *sc) printf ("hmm. didnt' get %d bytes, but %d\n\n", sizeof(screen), l); } + png = lcd2png(screen, &imglen); + + lt = time(NULL); strftime(filename, sizeof(filename), "screen_%Y%m%d-%H%M%S.png", localtime(<)); fd=open(filename, O_CREAT|O_WRONLY, 0644); - png = lcd2png(screen, &imglen); - write(fd, png, imglen); + if (fd == -1) { + perror("open"); + exit(EXIT_FAILURE); + } + + while(imglen > 0) { + ret = write(fd, png, imglen); + if (ret == -1) { + perror("write"); + exit(EXIT_FAILURE); + } + imglen -= ret; + } close(fd); + free(png); printf("Waveform saved as %s\n", filename);