Paul Vriens : winetest: Put dll version information in the report.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Aug 24 05:24:41 CDT 2007


Module: wine
Branch: master
Commit: d0ce7ec59902abab0d4c88407b0e6dda92f6dfc3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d0ce7ec59902abab0d4c88407b0e6dda92f6dfc3

Author: Paul Vriens <paul.vriens.wine at gmail.com>
Date:   Thu Aug 23 18:28:23 2007 +0200

winetest: Put dll version information in the report.

---

 programs/winetest/Makefile.in |    2 +-
 programs/winetest/main.c      |   35 +++++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/programs/winetest/Makefile.in b/programs/winetest/Makefile.in
index 01111f4..30d29ff 100644
--- a/programs/winetest/Makefile.in
+++ b/programs/winetest/Makefile.in
@@ -4,7 +4,7 @@ SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = winetest.exe
 APPMODE   = -mconsole
-IMPORTS   = comctl32 user32 gdi32 wsock32 kernel32
+IMPORTS   = comctl32 version user32 gdi32 wsock32 kernel32
 
 C_SRCS = \
 	gui.c \
diff --git a/programs/winetest/main.c b/programs/winetest/main.c
index 5d5462b..54574b1 100644
--- a/programs/winetest/main.c
+++ b/programs/winetest/main.c
@@ -62,6 +62,39 @@ static struct rev_info *rev_infos = NULL;
 static const char whitespace[] = " \t\r\n";
 static const char testexe[] = "_test.exe";
 
+static char * get_file_version(char * file_name)
+{
+    static char version[32];
+    DWORD size;
+    DWORD handle;
+
+    size = GetFileVersionInfoSizeA(file_name, &handle);
+    if (size) {
+        char * data = xmalloc(size);
+        if (data) {
+            if (GetFileVersionInfoA(file_name, handle, size, data)) {
+                static char backslash[] = "\\";
+                VS_FIXEDFILEINFO *pFixedVersionInfo;
+                UINT len;
+                if (VerQueryValueA(data, backslash, (LPVOID *)&pFixedVersionInfo, &len)) {
+                    sprintf(version, "%d.%d.%d.%d",
+                            pFixedVersionInfo->dwFileVersionMS >> 16,
+                            pFixedVersionInfo->dwFileVersionMS & 0xffff,
+                            pFixedVersionInfo->dwFileVersionLS >> 16,
+                            pFixedVersionInfo->dwFileVersionLS & 0xffff);
+                } else
+                    sprintf(version, "version not available");
+            } else
+                sprintf(version, "unknown");
+            free(data);
+        } else
+            sprintf(version, "failed");
+    } else
+        sprintf(version, "version not available");
+
+    return version;
+}
+
 static int running_under_wine (void)
 {
     HMODULE module = GetModuleHandleA("ntdll.dll");
@@ -448,6 +481,8 @@ extract_test_proc (HMODULE hModule, LPCTSTR lpszType,
     }
     FreeLibrary(dll);
 
+    xprintf ("    %s=%s\n", dllname, get_file_version(dllname));
+
     get_subtests( tempdir, &wine_tests[nr_of_files], lpszName );
     nr_of_tests += wine_tests[nr_of_files].subtest_count;
     nr_of_files++;




More information about the wine-cvs mailing list