[Spice-devel] [vdagent-win PATCH 4/4] imagetest: replace assert with printf
Uri Lublin
uril at redhat.com
Tue Jul 11 15:54:49 UTC 2017
If one does not have gdb installed it's nicer
to simply get the error message (and some
debug messages).
Signed-off-by: Uri Lublin <uril at redhat.com>
---
vdagent/imagetest.cpp | 99 ++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 83 insertions(+), 16 deletions(-)
diff --git a/vdagent/imagetest.cpp b/vdagent/imagetest.cpp
index 3ea244e..809bcc6 100644
--- a/vdagent/imagetest.cpp
+++ b/vdagent/imagetest.cpp
@@ -19,30 +19,62 @@
#include "vdcommon.h"
#include "image.h"
#include "imagepng.h"
-#include <assert.h>
#include <vector>
int main(int argc, char **argv)
{
ImageCoder *coder = create_png_coder();
- assert(coder);
- assert(argc > 1);
+ if (!coder) {
+ printf("failed to create a png decoder\n");
+ return 1;
+ }
+
+ if (argc < 2) {
+ printf("Usage: %s <in-image> [<out-bmp> [<out-png>]]\n", argv[0]);
+ return 1;
+ }
+
+ printf("opening %s\n", argv[1]);
// read all file into memory
FILE *f = fopen(argv[1], "rb");
- assert(f);
- assert(fseek(f, 0, SEEK_END) == 0);
+ if (!f) {
+ printf("Failed to open %s\n", argv[1]);
+ return 1;
+ }
+
+ if (fseek(f, 0, SEEK_END) != 0) {
+ printf("Failed to seek to the end-of-file\n");
+ fclose(f);
+ return 1;
+ }
+
long len = ftell(f);
- assert(len > 0);
- assert(fseek(f, 0, SEEK_SET) == 0);
+ if (fseek(f, 0, SEEK_SET) != 0) {
+ printf("Failed to see to the start-of-file\n");
+ fclose(f);
+ return 1;
+ }
+ printf("sizeof %s is %ld\n", argv[1], len);
std::vector<uint8_t> data(len);
- assert(fread(&data[0], 1, len, f) == (unsigned long) len);
+ long bytes = fread(&data[0], 1, len, f);
+ if (bytes != len) {
+ printf("read only %ld bytes, expected %ld\n", bytes, len);
+ fclose(f);
+ return 1;
+ }
fclose(f);
+ printf("read %ld bytes\n", bytes);
size_t dib_size = coder->get_dib_size(&data[0], len);
- assert(dib_size);
+ if (dib_size == 0) {
+ printf("unexpected dib_size of 0\n");
+ return 1;
+ }
+
+ printf("dib_size is %zd\n", dib_size);
std::vector<uint8_t> out(dib_size);
memset(&out[0], 0xcc, dib_size);
coder->get_dib_data(&out[0], &data[0], len);
@@ -55,24 +87,59 @@ int main(int argc, char **argv)
BITMAPINFOHEADER& info(*(BITMAPINFOHEADER*)&out[0]);
head.bfOffBits = sizeof(head) + sizeof(BITMAPINFOHEADER) + 4 * info.biClrUsed;
+ printf("creating out.bmp\n");
f = fopen(argc > 2 ? argv[2] : "out.bmp", "wb");
- assert(f);
- assert(fwrite(&head, 1, sizeof(head), f) == sizeof(head));
- assert(fwrite(&out[0], 1, dib_size, f) == dib_size);
+ if (!f) {
+ printf("failed to open out.bmp\n");
+ return 1;
+ }
+ bytes = fwrite(&head, 1, sizeof(head), f);
+ if (bytes != sizeof(head)) {
+ printf("header: wrote %ld bytes, expected %ld\n", bytes, sizeof(head));
+ fclose(f);
+ return 1;
+ }
+ bytes = fwrite(&out[0], 1, dib_size, f);
+ if (bytes != dib_size) {
+ printf("data: wrote %ld bytes, expected %ld\n", bytes, dib_size);
+ fclose(f);
+ return 1;
+ }
fclose(f);
+ printf("done\n");
+ printf("converting to png\n");
// convert back to PNG
long png_size = 0;
uint8_t *png = coder->from_bitmap(*((BITMAPINFO*)&out[0]), &out[sizeof(BITMAPINFOHEADER) + 4 * info.biClrUsed], png_size);
- assert(png && png_size > 0);
+ if (!png || (png_size == 0)) {
+ printf("failed to convert to png (%p) size(%ld)\n", png, png_size);
+ return 1;
+ }
+
+ printf("creating out.png\n");
+ int ret = 0;
f = fopen(argc > 3 ? argv[3] : "out.png", "wb");
- assert(f);
- assert(fwrite(png, 1, png_size, f) == (unsigned long) png_size);
+ if (!f) {
+ printf("failed to open out.png\n");
+ ret = 1;
+ goto end;
+ }
+ bytes = fwrite(png, 1, png_size, f);
+ if (bytes != png_size) {
+ printf("png: wrote %ld, expected %ld\n", bytes, png_size);
+ ret = 1;
+ goto end;
+ }
+ printf("done\n");
+
+end:
fclose(f);
+ f = NULL;
free(png);
png = NULL;
- return 0;
+ return ret;
}
--
2.13.0
More information about the Spice-devel
mailing list