zip-test.c: More thorough error messages
authorJohn Darrington <john@darrington.wattle.id.au>
Tue, 28 Feb 2012 21:50:25 +0000 (22:50 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Wed, 29 Feb 2012 17:26:53 +0000 (18:26 +0100)
tests/libpspp/zip-test.c

index 7a2fcb10c47db74258d7dc3996809a10435f8b13..ab55c11070dda1fbf747495092f40e44a1ec954a 100644 (file)
@@ -29,6 +29,7 @@
 #include <libpspp/zip-reader.h>
 #include <libpspp/str.h>
 
+#include <errno.h>
 #include "xalloc.h"
 \f
 /* Exit with a failure code.
@@ -67,11 +68,29 @@ main (int argc, char **argv)
       int i;
       struct string str;
       struct zip_reader *zr = zip_reader_create (argv[2], &str);
+      if ( NULL == zr)
+       {
+         fprintf (stderr, "Could not create zip reader: %s\n", ds_cstr (&str));
+         check_die ();
+       }
       for (i = 3; i < argc; ++i)
        {
          int x = 0;
-         struct zip_member *zm = zip_member_open (zr, argv[i]);
+         struct zip_member *zm ;
          FILE *fp = fopen (argv[i], "w");
+         if ( NULL == fp)
+           {
+             int e = errno;
+             fprintf (stderr, "Could not create file %s: %s\n", argv[i], strerror(e));
+             check_die ();
+           }
+         zm = zip_member_open (zr, argv[i]);
+         if ( NULL == zm)
+           {
+             fprintf (stderr, "Could not open zip member %s from archive: %s\n",
+                      argv[i], ds_cstr (&str));
+             check_die ();
+           }
 
          while ((x = zip_member_read (zm, buf, BUFSIZE)) > 0)
            {
@@ -80,7 +99,7 @@ main (int argc, char **argv)
          fclose (fp);
          if ( x < 0)
            {
-             fprintf (stderr, "Unzip failed: %s", ds_cstr (&str));
+             fprintf (stderr, "Unzip failed: %s\n", ds_cstr (&str));
              check_die ();
            }