Module: wine Branch: master Commit: 7ae1bb28fec6cf6098cd1927ffdc9e6e854c088d URL: http://source.winehq.org/git/wine.git/?a=commit;h=7ae1bb28fec6cf6098cd1927ff...
Author: Eric Pouech eric.pouech@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);