[ADVPACK] add 4 new functions

Robert Reif reif at earthlink.net
Sun Jan 16 08:43:10 CST 2005


Add stubs for NeedRebootInit and NeedReboot.
Add  implementations for GetVersionFromFile and GetVersionFromFileEx.
Add function prototypes to advpub.h.
Add test for GetVersionFromFile.
-------------- next part --------------
diff -u wine.cvs/dlls/advpack/advpack.c wine/dlls/advpack/advpack.c
--- wine.cvs/dlls/advpack/advpack.c	2004-12-28 12:21:48.000000000 -0500
+++ wine/dlls/advpack/advpack.c	2005-01-16 09:13:03.000000000 -0500
@@ -24,6 +24,8 @@
 #include "winbase.h"
 #include "winuser.h"
 #include "winreg.h"
+#include "winver.h"
+#include "winnls.h"
 #include "setupapi.h"
 #include "advpub.h"
 #include "wine/debug.h"
@@ -96,3 +98,77 @@
 
     return ret;
 }
+
+/***********************************************************************
+ *             NeedRebootInit  (ADVPACK.@)
+ */
+DWORD WINAPI NeedRebootInit(VOID)
+{
+    FIXME("() stub!\n");
+    return 0;
+}
+
+/***********************************************************************
+ *             NeedReboot      (ADVPACK.@)
+ */
+BOOL WINAPI NeedReboot(DWORD dwRebootCheck)
+{
+    FIXME("(0x%08lx) stub!\n", dwRebootCheck);
+    return FALSE;
+}
+
+/***********************************************************************
+ *             GetVersionFromFile      (ADVPACK.@)
+ */
+HRESULT WINAPI GetVersionFromFile( LPSTR Filename, LPDWORD MajorVer,
+                                   LPDWORD MinorVer, BOOL Version )
+{
+    TRACE("(%s, %p, %p, %d)\n", Filename, MajorVer, MinorVer, Version);
+    return GetVersionFromFileEx(Filename, MajorVer, MinorVer, Version);
+}
+
+/***********************************************************************
+ *             GetVersionFromFileEx    (ADVPACK.@)
+ */
+HRESULT WINAPI GetVersionFromFileEx( LPSTR lpszFilename, LPDWORD pdwMSVer,
+                                     LPDWORD pdwLSVer, BOOL bVersion )
+{
+    DWORD hdl, retval;
+    LPVOID pVersionInfo;
+    BOOL boolret;
+    VS_FIXEDFILEINFO *pFixedVersionInfo;
+    UINT uiLength;
+    TRACE("(%s, %p, %p, %d)\n", lpszFilename, pdwMSVer, pdwLSVer, bVersion);
+
+    if (bVersion)
+    {
+        retval = GetFileVersionInfoSizeA(lpszFilename, &hdl);
+        if (retval == 0 || hdl != 0)
+            return E_FAIL;
+
+        pVersionInfo = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, retval);
+        if (pVersionInfo == NULL)
+             return E_FAIL;
+        GetFileVersionInfoA( lpszFilename, 0, retval, pVersionInfo);
+
+        boolret = VerQueryValueA(pVersionInfo, "\\",
+                                 (LPVOID) &pFixedVersionInfo, &uiLength);
+
+        HeapFree(GetProcessHeap(), 0, pVersionInfo);
+
+        if (boolret)
+        {
+            *pdwMSVer = pFixedVersionInfo->dwFileVersionMS;
+            *pdwLSVer = pFixedVersionInfo->dwFileVersionLS;
+        }
+        else
+            return E_FAIL;
+    }
+    else
+    {
+        *pdwMSVer = GetUserDefaultUILanguage();
+        *pdwLSVer = GetACP();
+    }
+
+    return S_OK;
+}
diff -u wine.cvs/dlls/advpack/advpack.spec wine/dlls/advpack/advpack.spec
--- wine.cvs/dlls/advpack/advpack.spec	2004-12-28 12:21:48.000000000 -0500
+++ wine/dlls/advpack/advpack.spec	2005-01-16 09:08:45.000000000 -0500
@@ -10,13 +10,13 @@
 @ stub FileSaveMarkNotExist
 @ stub FileSaveRestore
 @ stub FileSaveRestoreOnINF
-@ stub GetVersionFromFile
-@ stub GetVersionFromFileEx
+@ stdcall GetVersionFromFile(str ptr ptr long)
+@ stdcall GetVersionFromFileEx(str ptr ptr long)
 @ stub IsNTAdmin
 @ stdcall LaunchINFSection(ptr ptr str long)
 @ stdcall LaunchINFSectionEx(ptr ptr str long)
-@ stub NeedReboot
-@ stub NeedRebootInit
+@ stdcall NeedReboot(long)
+@ stdcall NeedRebootInit()
 @ stub OpenINFEngine
 @ stub RebootCheckOnInstall
 @ stdcall RegInstall(ptr str ptr)
