cabinet 2: Keep track of the uncompressed file size

James Hawkins truiken at gmail.com
Thu Aug 23 16:21:46 CDT 2007


Hi,

Changelog:
* Keep track of the uncompressed file size.

 dlls/cabinet/cabinet_main.c  |    4 ++++
 dlls/cabinet/tests/extract.c |   40 ++++++++--------------------------------
 2 files changed, 12 insertions(+), 32 deletions(-)

-- 
James Hawkins
-------------- next part --------------
diff --git a/dlls/cabinet/cabinet_main.c b/dlls/cabinet/cabinet_main.c
index aa46cf0..933b85a 100644
--- a/dlls/cabinet/cabinet_main.c
+++ b/dlls/cabinet/cabinet_main.c
@@ -201,6 +201,8 @@ static INT_PTR fdi_notify_extract(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pf
             szDirectory = HeapAlloc(GetProcessHeap(), 0, dwSize);
             lstrcpynA(szDirectory, szFullPath, dwSize);
 
+            pDestination->FileSize += pfdin->cb;
+
             if (pDestination->Operation & EXTRACT_FILLFILELIST)
             {
                 fileList = &pDestination->FileList;
@@ -345,6 +347,8 @@ HRESULT WINAPI Extract(SESSION *dest, LPCSTR szCabName)
         path = NULL;
     }
 
+    dest->FileSize = 0;
+
     if (!FDICopy(hfdi, name, path, 0,
          fdi_notify_extract, NULL, dest))
         res = E_FAIL;
diff --git a/dlls/cabinet/tests/extract.c b/dlls/cabinet/tests/extract.c
index b9df804..f622b4e 100644
--- a/dlls/cabinet/tests/extract.c
+++ b/dlls/cabinet/tests/extract.c
@@ -342,10 +342,7 @@ static void test_Extract(void)
     session.Operation = EXTRACT_FILLFILELIST | EXTRACT_EXTRACTFILES;
     res = pExtract(&session, "extract.cab");
     ok(res == S_OK, "Expected S_OK, got %d\n", res);
-    todo_wine
-    {
-        ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
-    }
+    ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
     ok(session.Error.erfOper == FDIERROR_NONE,
        "Expected FDIERROR_NONE, got %d\n", session.Error.erfOper);
     ok(session.Error.erfType == 0, "Expected 0, got %d\n", session.Error.erfType);
@@ -374,10 +371,7 @@ static void test_Extract(void)
     session.Operation = EXTRACT_FILLFILELIST;
     res = pExtract(&session, "extract.cab");
     ok(res == S_OK, "Expected S_OK, got %d\n", res);
-    todo_wine
-    {
-        ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
-    }
+    ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
     ok(session.Error.erfOper == FDIERROR_NONE,
        "Expected FDIERROR_NONE, got %d\n", session.Error.erfOper);
     ok(session.Error.erfType == 0, "Expected 0, got %d\n", session.Error.erfType);
@@ -404,10 +398,7 @@ static void test_Extract(void)
     session.Operation = EXTRACT_EXTRACTFILES;
     res = pExtract(&session, "extract.cab");
     ok(res == S_OK, "Expected S_OK, got %d\n", res);
-    todo_wine
-    {
-        ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
-    }
+    ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
     ok(session.Error.erfOper == FDIERROR_NONE,
        "Expected FDIERROR_NONE, got %d\n", session.Error.erfOper);
     ok(session.Error.erfType == 0, "Expected 0, got %d\n", session.Error.erfType);
@@ -434,10 +425,7 @@ static void test_Extract(void)
     /* Extract does not extract files if the dest dir does not exist */
     res = pExtract(&session, "extract.cab");
     ok(res == S_OK, "Expected S_OK, got %d\n", res);
-    todo_wine
-    {
-        ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
-    }
+    ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
     ok(session.Error.erfOper == FDIERROR_NONE,
        "Expected FDIERROR_NONE, got %d\n", session.Error.erfOper);
     ok(session.Error.erfType == 0, "Expected 0, got %d\n", session.Error.erfType);
@@ -464,10 +452,7 @@ static void test_Extract(void)
     CreateDirectoryA("dest", NULL);
     res = pExtract(&session, "extract.cab");
     ok(res == S_OK, "Expected S_OK, got %d\n", res);
-    todo_wine
-    {
-        ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
-    }
+    ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
     ok(session.Error.erfOper == FDIERROR_NONE,
        "Expected FDIERROR_NONE, got %d\n", session.Error.erfOper);
     ok(session.Error.erfType == 0, "Expected 0, got %d\n", session.Error.erfType);
@@ -496,10 +481,7 @@ static void test_Extract(void)
     session.FileList = NULL;
     res = pExtract(&session, "extract.cab");
     ok(res == S_OK, "Expected S_OK, got %d\n", res);
-    todo_wine
-    {
-        ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
-    }
+    ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
     ok(session.Error.erfOper == FDIERROR_NONE,
        "Expected FDIERROR_NONE, got %d\n", session.Error.erfOper);
     ok(session.Error.erfType == 0, "Expected 0, got %d\n", session.Error.erfType);
@@ -527,10 +509,7 @@ static void test_Extract(void)
     session.Operation = 0;
     res = pExtract(&session, "extract.cab");
     ok(res == S_OK, "Expected S_OK, got %d\n", res);
-    todo_wine
-    {
-        ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
-    }
+    ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
     ok(session.Error.erfOper == FDIERROR_NONE,
        "Expected FDIERROR_NONE, got %d\n", session.Error.erfOper);
     ok(session.Error.erfType == 0, "Expected 0, got %d\n", session.Error.erfType);
@@ -558,10 +537,7 @@ static void test_Extract(void)
     session.FilterList = session.FileList;
     res = pExtract(&session, "extract.cab");
     ok(res == S_OK, "Expected S_OK, got %d\n", res);
-    todo_wine
-    {
-        ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
-    }
+    ok(session.FileSize == 40, "Expected 40, got %d\n", session.FileSize);
     ok(session.Error.erfOper == FDIERROR_NONE,
        "Expected FDIERROR_NONE, got %d\n", session.Error.erfOper);
     ok(session.Error.erfType == 0, "Expected 0, got %d\n", session.Error.erfType);
-- 
1.4.4.2


More information about the wine-patches mailing list