diff OrthancFramework/UnitTestsSources/ZipTests.cpp @ 4354:bcfb53d1bc56

trying to uncompress one zip archive
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 07 Dec 2020 20:38:31 +0100
parents bf7b9edf6b81
children 460a71988208
line wrap: on
line diff
--- a/OrthancFramework/UnitTestsSources/ZipTests.cpp	Mon Dec 07 17:23:26 2020 +0100
+++ b/OrthancFramework/UnitTestsSources/ZipTests.cpp	Mon Dec 07 20:38:31 2020 +0100
@@ -180,3 +180,61 @@
 
   **/
 }
+
+
+
+
+
+#include "../Resources/ThirdParty/minizip/unzip.h"
+
+TEST(ZipReader, DISABLED_Basic)
+{
+  unzFile zip = unzOpen("/home/jodogne/DICOM/Demo/BRAINIX.zip");
+  printf(">> %d\n", zip);
+
+  unz_global_info info;
+  printf(">> %d\n", unzGetGlobalInfo(zip, &info));
+  printf("%d %d\n", info.number_entry, info.size_comment);
+
+  unsigned int count = 0;
+  printf(">> %d\n", unzGoToFirstFile(zip));
+  for (;;)
+  {
+    char f[1024];
+    unz_file_info64_s j;
+    unzGetCurrentFileInfo64(zip, &j, f, sizeof(f) - 1, NULL, 0, NULL, 0);
+    printf("[%s] %d %d\n", f, j.uncompressed_size, j.size_filename);
+
+
+    printf("%d\n", unzOpenCurrentFile(zip));
+
+    std::string content;
+    content.resize(j.uncompressed_size);
+    if (!content.empty())
+    {
+      printf("%d\n", unzReadCurrentFile(zip, &content[0], content.size()));
+
+      char g[1024];
+      sprintf(g, "/tmp/i/zip-%06d.dcm", count);
+      FILE* h = fopen(g, "wb");
+      fwrite(content.c_str(), content.size(), 1, h);
+      fclose(h);
+    }
+    
+    printf("%d\n", unzCloseCurrentFile(zip));
+  
+    
+    count += 1;
+    int i = unzGoToNextFile(zip);
+    if (i != 0)
+    {
+      printf("done\n");
+      break;
+    }
+  }
+
+  printf("count: %d\n", count);    
+  
+  unzClose(zip);
+}
+