diff -u wine.cvs/dlls/advpack/Makefile.in wine/dlls/advpack/Makefile.in
--- wine.cvs/dlls/advpack/Makefile.in	2004-09-27 16:39:40.000000000 -0400
+++ wine/dlls/advpack/Makefile.in	2005-01-16 09:15:19.000000000 -0500
@@ -3,13 +3,15 @@
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = advpack.dll
-IMPORTS   = setupapi user32 kernel32 ntdll
+IMPORTS   = setupapi user32 kernel32 ntdll version
 EXTRALIBS = $(LIBUNICODE)
 
 C_SRCS = \
 	advpack.c \
 	reg.c
 
+SUBDIRS = tests
+
 @MAKE_DLL_RULES@
 
 ### Dependencies:
diff -u -N wine.cvs/dlls/advpack/tests/advpack.c wine/dlls/advpack/tests/advpack.c
--- wine.cvs/dlls/advpack/tests/advpack.c	1969-12-31 19:00:00.000000000 -0500
+++ wine/dlls/advpack/tests/advpack.c	2005-01-16 09:17:24.000000000 -0500
@@ -0,0 +1,53 @@
+/*
+ * Unit tests for advpack.dll
+ *
+ * Copyright (C) 2005 Robert Reif
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#define NONAMELESSSTRUCT
+#define NONAMELESSUNION
+#include <windows.h>
+
+#include "wine/test.h"
+#include "advpub.h"
+
+static void version_test()
+{
+    HRESULT hr;
+    DWORD major, minor;
+
+    major = minor = 0;
+    hr = GetVersionFromFile("kernel32.dll", &major, &minor, FALSE);
+    ok (hr == S_OK, "GetVersionFromFileEx(kernel32.dll) failed, returned "
+        "0x%08lx\n", hr);
+
+    trace("kernel32.dll Language ID: 0x%08lx, Codepage ID: 0x%08lx\n",
+           major, minor);
+
+    major = minor = 0;
+    hr = GetVersionFromFile("kernel32.dll", &major, &minor, TRUE);
+    ok (hr == S_OK, "GetVersionFromFileEx(kernel32.dll) failed, returned "
+        "0x%08lx\n", hr);
+
+    trace("kernel32.dll version: %d.%d.%d.%d\n", HIWORD(major), LOWORD(major),
+          HIWORD(minor), LOWORD(minor));
+}
+
+START_TEST(advpack)
+{
+    version_test();
+}
diff -u -N wine.cvs/dlls/advpack/tests/.cvsignore wine/dlls/advpack/tests/.cvsignore
--- wine.cvs/dlls/advpack/tests/.cvsignore	1969-12-31 19:00:00.000000000 -0500
+++ wine/dlls/advpack/tests/.cvsignore	2005-01-16 09:16:00.000000000 -0500
@@ -0,0 +1,3 @@
+Makefile
+advpack.ok
+testlist.c
diff -u -N wine.cvs/dlls/advpack/tests/Makefile.in wine/dlls/advpack/tests/Makefile.in
--- wine.cvs/dlls/advpack/tests/Makefile.in	1969-12-31 19:00:00.000000000 -0500
+++ wine/dlls/advpack/tests/Makefile.in	2005-01-16 09:17:59.000000000 -0500
@@ -0,0 +1,13 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+TESTDLL   = advpack.dll
+IMPORTS   = advpack user32 kernel32 version
+
+CTESTS = \
+       advpack.c
+
+ at MAKE_TEST_RULES@
+
+### Dependencies:
diff -u wine.cvs/include/advpub.h wine/include/advpub.h
--- wine.cvs/include/advpub.h	2004-09-27 16:39:40.000000000 -0400
+++ wine/include/advpub.h	2005-01-16 09:06:58.000000000 -0500
@@ -38,7 +38,11 @@
 typedef const STRTABLE CSTRTABLE;
 typedef CSTRTABLE *LPCSTRTABLE;
 
+DWORD WINAPI NeedRebootInit(VOID);
+BOOL WINAPI NeedReboot(DWORD dwRebootCheck);
 HRESULT WINAPI RegInstall(HMODULE hm, LPCSTR pszSection, LPCSTRTABLE pstTable);
+HRESULT WINAPI GetVersionFromFile(LPSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
+HRESULT WINAPI GetVersionFromFileEx(LPSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
 
 #ifdef __cplusplus
 }
diff -u wine.cvs/configure.ac wine/configure.ac
--- wine.cvs/configure.ac	2005-01-10 23:29:37.000000000 -0500
+++ wine/configure.ac	2005-01-16 09:18:35.000000000 -0500
@@ -1511,6 +1511,7 @@
 dlls/advapi32/Makefile
 dlls/advapi32/tests/Makefile
 dlls/advpack/Makefile
+dlls/advpack/tests/Makefile
 dlls/amstream/Makefile
 dlls/atl/Makefile
 dlls/avicap32/Makefile


More information about the wine-patches mailing list