Alexandre Julliard : winhlp32: Use explicit prototypes for the dll callbacks.

Alexandre Julliard julliard at winehq.org
Wed Oct 7 09:46:05 CDT 2009


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Oct  7 13:31:32 2009 +0200

winhlp32: Use explicit prototypes for the dll callbacks.

---

 programs/winhlp32/callback.c |   38 +++++++++++++++++++-------------------
 programs/winhlp32/macro.c    |    2 +-
 programs/winhlp32/winhelp.h  |   24 ++++++++++++++++++++++--
 3 files changed, 42 insertions(+), 22 deletions(-)

diff --git a/programs/winhlp32/callback.c b/programs/winhlp32/callback.c
index 0b3e62e..5193861 100644
--- a/programs/winhlp32/callback.c
+++ b/programs/winhlp32/callback.c
@@ -158,23 +158,23 @@ static LONG CALLBACK WHD_API(LPSTR x, WORD xx, DWORD xxx)
     return 0;
 }
 
-FARPROC Callbacks[] =
-{
-    (FARPROC)WHD_GetFSError, 
-    (FARPROC)WHD_Open, 
-    (FARPROC)WHD_Close, 
-    (FARPROC)WHD_OpenBag, 
-    (FARPROC)WHD_CloseBag,
-    (FARPROC)WHD_ReadBag,
-    (FARPROC)WHD_TellBag,
-    (FARPROC)WHD_SeekBag,
-    (FARPROC)WHD_IsEofBag, 
-    (FARPROC)WHD_SizeBag,
-    (FARPROC)WHD_Access,
-    (FARPROC)WHD_LLInfoFromBag, 
-    (FARPROC)WHD_LLInfoFromFile, 
-    (FARPROC)WHD_Error,
-    (FARPROC)WHD_ErrorString,
-    (FARPROC)WHD_GetInfo,
-    (FARPROC)WHD_API
+const struct winhelp_callbacks Callbacks =
+{
+    WHD_GetFSError,
+    WHD_Open,
+    WHD_Close,
+    WHD_OpenBag,
+    WHD_CloseBag,
+    WHD_ReadBag,
+    WHD_TellBag,
+    WHD_SeekBag,
+    WHD_IsEofBag,
+    WHD_SizeBag,
+    WHD_Access,
+    WHD_LLInfoFromBag,
+    WHD_LLInfoFromFile,
+    WHD_Error,
+    WHD_ErrorString,
+    WHD_GetInfo,
+    WHD_API
 };
diff --git a/programs/winhlp32/macro.c b/programs/winhlp32/macro.c
index fdec6b3..9fa99ec 100644
--- a/programs/winhlp32/macro.c
+++ b/programs/winhlp32/macro.c
@@ -735,7 +735,7 @@ static void CALLBACK MACRO_RegisterRoutine(LPCSTR dll_name, LPCSTR proc, LPCSTR
             dll->class = dll->handler ? (dll->handler)(DW_WHATMSG, 0, 0) : DC_NOMSG;
             WINE_TRACE("Got class %x for DLL %s\n", dll->class, dll_name);
             if (dll->class & DC_INITTERM) dll->handler(DW_INIT, 0, 0);
-            if (dll->class & DC_CALLBACKS) dll->handler(DW_CALLBACKS, (DWORD)Callbacks, 0);
+            if (dll->class & DC_CALLBACKS) dll->handler(DW_CALLBACKS, (LONG_PTR)&Callbacks, 0);
         }
         else WINE_WARN("OOM\n");
     }
diff --git a/programs/winhlp32/winhelp.h b/programs/winhlp32/winhelp.h
index e770cb5..e163d90 100644
--- a/programs/winhlp32/winhelp.h
+++ b/programs/winhlp32/winhelp.h
@@ -115,7 +115,7 @@ typedef struct tagWinHelp
 #define DW_ACTIVATE   9
 #define	DW_CALLBACKS 10
 
-typedef long (CALLBACK *WINHELP_LDLLHandler)(WORD, LONG, LONG);
+typedef LONG (CALLBACK *WINHELP_LDLLHandler)(WORD, LONG_PTR, LONG_PTR);
 
 typedef struct tagDll
 {
@@ -140,8 +140,28 @@ typedef struct
     HFONT               hButtonFont;
 } WINHELP_GLOBALS;
 
+extern const struct winhelp_callbacks
+{
+    WORD      (WINAPI *GetFSError)(void);
+    HANDLE    (WINAPI *HfsOpenSz)(LPSTR,BYTE);
+    WORD      (WINAPI *RcCloseHfs)(HANDLE);
+    HANDLE    (WINAPI *HfOpenHfs)(HANDLE,LPSTR,BYTE);
+    HANDLE    (WINAPI *RcCloseHf)(HANDLE);
+    LONG      (WINAPI *LcbReadHf)(HANDLE,BYTE*,LONG);
+    LONG      (WINAPI *LTellHf)(HANDLE);
+    LONG      (WINAPI *LSeekHf)(HANDLE,LONG,WORD);
+    BOOL      (WINAPI *FEofHf)(HANDLE);
+    LONG      (WINAPI *LcbSizeHf)(HANDLE);
+    BOOL      (WINAPI *FAccessHfs)(HANDLE,LPSTR,BYTE);
+    WORD      (WINAPI *RcLLInfoFromHf)(HANDLE,WORD,LPWORD,LPLONG,LPLONG);
+    WORD      (WINAPI *RcLLInfoFromHfs)(HANDLE,LPSTR,WORD,LPWORD,LPLONG,LPLONG);
+    void      (WINAPI *ErrorW)(int);
+    void      (WINAPI *ErrorSz)(LPSTR);
+    ULONG_PTR (WINAPI *GetInfo)(WORD,HWND);
+    LONG      (WINAPI *API)(LPSTR,WORD,DWORD);
+} Callbacks;
+
 extern WINHELP_GLOBALS Globals;
-extern FARPROC         Callbacks[];
 
 BOOL WINHELP_CreateHelpWindow(WINHELP_WNDPAGE*, int, BOOL);
 BOOL WINHELP_OpenHelpWindow(HLPFILE_PAGE* (*)(HLPFILE*, LONG, ULONG*),




More information about the wine-cvs mailing list