winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
February 2007
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
4 participants
839 discussions
Start a n
N
ew thread
Andrew Talbot : wineps.drv: Constify some variables.
by Alexandre Julliard
26 Feb '07
26 Feb '07
Module: wine Branch: master Commit: a46ad829e43d70f405c86a948e6a05dabae55b0f URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a46ad829e43d70f405c86a948…
Author: Andrew Talbot <Andrew.Talbot(a)talbotville.com> Date: Fri Feb 23 16:22:04 2007 +0000 wineps.drv: Constify some variables. --- dlls/wineps.drv/init.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/wineps.drv/init.c b/dlls/wineps.drv/init.c index 8ec88b5..1bd56ca 100644 --- a/dlls/wineps.drv/init.c +++ b/dlls/wineps.drv/init.c @@ -53,7 +53,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(psdrv); static void *cupshandle = NULL; #endif -static PSDRV_DEVMODEA DefaultDevmode = +static const PSDRV_DEVMODEA DefaultDevmode = { { /* dmPublic */ /* dmDeviceName */ "Wine PostScript Driver", @@ -109,7 +109,7 @@ HINSTANCE PSDRV_hInstance = 0; HANDLE PSDRV_Heap = 0; static HFONT PSDRV_DefaultFont = 0; -static LOGFONTA DefaultLogFont = { +static const LOGFONTA DefaultLogFont = { 100, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, 0, 0, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, "" };
1
0
0
0
Andrew Talbot : version: Constify a variable.
by Alexandre Julliard
26 Feb '07
26 Feb '07
Module: wine Branch: master Commit: b940df14087690eee260727f3be403c5ade0e763 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b940df14087690eee260727f3…
Author: Andrew Talbot <Andrew.Talbot(a)talbotville.com> Date: Fri Feb 23 16:21:21 2007 +0000 version: Constify a variable. --- dlls/version/info.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dlls/version/info.c b/dlls/version/info.c index 84a7eed..56c9cd9 100644 --- a/dlls/version/info.c +++ b/dlls/version/info.c @@ -46,7 +46,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(ver); * Added this function to clean up the code. * *****************************************************************************/ -static void print_vffi_debug(VS_FIXEDFILEINFO *vffi) +static void print_vffi_debug(const VS_FIXEDFILEINFO *vffi) { BOOL versioned_printer = FALSE;
1
0
0
0
Hans Leidekker : ws2_32: Handle NULL argument in inet_addr.
by Alexandre Julliard
26 Feb '07
26 Feb '07
Module: wine Branch: master Commit: bde4e36208982d1ca4204d780e92bf62c7ea1249 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=bde4e36208982d1ca4204d780…
Author: Hans Leidekker <hans(a)it.vu.nl> Date: Fri Feb 23 15:41:10 2007 +0100 ws2_32: Handle NULL argument in inet_addr. --- dlls/ws2_32/socket.c | 1 + dlls/ws2_32/tests/sock.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index e7a5846..1d007a9 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2175,6 +2175,7 @@ int WINAPI WSAHtons(SOCKET s, WS_u_short hostshort, WS_u_short *lpnetshort) */ WS_u_long WINAPI WS_inet_addr(const char *cp) { + if (!cp) return INADDR_NONE; return inet_addr(cp); } diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index 970e27a..c5bf766 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -1491,7 +1491,7 @@ done: closesocket(server_socket); } -static void test_extendedSocketOptions() +static void test_extendedSocketOptions(void) { WSADATA wsa; SOCKET sock; @@ -1565,7 +1565,7 @@ static void test_extendedSocketOptions() WSACleanup(); } -static void test_getsockname() +static void test_getsockname(void) { WSADATA wsa; SOCKET sock; @@ -1612,6 +1612,14 @@ static void test_getsockname() WSACleanup(); } +static void test_inet_addr(void) +{ + u_long addr; + + addr = inet_addr(NULL); + ok(addr == INADDR_NONE, "inet_addr succeeded unexpectedly\n"); +} + /**************** Main program ***************/ START_TEST( sock ) @@ -1643,6 +1651,7 @@ START_TEST( sock ) test_select(); test_accept(); test_getsockname(); + test_inet_addr(); Exit(); }
1
0
0
0
Alexandre Julliard : cmd: Remove execute permission on source files.
by Alexandre Julliard
26 Feb '07
26 Feb '07
Module: wine Branch: master Commit: cdca32c12ede98c87035ea432aa54a1cb829b576 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=cdca32c12ede98c87035ea432…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Feb 23 12:51:55 2007 +0100 cmd: Remove execute permission on source files. --- 0 files changed, 0 insertions(+), 0 deletions(-) diff --git a/programs/cmd/batch.c b/programs/cmd/batch.c old mode 100755 new mode 100644 diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c old mode 100755 new mode 100644 diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h old mode 100755 new mode 100644 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c old mode 100755 new mode 100644
1
0
0
0
Bang Jun-Young : README: Fully revise Korean translation.
by Alexandre Julliard
23 Feb '07
23 Feb '07
Module: wine Branch: master Commit: cbd54cfd6a89a9c60eeadae4652cfa9505819b43 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=cbd54cfd6a89a9c60eeadae46…
Author: Bang Jun-Young <junyoung(a)mogua.com> Date: Thu Feb 22 18:36:17 2007 +0900 README: Fully revise Korean translation. --- documentation/README.ko | 263 +++++++++++++++++++++++------------------------ 1 files changed, 128 insertions(+), 135 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=cbd54cfd6a89a9c60eead…
1
0
0
0
Jacek Caban : hhctrl.ocx: Added beginning #SYSTEM parsing code.
by Alexandre Julliard
23 Feb '07
23 Feb '07
Module: wine Branch: master Commit: 5ed9be800d0469786db85d9e08989cf2d73ff174 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=5ed9be800d0469786db85d9e0…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Fri Feb 23 03:31:13 2007 +0100 hhctrl.ocx: Added beginning #SYSTEM parsing code. --- dlls/hhctrl.ocx/chm.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 79 insertions(+), 0 deletions(-) diff --git a/dlls/hhctrl.ocx/chm.c b/dlls/hhctrl.ocx/chm.c index 83599a1..d0498ff 100644 --- a/dlls/hhctrl.ocx/chm.c +++ b/dlls/hhctrl.ocx/chm.c @@ -72,6 +72,80 @@ static LPCSTR GetChmString(CHMInfo *chm, DWORD offset) return chm->strings[offset >> BLOCK_BITS] + (offset & BLOCK_MASK); } +static BOOL ReadChmSystem(CHMInfo *chm) +{ + IStream *stream; + DWORD ver=0xdeadbeef, read, buf_size; + char *buf; + HRESULT hres; + + struct { + WORD code; + WORD len; + } entry; + + static const WCHAR wszSYSTEM[] = {'#','S','Y','S','T','E','M',0}; + + hres = IStorage_OpenStream(chm->pStorage, wszSYSTEM, NULL, STGM_READ, 0, &stream); + if(FAILED(hres)) { + WARN("Could not open #SYSTEM stream: %08x\n", hres); + return FALSE; + } + + IStream_Read(stream, &ver, sizeof(ver), &read); + TRACE("version is %x\n", ver); + + buf = hhctrl_alloc(8*sizeof(DWORD)); + buf_size = 8*sizeof(DWORD); + + while(1) { + hres = IStream_Read(stream, &entry, sizeof(entry), &read); + if(hres != S_OK) + break; + + if(entry.len > buf_size) + buf = hhctrl_realloc(buf, buf_size=entry.len); + + hres = IStream_Read(stream, buf, entry.len, &read); + if(hres != S_OK) + break; + + switch(entry.code) { + case 0x2: + TRACE("Default topic is %s\n", debugstr_an(buf, entry.len)); + break; + case 0x3: + TRACE("Title is %s\n", debugstr_an(buf, entry.len)); + break; + case 0x5: + TRACE("Default window is %s\n", debugstr_an(buf, entry.len)); + break; + case 0x6: + TRACE("Compiled file is %s\n", debugstr_an(buf, entry.len)); + break; + case 0x9: + TRACE("Version is %s\n", debugstr_an(buf, entry.len)); + break; + case 0xa: + TRACE("Time is %08x\n", *(DWORD*)buf); + break; + case 0xc: + TRACE("Number of info types: %d\n", *(DWORD*)buf); + break; + case 0xf: + TRACE("Check sum: %x\n", *(DWORD*)buf); + break; + default: + TRACE("unhandled code %x, size %x\n", entry.code, entry.len); + } + } + + hhctrl_free(buf); + IStream_Release(stream); + + return SUCCEEDED(hres); +} + /* Loads the HH_WINTYPE data from the CHM file * * FIXME: There may be more than one window type in the file, so @@ -158,6 +232,11 @@ CHMInfo *OpenCHM(LPCWSTR szFile) return CloseCHM(ret); } + if(!ReadChmSystem(ret)) { + WARN("Could not read #SYSTEM\n"); + return CloseCHM(ret); + } + return ret; }
1
0
0
0
Jacek Caban : hhctrl.ocx: Handle memory allocation in OpenCHM and CloseCHM.
by Alexandre Julliard
23 Feb '07
23 Feb '07
Module: wine Branch: master Commit: 1711c3a5c473d5b011e67f32a25b7fad9645df73 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1711c3a5c473d5b011e67f32a…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Fri Feb 23 03:30:38 2007 +0100 hhctrl.ocx: Handle memory allocation in OpenCHM and CloseCHM. --- dlls/hhctrl.ocx/chm.c | 60 +++++++++++++++++++++++++++------------------ dlls/hhctrl.ocx/help.c | 15 ++++++----- dlls/hhctrl.ocx/hhctrl.h | 4 +- 3 files changed, 46 insertions(+), 33 deletions(-) diff --git a/dlls/hhctrl.ocx/chm.c b/dlls/hhctrl.ocx/chm.c index 9fc98c6..83599a1 100644 --- a/dlls/hhctrl.ocx/chm.c +++ b/dlls/hhctrl.ocx/chm.c @@ -127,48 +127,60 @@ done: } /* Opens the CHM file for reading */ -BOOL CHM_OpenCHM(CHMInfo *pChmInfo, LPCWSTR szFile) +CHMInfo *OpenCHM(LPCWSTR szFile) { HRESULT hres; static const WCHAR wszSTRINGS[] = {'#','S','T','R','I','N','G','S',0}; - pChmInfo->szFile = szFile; + CHMInfo *ret = hhctrl_alloc_zero(sizeof(CHMInfo)); - if (FAILED(CoCreateInstance(&CLSID_ITStorage, NULL, CLSCTX_INPROC_SERVER, - &IID_IITStorage, (void **) &pChmInfo->pITStorage))) - return FALSE; + ret->szFile = szFile; - if (FAILED(IITStorage_StgOpenStorage(pChmInfo->pITStorage, szFile, NULL, - STGM_READ | STGM_SHARE_DENY_WRITE, - NULL, 0, &pChmInfo->pStorage))) - return FALSE; + hres = CoCreateInstance(&CLSID_ITStorage, NULL, CLSCTX_INPROC_SERVER, + &IID_IITStorage, (void **) &ret->pITStorage) ; + if(FAILED(hres)) { + WARN("Could not create ITStorage: %08x\n", hres); + return CloseCHM(ret); + } - hres = IStorage_OpenStream(pChmInfo->pStorage, wszSTRINGS, NULL, STGM_READ, 0, - &pChmInfo->strings_stream); + hres = IITStorage_StgOpenStorage(ret->pITStorage, szFile, NULL, + STGM_READ | STGM_SHARE_DENY_WRITE, NULL, 0, &ret->pStorage); if(FAILED(hres)) { - WARN("Could not open #STRINGS stream: %08x\n", hres); - return FALSE; + WARN("Could not open storage: %08x\n", hres); + return CloseCHM(ret); } - pChmInfo->strings = NULL; - pChmInfo->strings_size = 0; + hres = IStorage_OpenStream(ret->pStorage, wszSTRINGS, NULL, STGM_READ, 0, + &ret->strings_stream); + if(FAILED(hres)) { + WARN("Could not open #STRINGS stream: %08x\n", hres); + return CloseCHM(ret); + } - return TRUE; + return ret; } -void CHM_CloseCHM(CHMInfo *pCHMInfo) +CHMInfo *CloseCHM(CHMInfo *chm) { - IITStorage_Release(pCHMInfo->pITStorage); - IStorage_Release(pCHMInfo->pStorage); - IStream_Release(pCHMInfo->strings_stream); + if(chm->pITStorage) + IITStorage_Release(chm->pITStorage); - if(pCHMInfo->strings_size) { + if(chm->pStorage) + IStorage_Release(chm->pStorage); + + if(chm->strings_stream) + IStream_Release(chm->strings_stream); + + if(chm->strings_size) { int i; - for(i=0; i<pCHMInfo->strings_size; i++) - hhctrl_free(pCHMInfo->strings[i]); + for(i=0; i<chm->strings_size; i++) + hhctrl_free(chm->strings[i]); } - hhctrl_free(pCHMInfo->strings); + hhctrl_free(chm->strings); + hhctrl_free(chm); + + return NULL; } diff --git a/dlls/hhctrl.ocx/help.c b/dlls/hhctrl.ocx/help.c index 0e5d4bd..e018c14 100644 --- a/dlls/hhctrl.ocx/help.c +++ b/dlls/hhctrl.ocx/help.c @@ -800,10 +800,7 @@ static void HH_Close(HHInfo *pHHInfo) hhctrl_free(pHHInfo->pHHWinType); if (pHHInfo->pCHMInfo) - { - CHM_CloseCHM(pHHInfo->pCHMInfo); - hhctrl_free(pHHInfo->pCHMInfo); - } + CloseCHM(pHHInfo->pCHMInfo); if (pHHInfo->pWBInfo) { @@ -816,12 +813,16 @@ static HHInfo *HH_OpenHH(LPWSTR filename) { HHInfo *pHHInfo = hhctrl_alloc_zero(sizeof(HHInfo)); + pHHInfo->pCHMInfo = OpenCHM(filename); + if(!pHHInfo->pCHMInfo) { + HH_Close(pHHInfo); + return NULL; + } + pHHInfo->pHHWinType = hhctrl_alloc_zero(sizeof(HH_WINTYPEW)); - pHHInfo->pCHMInfo = hhctrl_alloc(sizeof(CHMInfo)); pHHInfo->pWBInfo = hhctrl_alloc(sizeof(WBInfo)); - if (!CHM_OpenCHM(pHHInfo->pCHMInfo, filename) - || !CHM_LoadWinTypeFromCHM(pHHInfo->pCHMInfo, pHHInfo->pHHWinType)) { + if (!CHM_LoadWinTypeFromCHM(pHHInfo->pCHMInfo, pHHInfo->pHHWinType)) { HH_Close(pHHInfo); return NULL; } diff --git a/dlls/hhctrl.ocx/hhctrl.h b/dlls/hhctrl.ocx/hhctrl.h index 355fc02..23803b1 100644 --- a/dlls/hhctrl.ocx/hhctrl.h +++ b/dlls/hhctrl.ocx/hhctrl.h @@ -70,9 +70,9 @@ void WB_UnEmbedBrowser(WBInfo *pWBInfo); void WB_ResizeBrowser(WBInfo *pWBInfo, DWORD dwWidth, DWORD dwHeight); void WB_DoPageAction(WBInfo *pWBInfo, DWORD dwAction); -BOOL CHM_OpenCHM(CHMInfo *pCHMInfo, LPCWSTR szFile); +CHMInfo *OpenCHM(LPCWSTR szFile); BOOL CHM_LoadWinTypeFromCHM(CHMInfo *pCHMInfo, HH_WINTYPEW *pHHWinType); -void CHM_CloseCHM(CHMInfo *pCHMInfo); +CHMInfo *CloseCHM(CHMInfo *pCHMInfo); /* memory allocation functions */
1
0
0
0
Jacek Caban : hhctrl.ocx: Move HH_OpenCHM implementation to HH_Open.
by Alexandre Julliard
23 Feb '07
23 Feb '07
Module: wine Branch: master Commit: 976f2db58d780e3cf082daae5abf86b97195e2a0 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=976f2db58d780e3cf082daae5…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Fri Feb 23 03:30:02 2007 +0100 hhctrl.ocx: Move HH_OpenCHM implementation to HH_Open. --- dlls/hhctrl.ocx/help.c | 34 +++++++++++++--------------------- 1 files changed, 13 insertions(+), 21 deletions(-) diff --git a/dlls/hhctrl.ocx/help.c b/dlls/hhctrl.ocx/help.c index 6b40baa..0e5d4bd 100644 --- a/dlls/hhctrl.ocx/help.c +++ b/dlls/hhctrl.ocx/help.c @@ -48,7 +48,6 @@ typedef struct tagHHInfo HH_WINTYPEW *pHHWinType; CHMInfo *pCHMInfo; WBInfo *pWBInfo; - LPWSTR szCmdLine; HWND hwndTabCtrl; HWND hwndSizeBar; HFONT hFont; @@ -778,18 +777,6 @@ static BOOL HH_CreateViewer(HHInfo *pHHInfo) return TRUE; } -static HHInfo *HH_OpenHH(LPWSTR szCmdLine) -{ - HHInfo *pHHInfo = hhctrl_alloc_zero(sizeof(HHInfo)); - - pHHInfo->pHHWinType = hhctrl_alloc_zero(sizeof(HH_WINTYPEW)); - pHHInfo->pCHMInfo = hhctrl_alloc(sizeof(CHMInfo)); - pHHInfo->pWBInfo = hhctrl_alloc(sizeof(WBInfo)); - pHHInfo->szCmdLine = szCmdLine; - - return pHHInfo; -} - static void HH_Close(HHInfo *pHHInfo) { if (!pHHInfo) @@ -811,7 +798,6 @@ static void HH_Close(HHInfo *pHHInfo) } hhctrl_free(pHHInfo->pHHWinType); - hhctrl_free(pHHInfo->szCmdLine); if (pHHInfo->pCHMInfo) { @@ -826,15 +812,21 @@ static void HH_Close(HHInfo *pHHInfo) } } -static BOOL HH_OpenCHM(HHInfo *pHHInfo) +static HHInfo *HH_OpenHH(LPWSTR filename) { - if (!CHM_OpenCHM(pHHInfo->pCHMInfo, pHHInfo->szCmdLine)) - return FALSE; + HHInfo *pHHInfo = hhctrl_alloc_zero(sizeof(HHInfo)); - if (!CHM_LoadWinTypeFromCHM(pHHInfo->pCHMInfo, pHHInfo->pHHWinType)) - return FALSE; + pHHInfo->pHHWinType = hhctrl_alloc_zero(sizeof(HH_WINTYPEW)); + pHHInfo->pCHMInfo = hhctrl_alloc(sizeof(CHMInfo)); + pHHInfo->pWBInfo = hhctrl_alloc(sizeof(WBInfo)); - return TRUE; + if (!CHM_OpenCHM(pHHInfo->pCHMInfo, filename) + || !CHM_LoadWinTypeFromCHM(pHHInfo->pCHMInfo, pHHInfo->pHHWinType)) { + HH_Close(pHHInfo); + return NULL; + } + + return pHHInfo; } /* FIXME: Check szCmdLine for bad arguments */ @@ -847,7 +839,7 @@ int WINAPI doWinMain(HINSTANCE hInstance, LPSTR szCmdLine) return -1; pHHInfo = HH_OpenHH(strdupAtoW(szCmdLine)); - if (!pHHInfo || !HH_OpenCHM(pHHInfo) || !HH_CreateViewer(pHHInfo)) + if (!pHHInfo || !HH_CreateViewer(pHHInfo)) { OleUninitialize(); return -1;
1
0
0
0
Jacek Caban : hhctrl.ocx: Use hhctrl.ocx's HINSTANCE.
by Alexandre Julliard
23 Feb '07
23 Feb '07
Module: wine Branch: master Commit: 0262fb54891b0831d88d6a6e229fd53fa19fdec6 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0262fb54891b0831d88d6a6e2…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Feb 22 22:57:40 2007 +0100 hhctrl.ocx: Use hhctrl.ocx's HINSTANCE. --- dlls/hhctrl.ocx/help.c | 33 +++++++++++++++------------------ 1 files changed, 15 insertions(+), 18 deletions(-) diff --git a/dlls/hhctrl.ocx/help.c b/dlls/hhctrl.ocx/help.c index cfb4b90..6b40baa 100644 --- a/dlls/hhctrl.ocx/help.c +++ b/dlls/hhctrl.ocx/help.c @@ -48,7 +48,6 @@ typedef struct tagHHInfo HH_WINTYPEW *pHHWinType; CHMInfo *pCHMInfo; WBInfo *pWBInfo; - HINSTANCE hInstance; LPWSTR szCmdLine; HWND hwndTabCtrl; HWND hwndSizeBar; @@ -196,7 +195,7 @@ static void HH_RegisterSizeBarClass(HHInfo *pHHInfo) wcex.lpfnWndProc = (WNDPROC)SizeBar_WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; - wcex.hInstance = pHHInfo->hInstance; + wcex.hInstance = hhctrl_hinstance; wcex.hIcon = LoadIconW(NULL, (LPCWSTR)IDI_APPLICATION); wcex.hCursor = LoadCursorW(NULL, (LPCWSTR)IDC_SIZEWE); wcex.hbrBackground = (HBRUSH)(COLOR_MENU + 1); @@ -233,7 +232,7 @@ static BOOL HH_AddSizeBar(HHInfo *pHHInfo) hWnd = CreateWindowExW(dwExStyles, szSizeBarClass, szEmpty, dwStyles, rc.left, rc.top, rc.right, rc.bottom, - hwndParent, NULL, pHHInfo->hInstance, NULL); + hwndParent, NULL, hhctrl_hinstance, NULL); if (!hWnd) return FALSE; @@ -303,7 +302,7 @@ static void HH_RegisterChildWndClass(HHInfo *pHHInfo) wcex.lpfnWndProc = (WNDPROC)Child_WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; - wcex.hInstance = pHHInfo->hInstance; + wcex.hInstance = hhctrl_hinstance; wcex.hIcon = LoadIconW(NULL, (LPCWSTR)IDI_APPLICATION); wcex.hCursor = LoadCursorW(NULL, (LPCWSTR)IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); @@ -437,7 +436,7 @@ static BOOL HH_AddToolbar(HHInfo *pHHInfo) hToolbar = CreateWindowExW(dwExStyles, TOOLBARCLASSNAMEW, NULL, dwStyles, 0, 0, 0, 0, hwndParent, NULL, - pHHInfo->hInstance, NULL); + hhctrl_hinstance, NULL); if (!hToolbar) return FALSE; @@ -520,7 +519,7 @@ static BOOL HH_AddNavigationPane(HHInfo *pHHInfo) hWnd = CreateWindowExW(dwExStyles, szChildClass, szEmpty, dwStyles, rc.left, rc.top, rc.right, rc.bottom, - hwndParent, NULL, pHHInfo->hInstance, NULL); + hwndParent, NULL, hhctrl_hinstance, NULL); if (!hWnd) return FALSE; @@ -528,21 +527,21 @@ static BOOL HH_AddNavigationPane(HHInfo *pHHInfo) 0, TAB_TOP_PADDING, rc.right - TAB_RIGHT_PADDING, rc.bottom - TAB_TOP_PADDING, - hWnd, NULL, pHHInfo->hInstance, NULL); + hWnd, NULL, hhctrl_hinstance, NULL); if (!hwndTabCtrl) return FALSE; if (*pHHInfo->pHHWinType->pszToc) - NP_CreateTab(pHHInfo->hInstance, hwndTabCtrl, IDS_CONTENTS, dwIndex++); + NP_CreateTab(hhctrl_hinstance, hwndTabCtrl, IDS_CONTENTS, dwIndex++); if (*pHHInfo->pHHWinType->pszIndex) - NP_CreateTab(pHHInfo->hInstance, hwndTabCtrl, IDS_INDEX, dwIndex++); + NP_CreateTab(hhctrl_hinstance, hwndTabCtrl, IDS_INDEX, dwIndex++); if (pHHInfo->pHHWinType->fsWinProperties & HHWIN_PROP_TAB_SEARCH) - NP_CreateTab(pHHInfo->hInstance, hwndTabCtrl, IDS_SEARCH, dwIndex++); + NP_CreateTab(hhctrl_hinstance, hwndTabCtrl, IDS_SEARCH, dwIndex++); if (pHHInfo->pHHWinType->fsWinProperties & HHWIN_PROP_TAB_FAVORITES) - NP_CreateTab(pHHInfo->hInstance, hwndTabCtrl, IDS_FAVORITES, dwIndex++); + NP_CreateTab(hhctrl_hinstance, hwndTabCtrl, IDS_FAVORITES, dwIndex++); SendMessageW(hwndTabCtrl, WM_SETFONT, (WPARAM)pHHInfo->hFont, TRUE); @@ -580,7 +579,7 @@ static BOOL HH_AddHTMLPane(HHInfo *pHHInfo) hWnd = CreateWindowExW(dwExStyles, szChildClass, szEmpty, dwStyles, rc.left, rc.top, rc.right, rc.bottom, - hwndParent, NULL, pHHInfo->hInstance, NULL); + hwndParent, NULL, hhctrl_hinstance, NULL); if (!hWnd) return FALSE; @@ -662,7 +661,6 @@ static LRESULT CALLBACK Help_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPA static BOOL HH_CreateHelpWindow(HHInfo *pHHInfo) { HWND hWnd; - HINSTANCE hInstance = pHHInfo->hInstance; RECT winPos = pHHInfo->pHHWinType->rcWindowPos; WNDCLASSEXW wcex; DWORD dwStyles, dwExStyles; @@ -677,7 +675,7 @@ static BOOL HH_CreateHelpWindow(HHInfo *pHHInfo) wcex.lpfnWndProc = (WNDPROC)Help_WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; - wcex.hInstance = hInstance; + wcex.hInstance = hhctrl_hinstance; wcex.hIcon = LoadIconW(NULL, (LPCWSTR)IDI_APPLICATION); wcex.hCursor = LoadCursorW(NULL, (LPCWSTR)IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_MENU + 1); @@ -716,7 +714,7 @@ static BOOL HH_CreateHelpWindow(HHInfo *pHHInfo) } hWnd = CreateWindowExW(dwExStyles, windowClassW, pHHInfo->pHHWinType->pszCaption, - dwStyles, x, y, width, height, NULL, NULL, hInstance, NULL); + dwStyles, x, y, width, height, NULL, NULL, hhctrl_hinstance, NULL); if (!hWnd) return FALSE; @@ -780,14 +778,13 @@ static BOOL HH_CreateViewer(HHInfo *pHHInfo) return TRUE; } -static HHInfo *HH_OpenHH(HINSTANCE hInstance, LPWSTR szCmdLine) +static HHInfo *HH_OpenHH(LPWSTR szCmdLine) { HHInfo *pHHInfo = hhctrl_alloc_zero(sizeof(HHInfo)); pHHInfo->pHHWinType = hhctrl_alloc_zero(sizeof(HH_WINTYPEW)); pHHInfo->pCHMInfo = hhctrl_alloc(sizeof(CHMInfo)); pHHInfo->pWBInfo = hhctrl_alloc(sizeof(WBInfo)); - pHHInfo->hInstance = hInstance; pHHInfo->szCmdLine = szCmdLine; return pHHInfo; @@ -849,7 +846,7 @@ int WINAPI doWinMain(HINSTANCE hInstance, LPSTR szCmdLine) if (FAILED(OleInitialize(NULL))) return -1; - pHHInfo = HH_OpenHH(hInstance, strdupAtoW(szCmdLine)); + pHHInfo = HH_OpenHH(strdupAtoW(szCmdLine)); if (!pHHInfo || !HH_OpenCHM(pHHInfo) || !HH_CreateViewer(pHHInfo)) { OleUninitialize();
1
0
0
0
Jacek Caban : hhctrl.ocx: Rewrite reading strings from #STRINGS section.
by Alexandre Julliard
23 Feb '07
23 Feb '07
Module: wine Branch: master Commit: e717dcc8fab3ba5e4a268371df34070018708274 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=e717dcc8fab3ba5e4a268371d…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Feb 22 22:51:36 2007 +0100 hhctrl.ocx: Rewrite reading strings from #STRINGS section. --- dlls/hhctrl.ocx/chm.c | 123 +++++++++++++++++++++++++++------------------- dlls/hhctrl.ocx/hhctrl.h | 9 +++ 2 files changed, 82 insertions(+), 50 deletions(-) diff --git a/dlls/hhctrl.ocx/chm.c b/dlls/hhctrl.ocx/chm.c index 2fad67c..9fc98c6 100644 --- a/dlls/hhctrl.ocx/chm.c +++ b/dlls/hhctrl.ocx/chm.c @@ -2,6 +2,7 @@ * CHM Utility API * * Copyright 2005 James Hawkins + * Copyright 2007 Jacek Caban * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -20,57 +21,55 @@ #include "hhctrl.h" -/* Reads a string from the #STRINGS section in the CHM file */ -static LPWSTR CHM_ReadString(CHMInfo *pChmInfo, DWORD dwOffset) -{ - LARGE_INTEGER liOffset; - IStorage *pStorage = pChmInfo->pStorage; - IStream *pStream; - DWORD cbRead; - ULONG iPos; - DWORD dwSize; - LPSTR szString; - LPWSTR stringW; - - const int CB_READ_BLOCK = 64; - static const WCHAR stringsW[] = {'#','S','T','R','I','N','G','S',0}; +#include "wine/debug.h" - dwSize = CB_READ_BLOCK; - szString = hhctrl_alloc(dwSize); +WINE_DEFAULT_DEBUG_CHANNEL(htmlhelp); - if (FAILED(IStorage_OpenStream(pStorage, stringsW, NULL, STGM_READ, 0, &pStream))) - return NULL; +#define BLOCK_BITS 12 +#define BLOCK_SIZE (1 << BLOCK_BITS) +#define BLOCK_MASK (BLOCK_SIZE-1) - liOffset.QuadPart = dwOffset; - - if (FAILED(IStream_Seek(pStream, liOffset, STREAM_SEEK_SET, NULL))) - { - IStream_Release(pStream); +/* Reads a string from the #STRINGS section in the CHM file */ +static LPCSTR GetChmString(CHMInfo *chm, DWORD offset) +{ + if(!chm->strings_stream) return NULL; + + if(chm->strings_size <= (offset >> BLOCK_BITS)) { + if(chm->strings) + chm->strings = hhctrl_realloc_zero(chm->strings, + chm->strings_size = ((offset >> BLOCK_BITS)+1)*sizeof(char*)); + else + chm->strings = hhctrl_alloc_zero( + chm->strings_size = ((offset >> BLOCK_BITS)+1)*sizeof(char*)); + } - while (SUCCEEDED(IStream_Read(pStream, szString, CB_READ_BLOCK, &cbRead))) - { - if (!cbRead) - return NULL; + if(!chm->strings[offset >> BLOCK_BITS]) { + LARGE_INTEGER pos; + DWORD read; + HRESULT hres; - for (iPos = 0; iPos < cbRead; iPos++) - { - if (!szString[iPos]) - { - stringW = strdupAtoW(szString); - hhctrl_free(szString); - return stringW; - } + pos.QuadPart = offset & ~BLOCK_MASK; + hres = IStream_Seek(chm->strings_stream, pos, STREAM_SEEK_SET, NULL); + if(FAILED(hres)) { + WARN("Seek failed: %08x\n", hres); + return NULL; } - dwSize *= 2; - szString = hhctrl_realloc(szString, dwSize); - szString += cbRead; + chm->strings[offset >> BLOCK_BITS] = hhctrl_alloc(BLOCK_SIZE); + + hres = IStream_Read(chm->strings_stream, chm->strings[offset >> BLOCK_BITS], + BLOCK_SIZE, &read); + if(FAILED(hres)) { + WARN("Read failed: %08x\n", hres); + hhctrl_free(chm->strings[offset >> BLOCK_BITS]); + chm->strings[offset >> BLOCK_BITS] = NULL; + return NULL; + } } - /* didn't find a string */ - return NULL; + return chm->strings[offset >> BLOCK_BITS] + (offset & BLOCK_MASK); } /* Loads the HH_WINTYPE data from the CHM file @@ -103,16 +102,16 @@ BOOL CHM_LoadWinTypeFromCHM(CHMInfo *pChmInfo, HH_WINTYPEW *pHHWinType) if (FAILED(hr)) goto done; /* convert the #STRINGS offsets to actual strings */ - pHHWinType->pszType = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszType); - pHHWinType->pszCaption = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszCaption); - pHHWinType->pszToc = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszToc); - pHHWinType->pszIndex = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszIndex); - pHHWinType->pszFile = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszFile); - pHHWinType->pszHome = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszHome); - pHHWinType->pszJump1 = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszJump1); - pHHWinType->pszJump2 = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszJump2); - pHHWinType->pszUrlJump1 = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszUrlJump1); - pHHWinType->pszUrlJump2 = CHM_ReadString(pChmInfo, (DWORD)pHHWinType->pszUrlJump2); + pHHWinType->pszType = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszType)); + pHHWinType->pszCaption = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszCaption)); + pHHWinType->pszToc = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszToc)); + pHHWinType->pszIndex = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszIndex)); + pHHWinType->pszFile = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszFile)); + pHHWinType->pszHome = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszHome)); + pHHWinType->pszJump1 = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszJump1)); + pHHWinType->pszJump2 = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszJump2)); + pHHWinType->pszUrlJump1 = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszUrlJump1)); + pHHWinType->pszUrlJump2 = strdupAtoW(GetChmString(pChmInfo, (DWORD)pHHWinType->pszUrlJump2)); /* FIXME: pszCustomTabs is a list of multiple zero-terminated strings so ReadString won't * work in this case @@ -130,6 +129,10 @@ done: /* Opens the CHM file for reading */ BOOL CHM_OpenCHM(CHMInfo *pChmInfo, LPCWSTR szFile) { + HRESULT hres; + + static const WCHAR wszSTRINGS[] = {'#','S','T','R','I','N','G','S',0}; + pChmInfo->szFile = szFile; if (FAILED(CoCreateInstance(&CLSID_ITStorage, NULL, CLSCTX_INPROC_SERVER, @@ -141,6 +144,16 @@ BOOL CHM_OpenCHM(CHMInfo *pChmInfo, LPCWSTR szFile) NULL, 0, &pChmInfo->pStorage))) return FALSE; + hres = IStorage_OpenStream(pChmInfo->pStorage, wszSTRINGS, NULL, STGM_READ, 0, + &pChmInfo->strings_stream); + if(FAILED(hres)) { + WARN("Could not open #STRINGS stream: %08x\n", hres); + return FALSE; + } + + pChmInfo->strings = NULL; + pChmInfo->strings_size = 0; + return TRUE; } @@ -148,4 +161,14 @@ void CHM_CloseCHM(CHMInfo *pCHMInfo) { IITStorage_Release(pCHMInfo->pITStorage); IStorage_Release(pCHMInfo->pStorage); + IStream_Release(pCHMInfo->strings_stream); + + if(pCHMInfo->strings_size) { + int i; + + for(i=0; i<pCHMInfo->strings_size; i++) + hhctrl_free(pCHMInfo->strings[i]); + } + + hhctrl_free(pCHMInfo->strings); } diff --git a/dlls/hhctrl.ocx/hhctrl.h b/dlls/hhctrl.ocx/hhctrl.h index 4257687..355fc02 100644 --- a/dlls/hhctrl.ocx/hhctrl.h +++ b/dlls/hhctrl.ocx/hhctrl.h @@ -50,6 +50,10 @@ typedef struct CHMInfo IITStorage *pITStorage; IStorage *pStorage; LPCWSTR szFile; + + IStream *strings_stream; + char **strings; + DWORD strings_size; } CHMInfo; @@ -87,6 +91,11 @@ static inline void *hhctrl_realloc(void *mem, size_t len) return HeapReAlloc(GetProcessHeap(), 0, mem, len); } +static inline void *hhctrl_realloc_zero(void *mem, size_t len) +{ + return HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, mem, len); +} + static inline BOOL hhctrl_free(void *mem) { return HeapFree(GetProcessHeap(), 0, mem);
1
0
0
0
← Newer
1
...
11
12
13
14
15
16
17
...
84
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Results per page:
10
25
50
100
200