Eric Pouech : winhelp: Fixed JumpId and JumpKeyword with correct signature and implementation.

Alexandre Julliard julliard at winehq.org
Wed Apr 23 07:59:31 CDT 2008


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

Author: Eric Pouech <eric.pouech at orange.fr>
Date:   Tue Apr 22 22:00:32 2008 +0200

winhelp: Fixed JumpId and JumpKeyword with correct signature and implementation.

---

 programs/winhelp/macro.c |   31 ++++++++++++++++++++++++-------
 programs/winhelp/macro.h |    2 +-
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/programs/winhelp/macro.c b/programs/winhelp/macro.c
index 85b19ce..2ff1ad2 100644
--- a/programs/winhelp/macro.c
+++ b/programs/winhelp/macro.c
@@ -110,7 +110,7 @@ static struct MacroDesc MACRO_Builtins[] = {
     {"JumpContext",         "JC", 0, "SSU",    (FARPROC)MACRO_JumpContext},
     {"JumpHash",            "JH", 0, "SSU",    (FARPROC)MACRO_JumpHash},
     {"JumpHelpOn",          NULL, 0, "",       (FARPROC)MACRO_JumpHelpOn},
-    {"JumpID",              "JI", 0, "SSS",    (FARPROC)MACRO_JumpID},
+    {"JumpID",              "JI", 0, "SS",     (FARPROC)MACRO_JumpID},
     {"JumpKeyword",         "JK", 0, "SSS",    (FARPROC)MACRO_JumpKeyword},
     {"KLink",               "KL", 0, "SUSS",   (FARPROC)MACRO_KLink},
     {"Menu",                "MU", 0, "",       (FARPROC)MACRO_Menu},
@@ -654,15 +654,32 @@ void CALLBACK MACRO_JumpHelpOn(void)
     WINE_FIXME("()\n");
 }
 
-/* FIXME: those two macros are wrong
- * they should only contain 2 strings, path & window are coded as path>window
- */
-void CALLBACK MACRO_JumpID(LPCSTR lpszPath, LPCSTR lpszWindow, LPCSTR topic_id)
+void CALLBACK MACRO_JumpID(LPCSTR lpszPathWindow, LPCSTR topic_id)
 {
-    WINE_TRACE("(\"%s\", \"%s\", \"%s\")\n", lpszPath, lpszWindow, topic_id);
-    MACRO_JumpHash(lpszPath, lpszWindow, HLPFILE_Hash(topic_id));
+    LPSTR       ptr;
+
+    WINE_TRACE("(\"%s\", \"%s\")\n", lpszPathWindow, topic_id);
+    if ((ptr = strchr(lpszPathWindow, '>')) != NULL)
+    {
+        LPSTR   tmp;
+        size_t  sz = ptr - lpszPathWindow;
+
+        tmp = HeapAlloc(GetProcessHeap(), 0, sz + 1);
+        if (tmp)
+        {
+            memcpy(tmp, lpszPathWindow, sz);
+            tmp[sz] = '\0';
+            MACRO_JumpHash(tmp, ptr + 1, HLPFILE_Hash(topic_id));
+            HeapFree(GetProcessHeap(), 0, tmp);
+        }
+    }
+    else
+        MACRO_JumpHash(lpszPathWindow, NULL, HLPFILE_Hash(topic_id));
 }
 
+/* FIXME: this macros is wrong
+ * it should only contain 2 strings, path & window are coded as path>window
+ */
 void CALLBACK MACRO_JumpKeyword(LPCSTR lpszPath, LPCSTR lpszWindow, LPCSTR keyword)
 {
     WINE_FIXME("(\"%s\", \"%s\", \"%s\")\n", lpszPath, lpszWindow, keyword);
diff --git a/programs/winhelp/macro.h b/programs/winhelp/macro.h
index b8f736b..ee1fd69 100644
--- a/programs/winhelp/macro.h
+++ b/programs/winhelp/macro.h
@@ -98,7 +98,7 @@ void CALLBACK MACRO_JumpContents(LPCSTR, LPCSTR);
 void CALLBACK MACRO_JumpContext(LPCSTR, LPCSTR, LONG);
 void CALLBACK MACRO_JumpHash(LPCSTR, LPCSTR, LONG);
 void CALLBACK MACRO_JumpHelpOn(void);
-void CALLBACK MACRO_JumpID(LPCSTR, LPCSTR, LPCSTR);
+void CALLBACK MACRO_JumpID(LPCSTR, LPCSTR);
 void CALLBACK MACRO_JumpKeyword(LPCSTR, LPCSTR, LPCSTR);
 void CALLBACK MACRO_KLink(LPCSTR, LONG, LPCSTR, LPCSTR);
 void CALLBACK MACRO_Menu(void);




More information about the wine-cvs mailing list