ReactOS.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
2024
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
List overview
Download
Ros-diffs
January 2012
----- 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
ros-diffs@reactos.org
19 participants
559 discussions
Start a n
N
ew thread
[rharabien] 54997: [SHELL32] - Give numeric identifiers to all dialogs - Add file copy dialog to languages files where it was lacking - Remove unused admin tools icon duplicate
by rharabien@svn.reactos.org
Author: rharabien Date: Tue Jan 17 21:28:17 2012 New Revision: 54997 URL:
http://svn.reactos.org/svn/reactos?rev=54997&view=rev
Log: [SHELL32] - Give numeric identifiers to all dialogs - Add file copy dialog to languages files where it was lacking - Remove unused admin tools icon duplicate Modified: trunk/reactos/dll/win32/shell32/authors.cpp trunk/reactos/dll/win32/shell32/brsfolder.cpp trunk/reactos/dll/win32/shell32/dialogs.cpp trunk/reactos/dll/win32/shell32/drive.cpp trunk/reactos/dll/win32/shell32/drvdefext.cpp trunk/reactos/dll/win32/shell32/filedefext.cpp trunk/reactos/dll/win32/shell32/folder_options.cpp trunk/reactos/dll/win32/shell32/folders/desktop.cpp trunk/reactos/dll/win32/shell32/folders/recyclebin.cpp trunk/reactos/dll/win32/shell32/icon_res.rc trunk/reactos/dll/win32/shell32/lang/bg-BG.rc trunk/reactos/dll/win32/shell32/lang/ca-ES.rc trunk/reactos/dll/win32/shell32/lang/cs-CZ.rc trunk/reactos/dll/win32/shell32/lang/da-DK.rc trunk/reactos/dll/win32/shell32/lang/de-DE.rc trunk/reactos/dll/win32/shell32/lang/el-GR.rc trunk/reactos/dll/win32/shell32/lang/en-GB.rc trunk/reactos/dll/win32/shell32/lang/en-US.rc trunk/reactos/dll/win32/shell32/lang/es-ES.rc trunk/reactos/dll/win32/shell32/lang/fi-FI.rc trunk/reactos/dll/win32/shell32/lang/fr-FR.rc trunk/reactos/dll/win32/shell32/lang/hu-HU.rc trunk/reactos/dll/win32/shell32/lang/it-IT.rc trunk/reactos/dll/win32/shell32/lang/ja-JP.rc trunk/reactos/dll/win32/shell32/lang/ko-KR.rc trunk/reactos/dll/win32/shell32/lang/nl-NL.rc trunk/reactos/dll/win32/shell32/lang/no-NO.rc trunk/reactos/dll/win32/shell32/lang/pl-PL.rc trunk/reactos/dll/win32/shell32/lang/pt-BR.rc trunk/reactos/dll/win32/shell32/lang/pt-PT.rc trunk/reactos/dll/win32/shell32/lang/ro-RO.rc trunk/reactos/dll/win32/shell32/lang/ru-RU.rc trunk/reactos/dll/win32/shell32/lang/sk-SK.rc trunk/reactos/dll/win32/shell32/lang/sl-SI.rc trunk/reactos/dll/win32/shell32/lang/sv-SE.rc trunk/reactos/dll/win32/shell32/lang/tr-TR.rc trunk/reactos/dll/win32/shell32/lang/uk-UA.rc trunk/reactos/dll/win32/shell32/lang/zh-CN.rc trunk/reactos/dll/win32/shell32/lang/zh-TW.rc trunk/reactos/dll/win32/shell32/openwithmenu.cpp trunk/reactos/dll/win32/shell32/shell32_main.cpp trunk/reactos/dll/win32/shell32/shell32_main.h trunk/reactos/dll/win32/shell32/shelllink.cpp trunk/reactos/dll/win32/shell32/shellpath.cpp trunk/reactos/dll/win32/shell32/shlfileop.cpp trunk/reactos/dll/win32/shell32/shresdef.h [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/reactos/dll/win32/shell32/authors.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/authors.…
Modified: trunk/reactos/dll/win32/shell32/brsfolder.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/brsfolde…
Modified: trunk/reactos/dll/win32/shell32/dialogs.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/dialogs.…
Modified: trunk/reactos/dll/win32/shell32/drive.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/drive.cp…
Modified: trunk/reactos/dll/win32/shell32/drvdefext.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/drvdefex…
Modified: trunk/reactos/dll/win32/shell32/filedefext.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/filedefe…
Modified: trunk/reactos/dll/win32/shell32/folder_options.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/folder_o…
Modified: trunk/reactos/dll/win32/shell32/folders/desktop.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/folders/…
Modified: trunk/reactos/dll/win32/shell32/folders/recyclebin.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/folders/…
Modified: trunk/reactos/dll/win32/shell32/icon_res.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/icon_res…
Modified: trunk/reactos/dll/win32/shell32/lang/bg-BG.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/bg-…
Modified: trunk/reactos/dll/win32/shell32/lang/ca-ES.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ca-…
Modified: trunk/reactos/dll/win32/shell32/lang/cs-CZ.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/cs-…
Modified: trunk/reactos/dll/win32/shell32/lang/da-DK.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/da-…
Modified: trunk/reactos/dll/win32/shell32/lang/de-DE.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/de-…
Modified: trunk/reactos/dll/win32/shell32/lang/el-GR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/el-…
Modified: trunk/reactos/dll/win32/shell32/lang/en-GB.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/en-…
Modified: trunk/reactos/dll/win32/shell32/lang/en-US.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/en-…
Modified: trunk/reactos/dll/win32/shell32/lang/es-ES.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/es-…
Modified: trunk/reactos/dll/win32/shell32/lang/fi-FI.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/fi-…
Modified: trunk/reactos/dll/win32/shell32/lang/fr-FR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/fr-…
Modified: trunk/reactos/dll/win32/shell32/lang/hu-HU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/hu-…
Modified: trunk/reactos/dll/win32/shell32/lang/it-IT.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/it-…
Modified: trunk/reactos/dll/win32/shell32/lang/ja-JP.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ja-…
Modified: trunk/reactos/dll/win32/shell32/lang/ko-KR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ko-…
Modified: trunk/reactos/dll/win32/shell32/lang/nl-NL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/nl-…
Modified: trunk/reactos/dll/win32/shell32/lang/no-NO.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/no-…
Modified: trunk/reactos/dll/win32/shell32/lang/pl-PL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/pl-…
Modified: trunk/reactos/dll/win32/shell32/lang/pt-BR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/pt-…
Modified: trunk/reactos/dll/win32/shell32/lang/pt-PT.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/pt-…
Modified: trunk/reactos/dll/win32/shell32/lang/ro-RO.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ro-…
Modified: trunk/reactos/dll/win32/shell32/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ru-…
Modified: trunk/reactos/dll/win32/shell32/lang/sk-SK.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/sk-…
Modified: trunk/reactos/dll/win32/shell32/lang/sl-SI.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/sl-…
Modified: trunk/reactos/dll/win32/shell32/lang/sv-SE.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/sv-…
Modified: trunk/reactos/dll/win32/shell32/lang/tr-TR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/tr-…
Modified: trunk/reactos/dll/win32/shell32/lang/uk-UA.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/uk-…
Modified: trunk/reactos/dll/win32/shell32/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/zh-…
Modified: trunk/reactos/dll/win32/shell32/lang/zh-TW.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/zh-…
Modified: trunk/reactos/dll/win32/shell32/openwithmenu.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/openwith…
Modified: trunk/reactos/dll/win32/shell32/shell32_main.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shell32_…
Modified: trunk/reactos/dll/win32/shell32/shell32_main.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shell32_…
Modified: trunk/reactos/dll/win32/shell32/shelllink.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shelllin…
Modified: trunk/reactos/dll/win32/shell32/shellpath.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shellpat…
Modified: trunk/reactos/dll/win32/shell32/shlfileop.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shlfileo…
Modified: trunk/reactos/dll/win32/shell32/shresdef.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shresdef…
12 years, 9 months
1
0
0
0
[cgutman] 54996: [WLANCONF] - Fix the loop counter variable (copy-paste mistake)
by cgutman@svn.reactos.org
Author: cgutman Date: Tue Jan 17 21:03:54 2012 New Revision: 54996 URL:
http://svn.reactos.org/svn/reactos?rev=54996&view=rev
Log: [WLANCONF] - Fix the loop counter variable (copy-paste mistake) Modified: branches/wlan-bringup/base/applications/network/wlanconf/wlanconf.c Modified: branches/wlan-bringup/base/applications/network/wlanconf/wlanconf.c URL:
http://svn.reactos.org/svn/reactos/branches/wlan-bringup/base/applications/…
============================================================================== --- branches/wlan-bringup/base/applications/network/wlanconf/wlanconf.c [iso-8859-1] (original) +++ branches/wlan-bringup/base/applications/network/wlanconf/wlanconf.c [iso-8859-1] Tue Jan 17 21:03:54 2012 @@ -796,13 +796,13 @@ _tprintf(_T("SSID: %s\n"), SsidBuffer); _tprintf(_T("BSSID: ")); - for (i = 0; i < sizeof(NDIS_802_11_MAC_ADDRESS); i++) + for (j = 0; j < sizeof(NDIS_802_11_MAC_ADDRESS); j++) { - UINT BssidData = BssidInfo->MacAddress[i]; - + UINT BssidData = BssidInfo->MacAddress[j]; + _tprintf(_T("%.2x"), BssidData); - - if (i != sizeof(NDIS_802_11_MAC_ADDRESS) - 1) + + if (j != sizeof(NDIS_802_11_MAC_ADDRESS) - 1) _tprintf(_T(":")); } _tprintf(_T("\n"));
12 years, 9 months
1
0
0
0
[cgutman] 54995: [WLANCONF] - Avoid reporting a cryptic error code when wlanconf is used without any WLAN adapters present - Print the BSSIDs when doing a scan - Fix the WLAN disconnected check
by cgutman@svn.reactos.org
Author: cgutman Date: Tue Jan 17 19:47:10 2012 New Revision: 54995 URL:
http://svn.reactos.org/svn/reactos?rev=54995&view=rev
Log: [WLANCONF] - Avoid reporting a cryptic error code when wlanconf is used without any WLAN adapters present - Print the BSSIDs when doing a scan - Fix the WLAN disconnected check Modified: branches/wlan-bringup/base/applications/network/wlanconf/wlanconf.c Modified: branches/wlan-bringup/base/applications/network/wlanconf/wlanconf.c URL:
http://svn.reactos.org/svn/reactos/branches/wlan-bringup/base/applications/…
============================================================================== --- branches/wlan-bringup/base/applications/network/wlanconf/wlanconf.c [iso-8859-1] (original) +++ branches/wlan-bringup/base/applications/network/wlanconf/wlanconf.c [iso-8859-1] Tue Jan 17 19:47:10 2012 @@ -337,23 +337,10 @@ HeapFree(GetProcessHeap(), 0, QueryOid); return FALSE; } - - if (SsidInfo->SsidLength == 0) - { - _tprintf(_T("\nWLAN disconnected\n")); - HeapFree(GetProcessHeap(), 0, QueryOid); - return TRUE; - } - else - { - _tprintf(_T("\nCurrent wireless association information:\n\n")); - } /* Copy the SSID to our internal buffer and terminate it */ RtlCopyMemory(SsidBuffer, SsidInfo->Ssid, SsidInfo->SsidLength); SsidBuffer[SsidInfo->SsidLength] = 0; - - _tprintf(_T("SSID: %s\n"), SsidBuffer); HeapFree(GetProcessHeap(), 0, QueryOid); QueryOidSize = FIELD_OFFSET(NDISUIO_QUERY_OID, Data) + sizeof(NDIS_802_11_MAC_ADDRESS); @@ -371,11 +358,18 @@ QueryOidSize, &dwBytesReturned, NULL); - if (!bSuccess) - { + if (SsidInfo->SsidLength == 0 || !bSuccess) + { + _tprintf(_T("\nWLAN disconnected\n")); HeapFree(GetProcessHeap(), 0, QueryOid); - return FALSE; - } + return TRUE; + } + else + { + _tprintf(_T("\nCurrent wireless configuration information:\n\n")); + } + + _tprintf(_T("SSID: %s\n"), SsidBuffer); _tprintf(_T("BSSID: ")); for (i = 0; i < sizeof(NDIS_802_11_MAC_ADDRESS); i++) @@ -796,13 +790,27 @@ /* SSID member is a non-null terminated ASCII string */ RtlCopyMemory(SsidBuffer, Ssid->Ssid, Ssid->SsidLength); SsidBuffer[Ssid->SsidLength] = 0; - - _tprintf(_T("\nSSID: %s\n" - "Encrypted: %s\n" + + _tprintf(_T("\n")); + + _tprintf(_T("SSID: %s\n"), SsidBuffer); + + _tprintf(_T("BSSID: ")); + for (i = 0; i < sizeof(NDIS_802_11_MAC_ADDRESS); i++) + { + UINT BssidData = BssidInfo->MacAddress[i]; + + _tprintf(_T("%.2x"), BssidData); + + if (i != sizeof(NDIS_802_11_MAC_ADDRESS) - 1) + _tprintf(_T(":")); + } + _tprintf(_T("\n")); + + _tprintf(_T("Encrypted: %s\n" "Network Type: %s\n" "RSSI: %i dBm\n" "Supported Rates (Mbps): "), - SsidBuffer, BssidInfo->Privacy == 0 ? "No" : "Yes", NetworkType == Ndis802_11IBSS ? "Adhoc" : "Infrastructure", (int)Rssi); @@ -915,7 +923,7 @@ if (!OpenWlanAdapter(&hAdapter, &IpInfo)) { - DoFormatMessage(GetLastError()); + _tprintf(_T("Unable to find a WLAN adapter on the system\n")); return -1; }
12 years, 9 months
1
0
0
0
[rharabien] 54994: [SHELL32] - TABs -> spaces
by rharabien@svn.reactos.org
Author: rharabien Date: Tue Jan 17 18:45:41 2012 New Revision: 54994 URL:
http://svn.reactos.org/svn/reactos?rev=54994&view=rev
Log: [SHELL32] - TABs -> spaces Modified: trunk/reactos/dll/win32/shell32/lang/bg-BG.rc trunk/reactos/dll/win32/shell32/lang/ca-ES.rc trunk/reactos/dll/win32/shell32/lang/cs-CZ.rc trunk/reactos/dll/win32/shell32/lang/da-DK.rc trunk/reactos/dll/win32/shell32/lang/de-DE.rc trunk/reactos/dll/win32/shell32/lang/el-GR.rc trunk/reactos/dll/win32/shell32/lang/en-GB.rc trunk/reactos/dll/win32/shell32/lang/en-US.rc trunk/reactos/dll/win32/shell32/lang/es-ES.rc trunk/reactos/dll/win32/shell32/lang/fi-FI.rc trunk/reactos/dll/win32/shell32/lang/fr-FR.rc trunk/reactos/dll/win32/shell32/lang/hu-HU.rc trunk/reactos/dll/win32/shell32/lang/it-IT.rc trunk/reactos/dll/win32/shell32/lang/ja-JP.rc trunk/reactos/dll/win32/shell32/lang/ko-KR.rc trunk/reactos/dll/win32/shell32/lang/nl-NL.rc trunk/reactos/dll/win32/shell32/lang/no-NO.rc trunk/reactos/dll/win32/shell32/lang/pl-PL.rc trunk/reactos/dll/win32/shell32/lang/pt-BR.rc trunk/reactos/dll/win32/shell32/lang/pt-PT.rc trunk/reactos/dll/win32/shell32/lang/ro-RO.rc trunk/reactos/dll/win32/shell32/lang/ru-RU.rc trunk/reactos/dll/win32/shell32/lang/sk-SK.rc trunk/reactos/dll/win32/shell32/lang/sl-SI.rc trunk/reactos/dll/win32/shell32/lang/sv-SE.rc trunk/reactos/dll/win32/shell32/lang/tr-TR.rc trunk/reactos/dll/win32/shell32/lang/uk-UA.rc trunk/reactos/dll/win32/shell32/lang/zh-CN.rc trunk/reactos/dll/win32/shell32/lang/zh-TW.rc [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/reactos/dll/win32/shell32/lang/bg-BG.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/bg-…
Modified: trunk/reactos/dll/win32/shell32/lang/ca-ES.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ca-…
Modified: trunk/reactos/dll/win32/shell32/lang/cs-CZ.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/cs-…
Modified: trunk/reactos/dll/win32/shell32/lang/da-DK.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/da-…
Modified: trunk/reactos/dll/win32/shell32/lang/de-DE.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/de-…
Modified: trunk/reactos/dll/win32/shell32/lang/el-GR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/el-…
Modified: trunk/reactos/dll/win32/shell32/lang/en-GB.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/en-…
Modified: trunk/reactos/dll/win32/shell32/lang/en-US.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/en-…
Modified: trunk/reactos/dll/win32/shell32/lang/es-ES.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/es-…
Modified: trunk/reactos/dll/win32/shell32/lang/fi-FI.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/fi-…
Modified: trunk/reactos/dll/win32/shell32/lang/fr-FR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/fr-…
Modified: trunk/reactos/dll/win32/shell32/lang/hu-HU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/hu-…
Modified: trunk/reactos/dll/win32/shell32/lang/it-IT.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/it-…
Modified: trunk/reactos/dll/win32/shell32/lang/ja-JP.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ja-…
Modified: trunk/reactos/dll/win32/shell32/lang/ko-KR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ko-…
Modified: trunk/reactos/dll/win32/shell32/lang/nl-NL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/nl-…
Modified: trunk/reactos/dll/win32/shell32/lang/no-NO.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/no-…
Modified: trunk/reactos/dll/win32/shell32/lang/pl-PL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/pl-…
Modified: trunk/reactos/dll/win32/shell32/lang/pt-BR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/pt-…
Modified: trunk/reactos/dll/win32/shell32/lang/pt-PT.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/pt-…
Modified: trunk/reactos/dll/win32/shell32/lang/ro-RO.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ro-…
Modified: trunk/reactos/dll/win32/shell32/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/ru-…
Modified: trunk/reactos/dll/win32/shell32/lang/sk-SK.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/sk-…
Modified: trunk/reactos/dll/win32/shell32/lang/sl-SI.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/sl-…
Modified: trunk/reactos/dll/win32/shell32/lang/sv-SE.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/sv-…
Modified: trunk/reactos/dll/win32/shell32/lang/tr-TR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/tr-…
Modified: trunk/reactos/dll/win32/shell32/lang/uk-UA.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/uk-…
Modified: trunk/reactos/dll/win32/shell32/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/zh-…
Modified: trunk/reactos/dll/win32/shell32/lang/zh-TW.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/zh-…
12 years, 9 months
1
0
0
0
[cgutman] 54993: [NTOSKRNL] - Only return the dirty bit if the PTE is actually valid - Avoid an unneeded TLB flush when setting the dirty bit
by cgutman@svn.reactos.org
Author: cgutman Date: Tue Jan 17 18:06:53 2012 New Revision: 54993 URL:
http://svn.reactos.org/svn/reactos?rev=54993&view=rev
Log: [NTOSKRNL] - Only return the dirty bit if the PTE is actually valid - Avoid an unneeded TLB flush when setting the dirty bit Modified: trunk/reactos/ntoskrnl/mm/i386/page.c Modified: trunk/reactos/ntoskrnl/mm/i386/page.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/i386/page.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/mm/i386/page.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/i386/page.c [iso-8859-1] Tue Jan 17 18:06:53 2012 @@ -539,7 +539,7 @@ */ if (WasDirty != NULL) { - *WasDirty = Pte & PA_DIRTY ? TRUE : FALSE; + *WasDirty = ((Pte & PA_DIRTY) && (Pte & PA_PRESENT)) ? TRUE : FALSE; } if (Page != NULL) { @@ -687,12 +687,10 @@ { KeBugCheck(MEMORY_MANAGEMENT); } - else if (!(Pte & PA_DIRTY)) - { - MiFlushTlb(Pt, Address); - } - else - { + else + { + /* The processor will never clear this bit itself, therefore + * we do not need to flush the TLB here when setting it */ MmUnmapPageTable(Pt); } }
12 years, 9 months
1
0
0
0
[rharabien] 54992: [WININET] - Don't use shell32 functions when processing DLL_PROCESS_ATTACH because shell32.dll can be initialized later. Fixes shell32+wininet debug spam at boot.
by rharabien@svn.reactos.org
Author: rharabien Date: Tue Jan 17 17:59:26 2012 New Revision: 54992 URL:
http://svn.reactos.org/svn/reactos?rev=54992&view=rev
Log: [WININET] - Don't use shell32 functions when processing DLL_PROCESS_ATTACH because shell32.dll can be initialized later. Fixes shell32+wininet debug spam at boot. Modified: trunk/reactos/dll/win32/wininet/internet.c trunk/reactos/dll/win32/wininet/urlcache.c trunk/reactos/dll/win32/wininet/wininet_ros.diff Modified: trunk/reactos/dll/win32/wininet/internet.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wininet/internet…
============================================================================== --- trunk/reactos/dll/win32/wininet/internet.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wininet/internet.c [iso-8859-1] Tue Jan 17 17:59:26 2012 @@ -291,8 +291,6 @@ if (g_dwTlsErrIndex == TLS_OUT_OF_INDEXES) return FALSE; - - URLCacheContainers_CreateDefaults(); WININET_hModule = hinstDLL; Modified: trunk/reactos/dll/win32/wininet/urlcache.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wininet/urlcache…
============================================================================== --- trunk/reactos/dll/win32/wininet/urlcache.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wininet/urlcache.c [iso-8859-1] Tue Jan 17 17:59:26 2012 @@ -182,6 +182,7 @@ /* List of all containers available */ static struct list UrlContainers = LIST_INIT(UrlContainers); +BOOL bDefaultContainersAdded = FALSE; static DWORD URLCache_CreateHashTable(LPURLCACHE_HEADER pHeader, HASH_CACHEFILE_ENTRY *pPrevHash, HASH_CACHEFILE_ENTRY **ppHash); @@ -591,6 +592,9 @@ if(!lpwszUrl) return ERROR_INVALID_PARAMETER; + if (!bDefaultContainersAdded) + URLCacheContainers_CreateDefaults(); + LIST_FOR_EACH_ENTRY(pContainer, &UrlContainers, URLCACHECONTAINER, entry) { int prefix_len = strlenW(pContainer->cache_prefix); @@ -628,6 +632,9 @@ /* non-NULL search pattern only returns one container ever */ if (lpwszSearchPattern && dwIndex > 0) return FALSE; + + if (!bDefaultContainersAdded) + URLCacheContainers_CreateDefaults(); LIST_FOR_EACH_ENTRY(pContainer, &UrlContainers, URLCACHECONTAINER, entry) { @@ -1532,6 +1539,9 @@ return FALSE; } + if (!bDefaultContainersAdded) + URLCacheContainers_CreateDefaults(); + LIST_FOR_EACH_ENTRY(pContainer, &UrlContainers, URLCACHECONTAINER, entry) { /* The URL cache has prefix L"" (unlike Cookies and History) */ Modified: trunk/reactos/dll/win32/wininet/wininet_ros.diff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wininet/wininet_…
============================================================================== --- trunk/reactos/dll/win32/wininet/wininet_ros.diff [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wininet/wininet_ros.diff [iso-8859-1] Tue Jan 17 17:59:26 2012 @@ -40,7 +40,16 @@ * NETCON_create --- wine-1.3.4/dlls/wininet/internet.c 2010-10-01 14:46:44.000000000 -0400 +++ dll/win32/wininet/internet.c 2010-10-09 15:33:04.000000000 -0400 -@@ -3569,19 +3569,22 @@ +@@ -292,8 +292,6 @@ + if (g_dwTlsErrIndex == TLS_OUT_OF_INDEXES) + return FALSE; + +- URLCacheContainers_CreateDefaults(); +- + WININET_hModule = hinstDLL; + + case DLL_THREAD_ATTACH: +@@ -3569,19 +3567,22 @@ LPSTR INTERNET_GetNextLine(INT nSocket, LPDWORD dwLen) { @@ -71,7 +80,15 @@ =================================================================== --- dll/win32/wininet/urlcache.c (revision 50814) +++ dll/win32/wininet/urlcache.c (working copy) -@@ -527,6 +527,7 @@ +@@ -182,6 +182,7 @@ + + /* List of all containers available */ + static struct list UrlContainers = LIST_INIT(UrlContainers); ++BOOL bDefaultContainersAdded = FALSE; + + static DWORD URLCache_CreateHashTable(LPURLCACHE_HEADER pHeader, HASH_CACHEFILE_ENTRY *pPrevHash, HASH_CACHEFILE_ENTRY **ppHash); + +@@ -527,6 +528,7 @@ static const WCHAR HistoryPrefix[] = {'V','i','s','i','t','e','d',':',0}; static const WCHAR CookieSuffix[] = {0}; static const WCHAR CookiePrefix[] = {'C','o','o','k','i','e',':',0}; @@ -79,7 +96,7 @@ static const struct { int nFolder; /* CSIDL_* constant */ -@@ -540,6 +541,12 @@ +@@ -540,6 +542,12 @@ }; DWORD i; @@ -92,6 +109,36 @@ for (i = 0; i < sizeof(DefaultContainerData) / sizeof(DefaultContainerData[0]); i++) { WCHAR wszCachePath[MAX_PATH]; +@@ -584,6 +592,9 @@ + if(!lpwszUrl) + return ERROR_INVALID_PARAMETER; + ++ if (!bDefaultContainersAdded) ++ URLCacheContainers_CreateDefaults(); ++ + LIST_FOR_EACH_ENTRY(pContainer, &UrlContainers, URLCACHECONTAINER, entry) + { + int prefix_len = strlenW(pContainer->cache_prefix); +@@ -622,6 +633,9 @@ + if (lpwszSearchPattern && dwIndex > 0) + return FALSE; + ++ if (!bDefaultContainersAdded) ++ URLCacheContainers_CreateDefaults(); ++ + LIST_FOR_EACH_ENTRY(pContainer, &UrlContainers, URLCACHECONTAINER, entry) + { + if (lpwszSearchPattern) +@@ -1525,6 +1539,9 @@ + return FALSE; + } + ++ if (!bDefaultContainersAdded) ++ URLCacheContainers_CreateDefaults(); ++ + LIST_FOR_EACH_ENTRY(pContainer, &UrlContainers, URLCACHECONTAINER, entry) + { + /* The URL cache has prefix L"" (unlike Cookies and History) */ Index: dll/win32/wininet/http.c =================================================================== --- dll/win32/wininet/http.c (revision 54234)
12 years, 9 months
1
0
0
0
[rharabien] 54991: [SHELL32] - Improve formatting in shelllink.cpp - Load shortcut icon in property page
by rharabien@svn.reactos.org
Author: rharabien Date: Tue Jan 17 17:57:23 2012 New Revision: 54991 URL:
http://svn.reactos.org/svn/reactos?rev=54991&view=rev
Log: [SHELL32] - Improve formatting in shelllink.cpp - Load shortcut icon in property page Modified: trunk/reactos/dll/win32/shell32/shelllink.cpp Modified: trunk/reactos/dll/win32/shell32/shelllink.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shelllin…
============================================================================== --- trunk/reactos/dll/win32/shell32/shelllink.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shelllink.cpp [iso-8859-1] Tue Jan 17 17:57:23 2012 @@ -95,26 +95,26 @@ static HRESULT ShellLink_UpdatePath(LPCWSTR sPathRel, LPCWSTR path, LPCWSTR sWorkDir, LPWSTR* psPath); /* strdup on the process heap */ -static LPWSTR __inline HEAP_strdupAtoW( HANDLE heap, DWORD flags, LPCSTR str) +static LPWSTR __inline HEAP_strdupAtoW(HANDLE heap, DWORD flags, LPCSTR str) { INT len; LPWSTR p; assert(str); - len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 ); - p = (LPWSTR)HeapAlloc( heap, flags, len*sizeof (WCHAR) ); - if( !p ) + len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); + p = (LPWSTR)HeapAlloc(heap, flags, len * sizeof(WCHAR)); + if (!p) return p; - MultiByteToWideChar( CP_ACP, 0, str, -1, p, len ); + MultiByteToWideChar(CP_ACP, 0, str, -1, p, len); return p; } -static LPWSTR __inline strdupW( LPCWSTR src ) +static LPWSTR __inline strdupW(LPCWSTR src) { LPWSTR dest; if (!src) return NULL; - dest = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, (wcslen(src)+1)*sizeof(WCHAR) ); + dest = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(src) + 1) * sizeof(WCHAR)); if (dest) wcscpy(dest, src); return dest; @@ -159,7 +159,7 @@ ILFree(pPidl); } -HRESULT WINAPI CShellLink::GetClassID(CLSID *pclsid ) +HRESULT WINAPI CShellLink::GetClassID(CLSID *pclsid) { TRACE("%p %p\n", this, pclsid); @@ -171,7 +171,7 @@ HRESULT WINAPI CShellLink::IsDirty() { - TRACE("(%p)\n",this); + TRACE("(%p)\n", this); if (bDirty) return S_OK; @@ -181,63 +181,57 @@ HRESULT WINAPI CShellLink::Load(LPCOLESTR pszFileName, DWORD dwMode) { - HRESULT r; - CComPtr<IStream> stm; - - TRACE("(%p, %s, %x)\n",this, debugstr_w(pszFileName), dwMode); + TRACE("(%p, %s, %x)\n", this, debugstr_w(pszFileName), dwMode); if (dwMode == 0) dwMode = STGM_READ | STGM_SHARE_DENY_WRITE; - r = SHCreateStreamOnFileW(pszFileName, dwMode, &stm); - if (SUCCEEDED(r)) + + CComPtr<IStream> stm; + HRESULT hr = SHCreateStreamOnFileW(pszFileName, dwMode, &stm); + if (SUCCEEDED(hr)) { HeapFree(GetProcessHeap(), 0, sLinkPath); sLinkPath = strdupW(pszFileName); - r = Load(stm); + hr = Load(stm); ShellLink_UpdatePath(sPathRel, pszFileName, sWorkDir, &sPath); bDirty = FALSE; } - TRACE("-- returning hr %08x\n", r); - return r; + TRACE("-- returning hr %08x\n", hr); + return hr; } HRESULT WINAPI CShellLink::Save(LPCOLESTR pszFileName, BOOL fRemember) { - HRESULT r; - CComPtr<IStream> stm; - TRACE("(%p)->(%s)\n", this, debugstr_w(pszFileName)); if (!pszFileName) return E_FAIL; - r = SHCreateStreamOnFileW( pszFileName, STGM_READWRITE | STGM_CREATE | STGM_SHARE_EXCLUSIVE, &stm ); - if( SUCCEEDED( r ) ) - { - r = Save(stm, FALSE); - - if( SUCCEEDED( r ) ) + CComPtr<IStream> stm; + HRESULT hr = SHCreateStreamOnFileW(pszFileName, STGM_READWRITE | STGM_CREATE | STGM_SHARE_EXCLUSIVE, &stm); + if (SUCCEEDED(hr)) + { + hr = Save(stm, FALSE); + + if (SUCCEEDED(hr)) { - if ( sLinkPath ) - { + if (sLinkPath) HeapFree(GetProcessHeap(), 0, sLinkPath); - } - sLinkPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(pszFileName)+1) * sizeof(WCHAR)); - if ( sLinkPath ) - { + + sLinkPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(pszFileName) + 1) * sizeof(WCHAR)); + if (sLinkPath) wcscpy(sLinkPath, pszFileName); - } bDirty = FALSE; } else { - DeleteFileW( pszFileName ); - WARN("Failed to create shortcut %s\n", debugstr_w(pszFileName) ); + DeleteFileW(pszFileName); + WARN("Failed to create shortcut %s\n", debugstr_w(pszFileName)); } } - return r; + return hr; } HRESULT WINAPI CShellLink::SaveCompleted(LPCOLESTR pszFileName) @@ -250,13 +244,13 @@ { *ppszFileName = NULL; - if ( !sLinkPath) + if (!sLinkPath) { /* IPersistFile::GetCurFile called before IPersistFile::Save */ return S_FALSE; } - *ppszFileName = (LPOLESTR)CoTaskMemAlloc((wcslen(sLinkPath)+1) * sizeof(WCHAR)); + *ppszFileName = (LPOLESTR)CoTaskMemAlloc((wcslen(sLinkPath) + 1) * sizeof(WCHAR)); if (!*ppszFileName) { /* out of memory */ @@ -273,50 +267,46 @@ * IPersistStream_IsDirty (IPersistStream) */ -static HRESULT Stream_LoadString( IStream* stm, BOOL unicode, LPWSTR *pstr ) -{ - DWORD count; +static HRESULT Stream_LoadString(IStream* stm, BOOL unicode, LPWSTR *pstr) +{ + TRACE("%p\n", stm); + USHORT len; - LPSTR temp; - LPWSTR str; - HRESULT r; - - TRACE("%p\n", stm); - - count = 0; - r = stm->Read(&len, sizeof(len), &count); - if ( FAILED (r) || ( count != sizeof(len) ) ) + DWORD count = 0; + HRESULT hr = stm->Read(&len, sizeof(len), &count); + if (FAILED(hr) || count != sizeof(len)) return E_FAIL; - if( unicode ) + if (unicode) len *= sizeof (WCHAR); TRACE("reading %d\n", len); - temp = (LPSTR)HeapAlloc(GetProcessHeap(), 0, len+sizeof(WCHAR)); - if( !temp ) + LPSTR temp = (LPSTR)HeapAlloc(GetProcessHeap(), 0, len + sizeof(WCHAR)); + if (!temp) return E_OUTOFMEMORY; count = 0; - r = stm->Read(temp, len, &count); - if( FAILED (r) || ( count != len ) ) - { - HeapFree( GetProcessHeap(), 0, temp ); + hr = stm->Read(temp, len, &count); + if(FAILED(hr) || count != len) + { + HeapFree(GetProcessHeap(), 0, temp); return E_FAIL; } - TRACE("read %s\n", debugstr_an(temp,len)); + TRACE("read %s\n", debugstr_an(temp, len)); /* convert to unicode if necessary */ - if( !unicode ) - { - count = MultiByteToWideChar( CP_ACP, 0, temp, len, NULL, 0 ); - str = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, (count+1)*sizeof (WCHAR) ); - if( !str ) + LPWSTR str; + if (!unicode) + { + count = MultiByteToWideChar(CP_ACP, 0, temp, len, NULL, 0); + str = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (count + 1) * sizeof (WCHAR)); + if (!str) { - HeapFree( GetProcessHeap(), 0, temp ); + HeapFree(GetProcessHeap(), 0, temp); return E_OUTOFMEMORY; } - MultiByteToWideChar( CP_ACP, 0, temp, len, str, count ); - HeapFree( GetProcessHeap(), 0, temp ); + MultiByteToWideChar(CP_ACP, 0, temp, len, str, count); + HeapFree(GetProcessHeap(), 0, temp); } else { @@ -330,117 +320,110 @@ return S_OK; } -static HRESULT Stream_ReadChunk( IStream* stm, LPVOID *data ) -{ - DWORD size; - ULONG count; - HRESULT r; - struct sized_chunk { +static HRESULT Stream_ReadChunk(IStream* stm, LPVOID *data) +{ + struct sized_chunk + { DWORD size; unsigned char data[1]; } *chunk; - TRACE("%p\n",stm); - - r = stm->Read(&size, sizeof(size), &count ); - if( FAILED( r ) || count != sizeof(size) ) + TRACE("%p\n", stm); + + DWORD size; + ULONG count; + HRESULT hr = stm->Read(&size, sizeof(size), &count); + if (FAILED(hr) || count != sizeof(size)) return E_FAIL; - chunk = (sized_chunk *)HeapAlloc( GetProcessHeap(), 0, size ); - if( !chunk ) + chunk = (sized_chunk *)HeapAlloc(GetProcessHeap(), 0, size); + if (!chunk) return E_OUTOFMEMORY; chunk->size = size; - r = stm->Read(chunk->data, size - sizeof(size), &count ); - if( FAILED( r ) || count != (size - sizeof(size)) ) - { - HeapFree( GetProcessHeap(), 0, chunk ); + hr = stm->Read(chunk->data, size - sizeof(size), &count); + if (FAILED(hr) || count != (size - sizeof(size))) + { + HeapFree(GetProcessHeap(), 0, chunk); return E_FAIL; } - TRACE("Read %d bytes\n",chunk->size); + TRACE("Read %d bytes\n", chunk->size); *data = chunk; return S_OK; } -static BOOL Stream_LoadVolume( LOCAL_VOLUME_INFO *vol, CShellLink::volume_info *volume ) -{ - const int label_sz = sizeof volume->label/sizeof volume->label[0]; - LPSTR label; - int len; - +static BOOL Stream_LoadVolume(LOCAL_VOLUME_INFO *vol, CShellLink::volume_info *volume) +{ volume->serial = vol->dwVolSerial; volume->type = vol->dwType; - if( !vol->dwVolLabelOfs ) + if (!vol->dwVolLabelOfs) return FALSE; - if( vol->dwSize <= vol->dwVolLabelOfs ) + if (vol->dwSize <= vol->dwVolLabelOfs) return FALSE; - len = vol->dwSize - vol->dwVolLabelOfs; - - label = (LPSTR) vol; + INT len = vol->dwSize - vol->dwVolLabelOfs; + + LPSTR label = (LPSTR)vol; label += vol->dwVolLabelOfs; - MultiByteToWideChar( CP_ACP, 0, label, len, volume->label, label_sz-1); + MultiByteToWideChar(CP_ACP, 0, label, len, volume->label, _countof(volume->label)); return TRUE; } -static LPWSTR Stream_LoadPath( LPCSTR p, DWORD maxlen ) -{ - unsigned int len = 0, wlen; - LPWSTR path; - - while( p[len] && (len < maxlen) ) +static LPWSTR Stream_LoadPath(LPCSTR p, DWORD maxlen) +{ + UINT len = 0; + + while (p[len] && len < maxlen) len++; - wlen = MultiByteToWideChar(CP_ACP, 0, p, len, NULL, 0); - path = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wlen+1)*sizeof(WCHAR)); + UINT wlen = MultiByteToWideChar(CP_ACP, 0, p, len, NULL, 0); + LPWSTR path = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wlen + 1) * sizeof(WCHAR)); + if (!path) + return NULL; MultiByteToWideChar(CP_ACP, 0, p, len, path, wlen); path[wlen] = 0; return path; } -static HRESULT Stream_LoadLocation( IStream *stm, - CShellLink::volume_info *volume, LPWSTR *path ) +static HRESULT Stream_LoadLocation(IStream *stm, + CShellLink::volume_info *volume, LPWSTR *path) { char *p = NULL; - LOCATION_INFO *loc; - HRESULT r; - DWORD n; - - r = Stream_ReadChunk( stm, (LPVOID*) &p ); - if( FAILED(r) ) - return r; - - loc = (LOCATION_INFO*) p; + HRESULT hr = Stream_ReadChunk(stm, (LPVOID*) &p); + if (FAILED(hr)) + return hr; + + LOCATION_INFO *loc = (LOCATION_INFO*) p; if (loc->dwTotalSize < sizeof(LOCATION_INFO)) { - HeapFree( GetProcessHeap(), 0, p ); + HeapFree(GetProcessHeap(), 0, p); return E_FAIL; } /* if there's valid local volume information, load it */ - if( loc->dwVolTableOfs && - ((loc->dwVolTableOfs + sizeof(LOCAL_VOLUME_INFO)) <= loc->dwTotalSize) ) + if (loc->dwVolTableOfs && + ((loc->dwVolTableOfs + sizeof(LOCAL_VOLUME_INFO)) <= loc->dwTotalSize)) { LOCAL_VOLUME_INFO *volume_info; volume_info = (LOCAL_VOLUME_INFO*) &p[loc->dwVolTableOfs]; - Stream_LoadVolume( volume_info, volume ); + Stream_LoadVolume(volume_info, volume); } /* if there's a local path, load it */ - n = loc->dwLocalPathOfs; - if( n && (n < loc->dwTotalSize) ) - *path = Stream_LoadPath( &p[n], loc->dwTotalSize - n ); + DWORD n = loc->dwLocalPathOfs; + if (n && n < loc->dwTotalSize) + *path = Stream_LoadPath(&p[n], loc->dwTotalSize - n); TRACE("type %d serial %08x name %s path %s\n", volume->type, volume->serial, debugstr_w(volume->label), debugstr_w(*path)); - HeapFree( GetProcessHeap(), 0, p ); + HeapFree(GetProcessHeap(), 0, p); return S_OK; } @@ -458,45 +441,42 @@ * In the original Win32 implementation the buffers are not initialized * to zero, so data trailing the string is random garbage. */ -static HRESULT Stream_LoadAdvertiseInfo( IStream* stm, LPWSTR *str ) -{ - DWORD size; +static HRESULT Stream_LoadAdvertiseInfo(IStream* stm, LPWSTR *str) +{ + TRACE("%p\n", stm); + ULONG count; - HRESULT r; EXP_DARWIN_LINK buffer; - - TRACE("%p\n",stm); - - r = stm->Read(&buffer.dbh.cbSize, sizeof (DWORD), &count ); - if( FAILED( r ) ) - return r; + HRESULT hr = stm->Read(&buffer.dbh.cbSize, sizeof (DWORD), &count); + if (FAILED(hr)) + return hr; /* make sure that we read the size of the structure even on error */ - size = sizeof buffer - sizeof (DWORD); - if( buffer.dbh.cbSize != sizeof buffer ) + DWORD size = sizeof buffer - sizeof (DWORD); + if (buffer.dbh.cbSize != sizeof buffer) { ERR("Ooops. This structure is not as expected...\n"); return E_FAIL; } - r = stm->Read(&buffer.dbh.dwSignature, size, &count ); - if( FAILED( r ) ) - return r; - - if( count != size ) + hr = stm->Read(&buffer.dbh.dwSignature, size, &count); + if (FAILED(hr)) + return hr; + + if (count != size) return E_FAIL; TRACE("magic %08x string = %s\n", buffer.dbh.dwSignature, debugstr_w(buffer.szwDarwinID)); - if( (buffer.dbh.dwSignature&0xffff0000) != 0xa0000000 ) + if ((buffer.dbh.dwSignature & 0xffff0000) != 0xa0000000) { ERR("Unknown magic number %08x in advertised shortcut\n", buffer.dbh.dwSignature); return E_FAIL; } - *str = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, - (wcslen(buffer.szwDarwinID)+1) * sizeof(WCHAR) ); - wcscpy( *str, buffer.szwDarwinID ); + *str = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, + (wcslen(buffer.szwDarwinID) + 1) * sizeof(WCHAR)); + wcscpy(*str, buffer.szwDarwinID); return S_OK; } @@ -506,21 +486,16 @@ */ HRESULT WINAPI CShellLink::Load(IStream *stm) { - LINK_HEADER hdr; - ULONG dwBytesRead; - BOOL unicode; - HRESULT r; - DWORD zero; - TRACE("%p %p\n", this, stm); if (!stm) return STG_E_INVALIDPOINTER; - dwBytesRead = 0; - r = stm->Read(&hdr, sizeof(hdr), &dwBytesRead); - if (FAILED(r)) - return r; + LINK_HEADER hdr; + ULONG dwBytesRead = 0; + HRESULT hr = stm->Read(&hdr, sizeof(hdr), &dwBytesRead); + if (FAILED(hr)) + return hr; if (dwBytesRead != sizeof(hdr)) return E_FAIL; @@ -532,7 +507,7 @@ /* free all the old stuff */ ILFree(pPidl); pPidl = NULL; - memset( &volume, 0, sizeof volume ); + memset(&volume, 0, sizeof volume); HeapFree(GetProcessHeap(), 0, sPath); sPath = NULL; HeapFree(GetProcessHeap(), 0, sDescription); @@ -550,6 +525,7 @@ HeapFree(GetProcessHeap(), 0, sComponent); sComponent = NULL; + BOOL unicode = FALSE; iShowCmd = hdr.fStartup; wHotKey = (WORD)hdr.wHotKey; iIcoNdx = hdr.nIcon; @@ -559,102 +535,105 @@ if (TRACE_ON(shell)) { WCHAR sTemp[MAX_PATH]; - GetDateFormatW(LOCALE_USER_DEFAULT,DATE_SHORTDATE, &time1, - NULL, sTemp, sizeof(sTemp)/sizeof(*sTemp)); - TRACE("-- time1: %s\n", debugstr_w(sTemp) ); - GetDateFormatW(LOCALE_USER_DEFAULT,DATE_SHORTDATE, &time2, - NULL, sTemp, sizeof(sTemp)/sizeof(*sTemp)); - TRACE("-- time2: %s\n", debugstr_w(sTemp) ); - GetDateFormatW(LOCALE_USER_DEFAULT,DATE_SHORTDATE, &time3, - NULL, sTemp, sizeof(sTemp)/sizeof(*sTemp)); - TRACE("-- time3: %s\n", debugstr_w(sTemp) ); + GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &time1, + NULL, sTemp, sizeof(sTemp) / sizeof(*sTemp)); + TRACE("-- time1: %s\n", debugstr_w(sTemp)); + GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &time2, + NULL, sTemp, sizeof(sTemp) / sizeof(*sTemp)); + TRACE("-- time2: %s\n", debugstr_w(sTemp)); + GetDateFormatW(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &time3, + NULL, sTemp, sizeof(sTemp) / sizeof(*sTemp)); + TRACE("-- time3: %s\n", debugstr_w(sTemp)); } /* load all the new stuff */ - if( hdr.dwFlags & SLDF_HAS_ID_LIST ) - { - r = ILLoadFromStream( stm, &pPidl ); - if( FAILED( r ) ) - return r; + if (hdr.dwFlags & SLDF_HAS_ID_LIST) + { + hr = ILLoadFromStream(stm, &pPidl); + if (FAILED(hr)) + return hr; } pdump(pPidl); /* load the location information */ - if( hdr.dwFlags & SLDF_HAS_LINK_INFO ) - r = Stream_LoadLocation( stm, &volume, &sPath ); - if( FAILED( r ) ) + if (hdr.dwFlags & SLDF_HAS_LINK_INFO) + hr = Stream_LoadLocation(stm, &volume, &sPath); + if (FAILED(hr)) goto end; - unicode = hdr.dwFlags & SLDF_UNICODE; - if( hdr.dwFlags & SLDF_HAS_NAME ) - { - r = Stream_LoadString( stm, unicode, &sDescription ); - TRACE("Description -> %s\n",debugstr_w(sDescription)); - } - if( FAILED( r ) ) + if (hdr.dwFlags & SLDF_UNICODE) + unicode = TRUE; + + if (hdr.dwFlags & SLDF_HAS_NAME) + { + hr = Stream_LoadString(stm, unicode, &sDescription); + TRACE("Description -> %s\n", debugstr_w(sDescription)); + } + if (FAILED(hr)) goto end; - if( hdr.dwFlags & SLDF_HAS_RELPATH ) - { - r = Stream_LoadString( stm, unicode, &sPathRel ); - TRACE("Relative Path-> %s\n",debugstr_w(sPathRel)); - } - if( FAILED( r ) ) + if (hdr.dwFlags & SLDF_HAS_RELPATH) + { + hr = Stream_LoadString(stm, unicode, &sPathRel); + TRACE("Relative Path-> %s\n", debugstr_w(sPathRel)); + } + if (FAILED(hr)) goto end; - if( hdr.dwFlags & SLDF_HAS_WORKINGDIR ) - { - r = Stream_LoadString( stm, unicode, &sWorkDir ); - TRACE("Working Dir -> %s\n",debugstr_w(sWorkDir)); - } - if( FAILED( r ) ) + if (hdr.dwFlags & SLDF_HAS_WORKINGDIR) + { + hr = Stream_LoadString(stm, unicode, &sWorkDir); + TRACE("Working Dir -> %s\n", debugstr_w(sWorkDir)); + } + if (FAILED(hr)) goto end; - if( hdr.dwFlags & SLDF_HAS_ARGS ) - { - r = Stream_LoadString( stm, unicode, &sArgs ); - TRACE("Working Dir -> %s\n",debugstr_w(sArgs)); - } - if( FAILED( r ) ) + if (hdr.dwFlags & SLDF_HAS_ARGS) + { + hr = Stream_LoadString(stm, unicode, &sArgs); + TRACE("Working Dir -> %s\n", debugstr_w(sArgs)); + } + if (FAILED(hr)) goto end; - if( hdr.dwFlags & SLDF_HAS_ICONLOCATION ) - { - r = Stream_LoadString( stm, unicode, &sIcoPath ); - TRACE("Icon file -> %s\n",debugstr_w(sIcoPath)); - } - if( FAILED( r ) ) + if (hdr.dwFlags & SLDF_HAS_ICONLOCATION) + { + hr = Stream_LoadString(stm, unicode, &sIcoPath); + TRACE("Icon file -> %s\n", debugstr_w(sIcoPath)); + } + if (FAILED(hr)) goto end; #if (NTDDI_VERSION < NTDDI_LONGHORN) - if( hdr.dwFlags & SLDF_HAS_LOGO3ID ) - { - r = Stream_LoadAdvertiseInfo( stm, &sProduct ); - TRACE("Product -> %s\n",debugstr_w(sProduct)); - } - if( FAILED( r ) ) + if (hdr.dwFlags & SLDF_HAS_LOGO3ID) + { + hr = Stream_LoadAdvertiseInfo(stm, &sProduct); + TRACE("Product -> %s\n", debugstr_w(sProduct)); + } + if (FAILED(hr)) goto end; #endif - if( hdr.dwFlags & SLDF_HAS_DARWINID ) - { - r = Stream_LoadAdvertiseInfo( stm, &sComponent ); - TRACE("Component -> %s\n",debugstr_w(sComponent)); - } - if( hdr.dwFlags & SLDF_RUNAS_USER ) - { - bRunAs = TRUE; + if (hdr.dwFlags & SLDF_HAS_DARWINID) + { + hr = Stream_LoadAdvertiseInfo(stm, &sComponent); + TRACE("Component -> %s\n", debugstr_w(sComponent)); + } + if (hdr.dwFlags & SLDF_RUNAS_USER) + { + bRunAs = TRUE; } else { - bRunAs = FALSE; - } - - if( FAILED( r ) ) + bRunAs = FALSE; + } + + if (FAILED(hr)) goto end; - r = stm->Read(&zero, sizeof zero, &dwBytesRead); - if( FAILED( r ) || zero || dwBytesRead != sizeof zero ) + DWORD dwZero; + hr = stm->Read(&dwZero, sizeof(dwZero), &dwBytesRead); + if (FAILED(hr) || dwZero || dwBytesRead != sizeof(dwZero)) ERR("Last word was not zero\n"); TRACE("OK\n"); @@ -662,8 +641,9 @@ pdump (pPidl); return S_OK; + end: - return r; + return hr; } /************************************************************************ @@ -672,21 +652,20 @@ * Helper function for IPersistStream_Save. Writes a unicode string * with terminating nul byte to a stream, preceded by the its length. */ -static HRESULT Stream_WriteString( IStream* stm, LPCWSTR str ) -{ - USHORT len = wcslen( str ) + 1; +static HRESULT Stream_WriteString(IStream* stm, LPCWSTR str) +{ + USHORT len = wcslen(str) + 1; DWORD count; - HRESULT r; - - r = stm->Write(&len, sizeof(len), &count ); - if( FAILED( r ) ) - return r; + + HRESULT hr = stm->Write(&len, sizeof(len), &count); + if (FAILED(hr)) + return hr; len *= sizeof(WCHAR); - r = stm->Write(str, len, &count ); - if( FAILED( r ) ) - return r; + hr = stm->Write(str, len, &count); + if (FAILED(hr)) + return hr; return S_OK; } @@ -700,33 +679,29 @@ * and the final path. * Figure out how Windows deals with unicode paths here. */ -static HRESULT Stream_WriteLocationInfo( IStream* stm, LPCWSTR path, - CShellLink::volume_info *volume ) -{ - DWORD total_size, path_size, volume_info_size, label_size, final_path_size; +static HRESULT Stream_WriteLocationInfo(IStream* stm, LPCWSTR path, + CShellLink::volume_info *volume) +{ LOCAL_VOLUME_INFO *vol; LOCATION_INFO *loc; - LPSTR szLabel, szPath, szFinalPath; - ULONG count = 0; - HRESULT hr; TRACE("%p %s %p\n", stm, debugstr_w(path), volume); /* figure out the size of everything */ - label_size = WideCharToMultiByte( CP_ACP, 0, volume->label, -1, - NULL, 0, NULL, NULL ); - path_size = WideCharToMultiByte( CP_ACP, 0, path, -1, - NULL, 0, NULL, NULL ); - volume_info_size = sizeof *vol + label_size; - final_path_size = 1; - total_size = sizeof *loc + volume_info_size + path_size + final_path_size; + DWORD label_size = WideCharToMultiByte(CP_ACP, 0, volume->label, -1, + NULL, 0, NULL, NULL); + DWORD path_size = WideCharToMultiByte(CP_ACP, 0, path, -1, + NULL, 0, NULL, NULL); + DWORD volume_info_size = sizeof(*vol) + label_size; + DWORD final_path_size = 1; + DWORD total_size = sizeof(*loc) + volume_info_size + path_size + final_path_size; /* create pointers to everything */ loc = (LOCATION_INFO *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, total_size); vol = (LOCAL_VOLUME_INFO*) &loc[1]; - szLabel = (LPSTR) &vol[1]; - szPath = &szLabel[label_size]; - szFinalPath = &szPath[path_size]; + LPSTR szLabel = (LPSTR) &vol[1]; + LPSTR szPath = &szLabel[label_size]; + LPSTR szFinalPath = &szPath[path_size]; /* fill in the location information header */ loc->dwTotalSize = total_size; @@ -744,41 +719,38 @@ vol->dwVolLabelOfs = sizeof (*vol); /* copy in the strings */ - WideCharToMultiByte( CP_ACP, 0, volume->label, -1, - szLabel, label_size, NULL, NULL ); - WideCharToMultiByte( CP_ACP, 0, path, -1, - szPath, path_size, NULL, NULL ); + WideCharToMultiByte(CP_ACP, 0, volume->label, -1, + szLabel, label_size, NULL, NULL); + WideCharToMultiByte(CP_ACP, 0, path, -1, + szPath, path_size, NULL, NULL); szFinalPath[0] = 0; - hr = stm->Write(loc, total_size, &count ); + ULONG count = 0; + HRESULT hr = stm->Write(loc, total_size, &count); HeapFree(GetProcessHeap(), 0, loc); return hr; } -static EXP_DARWIN_LINK* shelllink_build_darwinid( LPCWSTR string, DWORD magic ) -{ - EXP_DARWIN_LINK *buffer; - - buffer = (EXP_DARWIN_LINK *)LocalAlloc( LMEM_ZEROINIT, sizeof *buffer ); - buffer->dbh.cbSize = sizeof *buffer; +static EXP_DARWIN_LINK* shelllink_build_darwinid(LPCWSTR string, DWORD magic) +{ + EXP_DARWIN_LINK *buffer = (EXP_DARWIN_LINK *)LocalAlloc(LMEM_ZEROINIT, sizeof * buffer); + buffer->dbh.cbSize = sizeof * buffer; buffer->dbh.dwSignature = magic; - lstrcpynW( buffer->szwDarwinID, string, MAX_PATH ); - WideCharToMultiByte(CP_ACP, 0, string, -1, buffer->szDarwinID, MAX_PATH, NULL, NULL ); + lstrcpynW(buffer->szwDarwinID, string, MAX_PATH); + WideCharToMultiByte(CP_ACP, 0, string, -1, buffer->szDarwinID, MAX_PATH, NULL, NULL); return buffer; } -static HRESULT Stream_WriteAdvertiseInfo( IStream* stm, LPCWSTR string, DWORD magic ) -{ - EXP_DARWIN_LINK *buffer; +static HRESULT Stream_WriteAdvertiseInfo(IStream* stm, LPCWSTR string, DWORD magic) +{ + TRACE("%p\n", stm); + + EXP_DARWIN_LINK *buffer = shelllink_build_darwinid(string, magic); + ULONG count; - - TRACE("%p\n",stm); - - buffer = shelllink_build_darwinid( string, magic ); - - return stm->Write(buffer, buffer->dbh.cbSize, &count ); + return stm->Write(buffer, buffer->dbh.cbSize, &count); } /************************************************************************ @@ -788,13 +760,9 @@ */ HRESULT WINAPI CShellLink::Save(IStream *stm, BOOL fClearDirty) { + TRACE("%p %p %x\n", this, stm, fClearDirty); + LINK_HEADER header; - ULONG count; - DWORD zero; - HRESULT r; - - TRACE("%p %p %x\n", this, stm, fClearDirty); - memset(&header, 0, sizeof(header)); header.dwSize = sizeof(header); header.fStartup = iShowCmd; @@ -803,79 +771,80 @@ header.wHotKey = wHotKey; header.nIcon = iIcoNdx; header.dwFlags = SLDF_UNICODE; /* strings are in unicode */ - if( pPidl ) + if (pPidl) header.dwFlags |= SLDF_HAS_ID_LIST; - if( sPath ) + if (sPath) header.dwFlags |= SLDF_HAS_LINK_INFO; - if( sDescription ) + if (sDescription) header.dwFlags |= SLDF_HAS_NAME; - if( sWorkDir ) + if (sWorkDir) header.dwFlags |= SLDF_HAS_WORKINGDIR; - if( sArgs ) + if (sArgs) header.dwFlags |= SLDF_HAS_ARGS; - if( sIcoPath ) + if (sIcoPath) header.dwFlags |= SLDF_HAS_ICONLOCATION; #if (NTDDI_VERSION < NTDDI_LONGHORN) - if( sProduct ) + if (sProduct) header.dwFlags |= SLDF_HAS_LOGO3ID; #endif - if( sComponent ) + if (sComponent) header.dwFlags |= SLDF_HAS_DARWINID; - if( bRunAs ) + if (bRunAs) header.dwFlags |= SLDF_RUNAS_USER; - SystemTimeToFileTime ( &time1, &header.Time1 ); - SystemTimeToFileTime ( &time2, &header.Time2 ); - SystemTimeToFileTime ( &time3, &header.Time3 ); + SystemTimeToFileTime (&time1, &header.Time1); + SystemTimeToFileTime (&time2, &header.Time2); + SystemTimeToFileTime (&time3, &header.Time3); /* write the Shortcut header */ - r = stm->Write(&header, sizeof(header), &count ); - if( FAILED( r ) ) - { - ERR("Write failed at %d\n",__LINE__); - return r; + ULONG count; + HRESULT hr = stm->Write(&header, sizeof(header), &count); + if (FAILED(hr)) + { + ERR("Write failed\n"); + return hr; } TRACE("Writing pidl\n"); /* write the PIDL to the shortcut */ - if( pPidl ) - { - r = ILSaveToStream( stm, pPidl ); - if( FAILED( r ) ) + if (pPidl) + { + hr = ILSaveToStream(stm, pPidl); + if (FAILED(hr)) { - ERR("Failed to write PIDL at %d\n",__LINE__); - return r; + ERR("Failed to write PIDL\n"); + return hr; } } - if( sPath ) - Stream_WriteLocationInfo( stm, sPath, &volume ); - - if( sDescription ) - r = Stream_WriteString( stm, sDescription ); - - if( sPathRel ) - r = Stream_WriteString( stm, sPathRel ); - - if( sWorkDir ) - r = Stream_WriteString( stm, sWorkDir ); - - if( sArgs ) - r = Stream_WriteString( stm, sArgs ); - - if( sIcoPath ) - r = Stream_WriteString( stm, sIcoPath ); - - if( sProduct ) - r = Stream_WriteAdvertiseInfo( stm, sProduct, EXP_SZ_ICON_SIG ); - - if( sComponent ) - r = Stream_WriteAdvertiseInfo( stm, sComponent, EXP_DARWIN_ID_SIG ); + if (sPath) + Stream_WriteLocationInfo(stm, sPath, &volume); + + if (sDescription) + hr = Stream_WriteString(stm, sDescription); + + if (sPathRel) + hr = Stream_WriteString(stm, sPathRel); + + if (sWorkDir) + hr = Stream_WriteString(stm, sWorkDir); + + if (sArgs) + hr = Stream_WriteString(stm, sArgs); + + if (sIcoPath) + hr = Stream_WriteString(stm, sIcoPath); + + if (sProduct) + hr = Stream_WriteAdvertiseInfo(stm, sProduct, EXP_SZ_ICON_SIG); + + if (sComponent) + hr = Stream_WriteAdvertiseInfo(stm, sComponent, EXP_DARWIN_ID_SIG); /* the last field is a single zero dword */ - zero = 0; - r = stm->Write(&zero, sizeof zero, &count ); + DWORD zero = 0; + hr = stm->Write(&zero, sizeof zero, &count); return S_OK; } @@ -894,6 +863,7 @@ { if (INVALID_FILE_ATTRIBUTES == GetFileAttributesW(path)) return FALSE; + return TRUE; } @@ -906,25 +876,30 @@ if (!path || !psPath) return E_INVALIDARG; - if (!*psPath && sPathRel) { + if (!*psPath && sPathRel) + { WCHAR buffer[2*MAX_PATH], abs_path[2*MAX_PATH]; LPWSTR final = NULL; /* first try if [directory of link file] + [relative path] finds an existing file */ - GetFullPathNameW( path, MAX_PATH*2, buffer, &final ); - if( !final ) + GetFullPathNameW(path, MAX_PATH * 2, buffer, &final); + if (!final) final = buffer; wcscpy(final, sPathRel); *abs_path = '\0'; - if (SHELL_ExistsFileW(buffer)) { + if (SHELL_ExistsFileW(buffer)) + { if (!GetFullPathNameW(buffer, MAX_PATH, abs_path, &final)) wcscpy(abs_path, buffer); - } else { + } + else + { /* try if [working directory] + [relative path] finds an existing file */ - if (sWorkDir) { + if (sWorkDir) + { wcscpy(buffer, sWorkDir); wcscpy(PathAddBackslashW(buffer), sPathRel); @@ -938,7 +913,7 @@ if (!*abs_path) wcscpy(abs_path, sPathRel); - *psPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(abs_path)+1)*sizeof(WCHAR)); + *psPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(abs_path) + 1) * sizeof(WCHAR)); if (!*psPath) return E_OUTOFMEMORY; @@ -958,8 +933,9 @@ if (cchMaxPath) pszFile[0] = 0; + if (sPath) - WideCharToMultiByte( CP_ACP, 0, sPath, -1, + WideCharToMultiByte(CP_ACP, 0, sPath, -1, pszFile, cchMaxPath, NULL, NULL); if (pfd) FIXME("(%p): WIN32_FIND_DATA is not yet filled.\n", this); @@ -969,25 +945,27 @@ HRESULT WINAPI CShellLink::GetIDList(LPITEMIDLIST * ppidl) { - TRACE("(%p)->(ppidl=%p)\n",this, ppidl); + TRACE("(%p)->(ppidl=%p)\n", this, ppidl); if (!pPidl) { *ppidl = NULL; return S_FALSE; } + *ppidl = ILClone(pPidl); return S_OK; } HRESULT WINAPI CShellLink::SetIDList(LPCITEMIDLIST pidl) { - TRACE("(%p)->(pidl=%p)\n",this, pidl); - - if( pPidl ) - ILFree( pPidl ); - pPidl = ILClone( pidl ); - if( !pPidl ) + TRACE("(%p)->(pidl=%p)\n", this, pidl); + + if (pPidl) + ILFree(pPidl); + + pPidl = ILClone(pidl); + if (!pPidl) return E_FAIL; bDirty = TRUE; @@ -995,14 +973,15 @@ return S_OK; } -HRESULT WINAPI CShellLink::GetDescription(LPSTR pszName,INT cchMaxName) -{ - TRACE("(%p)->(%p len=%u)\n",this, pszName, cchMaxName); - - if( cchMaxName ) +HRESULT WINAPI CShellLink::GetDescription(LPSTR pszName, INT cchMaxName) +{ + TRACE("(%p)->(%p len=%u)\n", this, pszName, cchMaxName); + + if (cchMaxName) pszName[0] = 0; - if( sDescription ) - WideCharToMultiByte( CP_ACP, 0, sDescription, -1, + + if (sDescription) + WideCharToMultiByte(CP_ACP, 0, sDescription, -1, pszName, cchMaxName, NULL, NULL); return S_OK; @@ -1015,9 +994,10 @@ HeapFree(GetProcessHeap(), 0, sDescription); sDescription = NULL; - if ( pszName ) { - sDescription = HEAP_strdupAtoW( GetProcessHeap(), 0, pszName); - if ( !sDescription ) + if (pszName) + { + sDescription = HEAP_strdupAtoW(GetProcessHeap(), 0, pszName); + if (!sDescription) return E_OUTOFMEMORY; } bDirty = TRUE; @@ -1025,14 +1005,15 @@ return S_OK; } -HRESULT WINAPI CShellLink::GetWorkingDirectory(LPSTR pszDir,INT cchMaxPath) +HRESULT WINAPI CShellLink::GetWorkingDirectory(LPSTR pszDir, INT cchMaxPath) { TRACE("(%p)->(%p len=%u)\n", this, pszDir, cchMaxPath); - if( cchMaxPath ) + if (cchMaxPath) pszDir[0] = 0; - if( sWorkDir ) - WideCharToMultiByte( CP_ACP, 0, sWorkDir, -1, + + if (sWorkDir) + WideCharToMultiByte(CP_ACP, 0, sWorkDir, -1, pszDir, cchMaxPath, NULL, NULL); return S_OK; @@ -1040,14 +1021,15 @@ HRESULT WINAPI CShellLink::SetWorkingDirectory(LPCSTR pszDir) { - TRACE("(%p)->(dir=%s)\n",this, pszDir); + TRACE("(%p)->(dir=%s)\n", this, pszDir); HeapFree(GetProcessHeap(), 0, sWorkDir); sWorkDir = NULL; - if ( pszDir ) { - sWorkDir = HEAP_strdupAtoW( GetProcessHeap(), 0, pszDir); - if ( !sWorkDir ) + if (pszDir) + { + sWorkDir = HEAP_strdupAtoW(GetProcessHeap(), 0, pszDir); + if (!sWorkDir) return E_OUTOFMEMORY; } bDirty = TRUE; @@ -1055,14 +1037,14 @@ return S_OK; } -HRESULT WINAPI CShellLink::GetArguments(LPSTR pszArgs,INT cchMaxPath) +HRESULT WINAPI CShellLink::GetArguments(LPSTR pszArgs, INT cchMaxPath) { TRACE("(%p)->(%p len=%u)\n", this, pszArgs, cchMaxPath); - if( cchMaxPath ) + if (cchMaxPath) pszArgs[0] = 0; - if( sArgs ) - WideCharToMultiByte( CP_ACP, 0, sArgs, -1, + if (sArgs) + WideCharToMultiByte(CP_ACP, 0, sArgs, -1, pszArgs, cchMaxPath, NULL, NULL); return S_OK; @@ -1070,14 +1052,15 @@ HRESULT WINAPI CShellLink::SetArguments(LPCSTR pszArgs) { - TRACE("(%p)->(args=%s)\n",this, pszArgs); + TRACE("(%p)->(args=%s)\n", this, pszArgs); HeapFree(GetProcessHeap(), 0, sArgs); sArgs = NULL; - if ( pszArgs ) { - sArgs = HEAP_strdupAtoW( GetProcessHeap(), 0, pszArgs); - if( !sArgs ) + if (pszArgs) + { + sArgs = HEAP_strdupAtoW(GetProcessHeap(), 0, pszArgs); + if (!sArgs) return E_OUTOFMEMORY; } @@ -1088,7 +1071,7 @@ HRESULT WINAPI CShellLink::GetHotkey(WORD *pwHotkey) { - TRACE("(%p)->(%p)(0x%08x)\n",this, pwHotkey, wHotKey); + TRACE("(%p)->(%p)(0x%08x)\n", this, pwHotkey, wHotKey); *pwHotkey = wHotKey; @@ -1097,7 +1080,7 @@ HRESULT WINAPI CShellLink::SetHotkey(WORD wHotkey) { - TRACE("(%p)->(hotkey=%x)\n",this, wHotkey); + TRACE("(%p)->(hotkey=%x)\n", this, wHotkey); wHotKey = wHotkey; bDirty = TRUE; @@ -1107,14 +1090,14 @@ HRESULT WINAPI CShellLink::GetShowCmd(INT *piShowCmd) { - TRACE("(%p)->(%p)\n",this, piShowCmd); + TRACE("(%p)->(%p)\n", this, piShowCmd); *piShowCmd = iShowCmd; return S_OK; } HRESULT WINAPI CShellLink::SetShowCmd(INT iShowCmd) { - TRACE("(%p) %d\n",this, iShowCmd); + TRACE("(%p) %d\n", this, iShowCmd); this->iShowCmd = iShowCmd; bDirty = TRUE; @@ -1123,20 +1106,20 @@ } static HRESULT SHELL_PidlGeticonLocationA(IShellFolder* psf, LPCITEMIDLIST pidl, - LPSTR pszIconPath, int cchIconPath, int* piIcon) + LPSTR pszIconPath, int cchIconPath, int* piIcon) { LPCITEMIDLIST pidlLast; HRESULT hr = SHBindToParent(pidl, IID_IShellFolder, (LPVOID*)&psf, &pidlLast); - if (SUCCEEDED(hr)) { - CComPtr<IExtractIconA> pei; + if (SUCCEEDED(hr)) + { + CComPtr<IExtractIconA> pei; hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_IExtractIconA, NULL, (LPVOID*)&pei); - if (SUCCEEDED(hr)) { + if (SUCCEEDED(hr)) hr = pei->GetIconLocation(0, pszIconPath, MAX_PATH, piIcon, NULL); - } psf->Release(); } @@ -1144,7 +1127,7 @@ return hr; } -HRESULT WINAPI CShellLink::GetIconLocation(LPSTR pszIconPath,INT cchIconPath,INT *piIcon) +HRESULT WINAPI CShellLink::GetIconLocation(LPSTR pszIconPath, INT cchIconPath, INT *piIcon) { TRACE("(%p)->(%p len=%u iicon=%p)\n", this, pszIconPath, cchIconPath, piIcon); @@ -1159,7 +1142,7 @@ if (pPidl || sPath) { - CComPtr<IShellFolder> pdsk; + CComPtr<IShellFolder> pdsk; HRESULT hr = SHGetDesktopFolder(&pdsk); @@ -1192,17 +1175,17 @@ return S_OK; } -HRESULT WINAPI CShellLink::SetIconLocation(LPCSTR pszIconPath,INT iIcon) -{ - TRACE("(%p)->(path=%s iicon=%u)\n",this, pszIconPath, iIcon); +HRESULT WINAPI CShellLink::SetIconLocation(LPCSTR pszIconPath, INT iIcon) +{ + TRACE("(%p)->(path=%s iicon=%u)\n", this, pszIconPath, iIcon); HeapFree(GetProcessHeap(), 0, sIcoPath); sIcoPath = NULL; - if ( pszIconPath ) + if (pszIconPath) { sIcoPath = HEAP_strdupAtoW(GetProcessHeap(), 0, pszIconPath); - if ( !sIcoPath ) + if (!sIcoPath) return E_OUTOFMEMORY; } @@ -1214,12 +1197,12 @@ HRESULT WINAPI CShellLink::SetRelativePath(LPCSTR pszPathRel, DWORD dwReserved) { - TRACE("(%p)->(path=%s %x)\n",this, pszPathRel, dwReserved); + TRACE("(%p)->(path=%s %x)\n", this, pszPathRel, dwReserved); HeapFree(GetProcessHeap(), 0, sPathRel); sPathRel = NULL; - if ( pszPathRel ) + if (pszPathRel) { sPathRel = HEAP_strdupAtoW(GetProcessHeap(), 0, pszPathRel); bDirty = TRUE; @@ -1233,7 +1216,7 @@ HRESULT hr = S_OK; BOOL bSuccess; - TRACE("(%p)->(hwnd=%p flags=%x)\n",this, hwnd, fFlags); + TRACE("(%p)->(hwnd=%p flags=%x)\n", this, hwnd, fFlags); /*FIXME: use IResolveShellLink interface */ @@ -1245,8 +1228,8 @@ if (bSuccess && *buffer) { - sPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(buffer)+1)*sizeof(WCHAR)); - + sPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(buffer) + 1) * sizeof(WCHAR)); + if (!sPath) return E_OUTOFMEMORY; @@ -1260,8 +1243,8 @@ if (!sIcoPath && sPath) { - sIcoPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(sPath)+1)*sizeof(WCHAR)); - + sIcoPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(sPath) + 1) * sizeof(WCHAR)); + if (!sIcoPath) return E_OUTOFMEMORY; @@ -1276,24 +1259,21 @@ HRESULT WINAPI CShellLink::SetPath(LPCSTR pszFile) { - HRESULT r; - LPWSTR str; - - TRACE("(%p)->(path=%s)\n",this, pszFile); + TRACE("(%p)->(path=%s)\n", this, pszFile); if (pszFile == NULL) return E_INVALIDARG; - str = HEAP_strdupAtoW(GetProcessHeap(), 0, pszFile); + LPWSTR str = HEAP_strdupAtoW(GetProcessHeap(), 0, pszFile); if (!str) return E_OUTOFMEMORY; - r = SetPath(str); - HeapFree( GetProcessHeap(), 0, str ); - - return r; -} - -HRESULT WINAPI CShellLink::GetPath(LPWSTR pszFile,INT cchMaxPath, WIN32_FIND_DATAW *pfd, DWORD fFlags) + HRESULT hr = SetPath(str); + HeapFree(GetProcessHeap(), 0, str); + + return hr; +} + +HRESULT WINAPI CShellLink::GetPath(LPWSTR pszFile, INT cchMaxPath, WIN32_FIND_DATAW *pfd, DWORD fFlags) { TRACE("(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n", this, pszFile, cchMaxPath, pfd, fFlags, debugstr_w(sPath)); @@ -1305,110 +1285,111 @@ pszFile[0] = 0; if (sPath) - lstrcpynW( pszFile, sPath, cchMaxPath ); + lstrcpynW(pszFile, sPath, cchMaxPath); if (pfd) FIXME("(%p): WIN32_FIND_DATA is not yet filled.\n", this); return S_OK; } -HRESULT WINAPI CShellLink::GetDescription(LPWSTR pszName,INT cchMaxName) -{ - TRACE("(%p)->(%p len=%u)\n",this, pszName, cchMaxName); +HRESULT WINAPI CShellLink::GetDescription(LPWSTR pszName, INT cchMaxName) +{ + TRACE("(%p)->(%p len=%u)\n", this, pszName, cchMaxName); pszName[0] = 0; if (sDescription) - lstrcpynW( pszName, sDescription, cchMaxName ); + lstrcpynW(pszName, sDescription, cchMaxName); return S_OK; } HRESULT WINAPI CShellLink::SetDescription(LPCWSTR pszName) { - TRACE("(%p)->(desc=%s)\n",this, debugstr_w(pszName)); + TRACE("(%p)->(desc=%s)\n", this, debugstr_w(pszName)); HeapFree(GetProcessHeap(), 0, sDescription); - sDescription = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, - (wcslen( pszName )+1)*sizeof(WCHAR) ); - if ( !sDescription ) + sDescription = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, + (wcslen(pszName) + 1) * sizeof(WCHAR)); + if (!sDescription) return E_OUTOFMEMORY; - wcscpy( sDescription, pszName ); + wcscpy(sDescription, pszName); bDirty = TRUE; return S_OK; } -HRESULT WINAPI CShellLink::GetWorkingDirectory(LPWSTR pszDir,INT cchMaxPath) +HRESULT WINAPI CShellLink::GetWorkingDirectory(LPWSTR pszDir, INT cchMaxPath) { TRACE("(%p)->(%p len %u)\n", this, pszDir, cchMaxPath); - if( cchMaxPath ) + if (cchMaxPath) pszDir[0] = 0; - if( sWorkDir ) - lstrcpynW( pszDir, sWorkDir, cchMaxPath ); + if (sWorkDir) + lstrcpynW(pszDir, sWorkDir, cchMaxPath); return S_OK; } HRESULT WINAPI CShellLink::SetWorkingDirectory(LPCWSTR pszDir) { - TRACE("(%p)->(dir=%s)\n",this, debugstr_w(pszDir)); + TRACE("(%p)->(dir=%s)\n", this, debugstr_w(pszDir)); HeapFree(GetProcessHeap(), 0, sWorkDir); - sWorkDir = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, - (wcslen( pszDir )+1)*sizeof (WCHAR) ); - if ( !sWorkDir ) + sWorkDir = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, + (wcslen(pszDir) + 1) * sizeof (WCHAR)); + if (!sWorkDir) return E_OUTOFMEMORY; - wcscpy( sWorkDir, pszDir ); + wcscpy(sWorkDir, pszDir); bDirty = TRUE; return S_OK; } -HRESULT WINAPI CShellLink::GetArguments(LPWSTR pszArgs,INT cchMaxPath) +HRESULT WINAPI CShellLink::GetArguments(LPWSTR pszArgs, INT cchMaxPath) { TRACE("(%p)->(%p len=%u)\n", this, pszArgs, cchMaxPath); - if( cchMaxPath ) + if (cchMaxPath) pszArgs[0] = 0; - if( sArgs ) - lstrcpynW( pszArgs, sArgs, cchMaxPath ); + if (sArgs) + lstrcpynW(pszArgs, sArgs, cchMaxPath); return NOERROR; } HRESULT WINAPI CShellLink::SetArguments(LPCWSTR pszArgs) { - TRACE("(%p)->(args=%s)\n",this, debugstr_w(pszArgs)); + TRACE("(%p)->(args=%s)\n", this, debugstr_w(pszArgs)); HeapFree(GetProcessHeap(), 0, sArgs); - sArgs = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, - (wcslen( pszArgs )+1)*sizeof (WCHAR) ); - if ( !sArgs ) + sArgs = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, + (wcslen(pszArgs) + 1) * sizeof (WCHAR)); + if (!sArgs) return E_OUTOFMEMORY; - wcscpy( sArgs, pszArgs ); + + wcscpy(sArgs, pszArgs); bDirty = TRUE; return S_OK; } static HRESULT SHELL_PidlGeticonLocationW(IShellFolder* psf, LPCITEMIDLIST pidl, - LPWSTR pszIconPath, int cchIconPath, int* piIcon) + LPWSTR pszIconPath, int cchIconPath, int* piIcon) { LPCITEMIDLIST pidlLast; UINT wFlags; HRESULT hr = SHBindToParent(pidl, IID_IShellFolder, (LPVOID*)&psf, &pidlLast); - if (SUCCEEDED(hr)) { - CComPtr<IExtractIconW> pei; + if (SUCCEEDED(hr)) + { + CComPtr<IExtractIconW> pei; hr = psf->GetUIObjectOf(0, 1, &pidlLast, IID_IExtractIconW, NULL, (LPVOID*)&pei); - if (SUCCEEDED(hr)) { + if (SUCCEEDED(hr)) hr = pei->GetIconLocation(0, pszIconPath, MAX_PATH, piIcon, &wFlags); - } psf->Release(); } @@ -1416,7 +1397,7 @@ return hr; } -HRESULT WINAPI CShellLink::GetIconLocation(LPWSTR pszIconPath,INT cchIconPath,INT *piIcon) +HRESULT WINAPI CShellLink::GetIconLocation(LPWSTR pszIconPath, INT cchIconPath, INT *piIcon) { TRACE("(%p)->(%p len=%u iicon=%p)\n", this, pszIconPath, cchIconPath, piIcon); @@ -1463,16 +1444,16 @@ return S_OK; } -HRESULT WINAPI CShellLink::SetIconLocation(LPCWSTR pszIconPath,INT iIcon) -{ - TRACE("(%p)->(path=%s iicon=%u)\n",this, debugstr_w(pszIconPath), iIcon); +HRESULT WINAPI CShellLink::SetIconLocation(LPCWSTR pszIconPath, INT iIcon) +{ + TRACE("(%p)->(path=%s iicon=%u)\n", this, debugstr_w(pszIconPath), iIcon); HeapFree(GetProcessHeap(), 0, sIcoPath); - sIcoPath = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, - (wcslen( pszIconPath )+1)*sizeof (WCHAR) ); - if ( !sIcoPath ) + sIcoPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, + (wcslen(pszIconPath) + 1) * sizeof (WCHAR)); + if (!sIcoPath) return E_OUTOFMEMORY; - wcscpy( sIcoPath, pszIconPath ); + wcscpy(sIcoPath, pszIconPath); iIcoNdx = iIcon; bDirty = TRUE; @@ -1482,14 +1463,14 @@ HRESULT WINAPI CShellLink::SetRelativePath(LPCWSTR pszPathRel, DWORD dwReserved) { - TRACE("(%p)->(path=%s %x)\n",this, debugstr_w(pszPathRel), dwReserved); + TRACE("(%p)->(path=%s %x)\n", this, debugstr_w(pszPathRel), dwReserved); HeapFree(GetProcessHeap(), 0, sPathRel); - sPathRel = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, - (wcslen( pszPathRel )+1) * sizeof (WCHAR) ); - if ( !sPathRel ) + sPathRel = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, + (wcslen(pszPathRel) + 1) * sizeof (WCHAR)); + if (!sPathRel) return E_OUTOFMEMORY; - wcscpy( sPathRel, pszPathRel ); + wcscpy(sPathRel, pszPathRel); bDirty = TRUE; return ShellLink_UpdatePath(sPathRel, sPath, sWorkDir, &sPath); @@ -1497,80 +1478,75 @@ LPWSTR CShellLink::ShellLink_GetAdvertisedArg(LPCWSTR str) { - LPWSTR ret; - LPCWSTR p; - DWORD len; - - if( !str ) + if (!str) return NULL; - p = wcschr( str, ':' ); - if( !p ) + LPCWSTR p = wcschr(str, L':'); + if (!p) return NULL; - len = p - str; - ret = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, sizeof(WCHAR)*(len+1)); - if( !ret ) + DWORD len = p - str; + LPWSTR ret = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * (len + 1)); + if (!ret) return ret; - memcpy( ret, str, sizeof(WCHAR)*len ); + memcpy(ret, str, sizeof(WCHAR)*len); ret[len] = 0; return ret; } HRESULT CShellLink::ShellLink_SetAdvertiseInfo(LPCWSTR str) { - LPCWSTR szComponent = NULL, szProduct = NULL, p; - WCHAR szGuid[39]; - HRESULT r; - GUID guid; - int len; - - while( str[0] ) + LPCWSTR szComponent = NULL, szProduct = NULL; + + while (str[0]) { /* each segment must start with two colons */ - if( str[0] != ':' || str[1] != ':' ) + if (str[0] != ':' || str[1] != ':') return E_FAIL; /* the last segment is just two colons */ - if( !str[2] ) + if (!str[2]) break; str += 2; /* there must be a colon straight after a guid */ - p = wcschr( str, ':' ); - if( !p ) + LPCWSTR p = wcschr(str, L':'); + if (!p) return E_FAIL; - len = p - str; - if( len != 38 ) + INT len = p - str; + if (len != 38) return E_FAIL; /* get the guid, and check it's validly formatted */ - memcpy( szGuid, str, sizeof(WCHAR)*len ); + WCHAR szGuid[39]; + memcpy(szGuid, str, sizeof(WCHAR)*len); szGuid[len] = 0; - r = CLSIDFromString( szGuid, &guid ); - if( r != S_OK ) - return r; + + GUID guid; + HRESULT hr = CLSIDFromString(szGuid, &guid); + if (hr != S_OK) + return hr; str = p + 1; /* match it up to a guid that we care about */ - if( IsEqualGUID( guid, SHELL32_AdvtShortcutComponent ) && !szComponent ) + if (IsEqualGUID(guid, SHELL32_AdvtShortcutComponent) && !szComponent) szComponent = str; - else if( IsEqualGUID(guid, SHELL32_AdvtShortcutProduct ) && !szProduct ) + else if (IsEqualGUID(guid, SHELL32_AdvtShortcutProduct) && !szProduct) szProduct = str; else return E_FAIL; /* skip to the next field */ - str = wcschr( str, ':' ); - if( !str ) + str = wcschr(str, L':'); + if (!str) return E_FAIL; } /* we have to have a component for an advertised shortcut */ - if( !szComponent ) + if (!szComponent) return E_FAIL; - sComponent = ShellLink_GetAdvertisedArg( szComponent ); - sProduct = ShellLink_GetAdvertisedArg( szProduct ); + sComponent = ShellLink_GetAdvertisedArg(szComponent); + sProduct = ShellLink_GetAdvertisedArg(szProduct); TRACE("Component = %s\n", debugstr_w(sComponent)); TRACE("Product = %s\n", debugstr_w(sProduct)); @@ -1580,30 +1556,27 @@ static BOOL ShellLink_GetVolumeInfo(LPCWSTR path, CShellLink::volume_info *volume) { - const int label_sz = sizeof volume->label/sizeof volume->label[0]; WCHAR drive[4] = { path[0], ':', '\\', 0 }; - BOOL r; volume->type = GetDriveTypeW(drive); - r = GetVolumeInformationW(drive, volume->label, label_sz, &volume->serial, NULL, NULL, NULL, 0); - TRACE("r = %d type %d serial %08x name %s\n", r, + BOOL bRet = GetVolumeInformationW(drive, volume->label, _countof(volume->label), &volume->serial, NULL, NULL, NULL, 0); + TRACE("ret = %d type %d serial %08x name %s\n", bRet, volume->type, volume->serial, debugstr_w(volume->label)); - return r; + return bRet; } HRESULT WINAPI CShellLink::SetPath(LPCWSTR pszFile) { - WCHAR buffer[MAX_PATH]; - LPWSTR fname, unquoted = NULL; + LPWSTR unquoted = NULL; HRESULT hr = S_OK; - UINT len; - - TRACE("(%p)->(path=%s)\n",this, debugstr_w(pszFile)); - - if (!pszFile) return E_INVALIDARG; + + TRACE("(%p)->(path=%s)\n", this, debugstr_w(pszFile)); + + if (!pszFile) + return E_INVALIDARG; /* quotes at the ends of the string are stripped */ - len = wcslen(pszFile); + UINT len = wcslen(pszFile); if (pszFile[0] == '"' && pszFile[len-1] == '"') { unquoted = strdupW(pszFile); @@ -1628,52 +1601,56 @@ ILFree(pPidl); pPidl = NULL; - if (S_OK != ShellLink_SetAdvertiseInfo(pszFile )) - { + if (S_OK != ShellLink_SetAdvertiseInfo(pszFile)) + { + WCHAR buffer[MAX_PATH]; + LPWSTR fname; + if (*pszFile == '\0') *buffer = '\0'; else if (!GetFullPathNameW(pszFile, MAX_PATH, buffer, &fname)) return E_FAIL; else if(!PathFileExistsW(buffer) && - !SearchPathW(NULL, pszFile, NULL, MAX_PATH, buffer, NULL)) + !SearchPathW(NULL, pszFile, NULL, MAX_PATH, buffer, NULL)) hr = S_FALSE; pPidl = SHSimpleIDListFromPathW(pszFile); ShellLink_GetVolumeInfo(buffer, &volume); - sPath = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, - (wcslen( buffer )+1) * sizeof (WCHAR) ); + sPath = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, + (wcslen(buffer) + 1) * sizeof (WCHAR)); if (!sPath) return E_OUTOFMEMORY; wcscpy(sPath, buffer); } + bDirty = TRUE; HeapFree(GetProcessHeap(), 0, unquoted); return hr; } -HRESULT WINAPI CShellLink::AddDataBlock(void* pDataBlock ) +HRESULT WINAPI CShellLink::AddDataBlock(void* pDataBlock) { FIXME("\n"); return E_NOTIMPL; } -HRESULT WINAPI CShellLink::CopyDataBlock(DWORD dwSig, void** ppDataBlock ) +HRESULT WINAPI CShellLink::CopyDataBlock(DWORD dwSig, void** ppDataBlock) { LPVOID block = NULL; - HRESULT r = E_FAIL; - - TRACE("%p %08x %p\n", this, dwSig, ppDataBlock ); + HRESULT hr = E_FAIL; + + TRACE("%p %08x %p\n", this, dwSig, ppDataBlock); switch (dwSig) { case EXP_DARWIN_ID_SIG: if (!sComponent) break; - block = shelllink_build_darwinid( sComponent, dwSig ); - r = S_OK; + block = shelllink_build_darwinid(sComponent, dwSig); + hr = S_OK; break; case EXP_SZ_LINK_SIG: case NT_CONSOLE_PROPS_SIG: @@ -1686,20 +1663,20 @@ ERR("unknown datablock %08x\n", dwSig); } *ppDataBlock = block; - return r; -} - -HRESULT WINAPI CShellLink::RemoveDataBlock(DWORD dwSig ) + return hr; +} + +HRESULT WINAPI CShellLink::RemoveDataBlock(DWORD dwSig) { FIXME("\n"); return E_NOTIMPL; } -HRESULT WINAPI CShellLink::GetFlags(DWORD* pdwFlags ) +HRESULT WINAPI CShellLink::GetFlags(DWORD *pdwFlags) { DWORD flags = 0; - FIXME("%p %p\n", this, pdwFlags ); + FIXME("%p %p\n", this, pdwFlags); /* FIXME: add more */ if (sArgs) @@ -1720,7 +1697,7 @@ return S_OK; } -HRESULT WINAPI CShellLink::SetFlags(DWORD dwFlags ) +HRESULT WINAPI CShellLink::SetFlags(DWORD dwFlags) { FIXME("\n"); return E_NOTIMPL; @@ -1731,63 +1708,59 @@ * * Loads the shelllink from the dataobject the shell is pointing to. */ -HRESULT WINAPI CShellLink::Initialize(LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID ) -{ +HRESULT WINAPI CShellLink::Initialize(LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID) +{ + TRACE("%p %p %p %p\n", this, pidlFolder, pdtobj, hkeyProgID); + + if (!pdtobj) + return E_FAIL; + FORMATETC format; - STGMEDIUM stgm; - UINT count; - HRESULT r = E_FAIL; - - TRACE("%p %p %p %p\n", this, pidlFolder, pdtobj, hkeyProgID ); - - if( !pdtobj ) - return r; - format.cfFormat = CF_HDROP; format.ptd = NULL; format.dwAspect = DVASPECT_CONTENT; format.lindex = -1; format.tymed = TYMED_HGLOBAL; - if( FAILED(pdtobj->GetData(&format, &stgm ) ) ) - return r; - - count = DragQueryFileW((HDROP)stgm.hGlobal, -1, NULL, 0 ); - if( count == 1 ) - { - LPWSTR path; - - count = DragQueryFileW((HDROP)stgm.hGlobal, 0, NULL, 0 ); + STGMEDIUM stgm; + HRESULT hr = pdtobj->GetData(&format, &stgm); + if (FAILED(hr)) + return hr; + + UINT count = DragQueryFileW((HDROP)stgm.hGlobal, -1, NULL, 0); + if (count == 1) + { + count = DragQueryFileW((HDROP)stgm.hGlobal, 0, NULL, 0); count++; - path = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, count*sizeof(WCHAR) ); - if( path ) + LPWSTR path = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, count * sizeof(WCHAR)); + if (path) { - count = DragQueryFileW((HDROP)stgm.hGlobal, 0, path, count ); - r = Load(path, 0 ); - HeapFree(GetProcessHeap(), 0, path ); + count = DragQueryFileW((HDROP)stgm.hGlobal, 0, path, count); + hr = Load(path, 0); + HeapFree(GetProcessHeap(), 0, path); } } - ReleaseStgMedium(&stgm ); - - return r; + ReleaseStgMedium(&stgm); + + return S_OK; } HRESULT WINAPI CShellLink::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) { - WCHAR wszOpen[20]; - MENUITEMINFOW mii; int id = 1; TRACE("%p %p %u %u %u %u\n", this, - hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags ); + hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags); if (!hMenu) return E_INVALIDARG; - if (!LoadStringW(shell32_hInstance, IDS_OPEN_VERB, wszOpen, sizeof(wszOpen)/sizeof(WCHAR))) + WCHAR wszOpen[20]; + if (!LoadStringW(shell32_hInstance, IDS_OPEN_VERB, wszOpen, _countof(wszOpen))) wszOpen[0] = L'\0'; - memset( &mii, 0, sizeof(mii) ); + MENUITEMINFOW mii; + memset(&mii, 0, sizeof(mii)); mii.cbSize = sizeof (mii); mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE; mii.dwTypeData = wszOpen; @@ -1803,79 +1776,73 @@ } static LPWSTR -shelllink_get_msi_component_path( LPWSTR component ) -{ - LPWSTR path; - DWORD r, sz = 0; - - r = CommandLineFromMsiDescriptor( component, NULL, &sz ); - if (r != ERROR_SUCCESS) - return NULL; +shelllink_get_msi_component_path(LPWSTR component) +{ + DWORD Result, sz = 0; + + Result = CommandLineFromMsiDescriptor(component, NULL, &sz); + if (Result != ERROR_SUCCESS) + return NULL; sz++; - path = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, sz*sizeof(WCHAR) ); - r = CommandLineFromMsiDescriptor( component, path, &sz ); - if (r != ERROR_SUCCESS) - { - HeapFree( GetProcessHeap(), 0, path ); + LPWSTR path = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, sz * sizeof(WCHAR)); + Result = CommandLineFromMsiDescriptor(component, path, &sz); + if (Result != ERROR_SUCCESS) + { + HeapFree(GetProcessHeap(), 0, path); path = NULL; } - TRACE("returning %s\n", debugstr_w( path ) ); + TRACE("returning %s\n", debugstr_w(path)); return path; } HRESULT WINAPI CShellLink::InvokeCommand(LPCMINVOKECOMMANDINFO lpici) { - static const WCHAR szOpen[] = { 'o','p','e','n',0 }; - static const WCHAR szCplOpen[] = { 'c','p','l','o','p','e','n',0 }; - SHELLEXECUTEINFOW sei; HWND hwnd = NULL; /* FIXME: get using interface set from IObjectWithSite */ LPWSTR args = NULL; LPWSTR path = NULL; - HRESULT r; - - TRACE("%p %p\n", this, lpici ); - - if ( lpici->cbSize < sizeof (CMINVOKECOMMANDINFO) ) + + TRACE("%p %p\n", this, lpici); + + if (lpici->cbSize < sizeof (CMINVOKECOMMANDINFO)) return E_INVALIDARG; - r = Resolve(hwnd, 0 ); - if ( FAILED( r ) ) - { - TRACE("failed to resolve component with error 0x%08x", r); - return r; - } - if ( sComponent ) - { - path = shelllink_get_msi_component_path( sComponent ); + HRESULT hr = Resolve(hwnd, 0); + if (FAILED(hr)) + { + TRACE("failed to resolve component with error 0x%08x", hr); + return hr; + } + if (sComponent) + { + path = shelllink_get_msi_component_path(sComponent); if (!path) return E_FAIL; } else - path = strdupW( sPath ); - - if ( lpici->cbSize == sizeof (CMINVOKECOMMANDINFOEX) && - ( lpici->fMask & CMIC_MASK_UNICODE ) ) + path = strdupW(sPath); + + if (lpici->cbSize == sizeof (CMINVOKECOMMANDINFOEX) && + (lpici->fMask & CMIC_MASK_UNICODE)) { LPCMINVOKECOMMANDINFOEX iciex = (LPCMINVOKECOMMANDINFOEX) lpici; DWORD len = 2; - if ( sArgs ) - len += wcslen( sArgs ); - if ( iciex->lpParametersW ) - len += wcslen( iciex->lpParametersW ); - - args = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) ); + if (sArgs) + len += wcslen(sArgs); + if (iciex->lpParametersW) + len += wcslen(iciex->lpParametersW); + + args = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); args[0] = 0; - if ( sArgs ) - wcscat( args, sArgs ); - if ( iciex->lpParametersW ) + if (sArgs) + wcscat(args, sArgs); + if (iciex->lpParametersW) { - static const WCHAR space[] = { ' ', 0 }; - wcscat( args, space ); - wcscat( args, iciex->lpParametersW ); + wcscat(args, L" "); + wcscat(args, iciex->lpParametersW); } } else if (sArgs != NULL) @@ -1883,35 +1850,34 @@ args = strdupW(sArgs); } - memset( &sei, 0, sizeof sei ); + SHELLEXECUTEINFOW sei; + memset(&sei, 0, sizeof sei); sei.cbSize = sizeof sei; - sei.fMask = SEE_MASK_UNICODE | (lpici->fMask & (SEE_MASK_NOASYNC|SEE_MASK_ASYNCOK|SEE_MASK_FLAG_NO_UI)); + sei.fMask = SEE_MASK_UNICODE | (lpici->fMask & (SEE_MASK_NOASYNC | SEE_MASK_ASYNCOK | SEE_MASK_FLAG_NO_UI)); sei.lpFile = path; sei.nShow = iShowCmd; sei.lpDirectory = sWorkDir; sei.lpParameters = args; - sei.lpVerb = szOpen; + sei.lpVerb = L"open"; // HACK for ShellExecuteExW - if (!wcsstr(sPath, L".cpl")) - sei.lpVerb = szOpen; + if (wcsstr(sPath, L".cpl")) + sei.lpVerb = L"cplopen"; + + if (ShellExecuteExW(&sei)) + hr = S_OK; else - sei.lpVerb = szCplOpen; - - if( ShellExecuteExW( &sei ) ) - r = S_OK; - else - r = E_FAIL; - - HeapFree( GetProcessHeap(), 0, args ); - HeapFree( GetProcessHeap(), 0, path ); - - return r; + hr = E_FAIL; + + HeapFree(GetProcessHeap(), 0, args); + HeapFree(GetProcessHeap(), 0, path); + + return hr; } HRESULT WINAPI CShellLink::GetCommandString(UINT_PTR idCmd, UINT uType, UINT* pwReserved, LPSTR pszName, UINT cchMax) { - FIXME("%p %lu %u %p %p %u\n", this, idCmd, uType, pwReserved, pszName, cchMax ); + FIXME("%p %lu %u %p %p %u\n", this, idCmd, uType, pwReserved, pszName, cchMax); return E_NOTIMPL; } @@ -1919,22 +1885,21 @@ INT_PTR CALLBACK ExtendedShortcutProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { - HWND hDlgCtrl; - switch(uMsg) { case WM_INITDIALOG: if (lParam) { - hDlgCtrl = GetDlgItem(hwndDlg, 14000); + HWND hDlgCtrl = GetDlgItem(hwndDlg, 14000); SendMessage(hDlgCtrl, BM_SETCHECK, BST_CHECKED, 0); } return TRUE; case WM_COMMAND: - hDlgCtrl = GetDlgItem(hwndDlg, 14000); + { + HWND hDlgCtrl = GetDlgItem(hwndDlg, 14000); if (LOWORD(wParam) == IDOK) { - if ( SendMessage(hDlgCtrl, BM_GETCHECK, 0, 0) == BST_CHECKED ) + if (SendMessage(hDlgCtrl, BM_GETCHECK, 0, 0) == BST_CHECKED) EndDialog(hwndDlg, 1); else EndDialog(hwndDlg, 0); @@ -1945,11 +1910,12 @@ } else if (LOWORD(wParam) == 14000) { - if ( SendMessage(hDlgCtrl, BM_GETCHECK, 0, 0) == BST_CHECKED) + if (SendMessage(hDlgCtrl, BM_GETCHECK, 0, 0) == BST_CHECKED) SendMessage(hDlgCtrl, BM_SETCHECK, BST_UNCHECKED, 0); else SendMessage(hDlgCtrl, BM_SETCHECK, BST_CHECKED, 0); } + } } return FALSE; } @@ -1972,13 +1938,27 @@ if (ppsp == NULL) break; - TRACE("ShellLink_DlgProc (WM_INITDIALOG hwnd %p lParam %p ppsplParam %x)\n",hwndDlg, lParam, ppsp->lParam); + TRACE("ShellLink_DlgProc (WM_INITDIALOG hwnd %p lParam %p ppsplParam %x)\n", hwndDlg, lParam, ppsp->lParam); pThis = (CShellLink *)ppsp->lParam; SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pThis); TRACE("sArgs: %S sComponent: %S sDescription: %S sIcoPath: %S sPath: %S sPathRel: %S sProduct: %S sWorkDir: %S\n", pThis->sArgs, pThis->sComponent, pThis->sDescription, - pThis->sIcoPath, pThis->sPath, pThis->sPathRel, pThis->sProduct, pThis->sWorkDir); + pThis->sIcoPath, pThis->sPath, pThis->sPathRel, pThis->sProduct, pThis->sWorkDir); + + /* Get file information */ + SHFILEINFO fi; + if (!SHGetFileInfoW(pThis->sLinkPath, 0, &fi, sizeof(fi), SHGFI_TYPENAME|SHGFI_ICON)) + { + ERR("SHGetFileInfoW failed for %ls (%lu)\n", pThis->sLinkPath, GetLastError()); + fi.szTypeName[0] = L'\0'; + fi.hIcon = NULL; + } + + if (fi.hIcon) // TODO: destroy icon + SendDlgItemMessageW(hwndDlg, 14000, STM_SETICON, (WPARAM)fi.hIcon, 0); + else + ERR("ExtractIconW failed %ls %u\n", pThis->sIcoPath, pThis->iIcoNdx); /* target location */ if (pThis->sWorkDir) @@ -2060,7 +2040,7 @@ } return TRUE; } - + case 14022: { INT_PTR result = DialogBoxParamW(shell32_hInstance, MAKEINTRESOURCEW(SHELL_EXTENDED_SHORTCUT_DLG), hwndDlg, ExtendedShortcutProc, (LPARAM)pThis->bRunAs); @@ -2076,12 +2056,8 @@ return TRUE; } } - switch(HIWORD(wParam)) - { - case EN_CHANGE: + if(HIWORD(wParam) == EN_CHANGE) PropSheet_Changed(GetParent(hwndDlg), hwndDlg); - break; - } break; default: break; @@ -2095,21 +2071,17 @@ HRESULT WINAPI CShellLink::AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam) { - HPROPSHEETPAGE hPage; - BOOL bRet; - - hPage = SH_CreatePropertySheetPage("SHELL_GENERAL_SHORTCUT_DLG", SH_ShellLinkDlgProc, (LPARAM)this, NULL); + HPROPSHEETPAGE hPage = SH_CreatePropertySheetPage("SHELL_GENERAL_SHORTCUT_DLG", SH_ShellLinkDlgProc, (LPARAM)this, NULL); if (hPage == NULL) { - ERR("failed to create property sheet page\n"); - return E_FAIL; - } - - bRet = pfnAddPage(hPage, lParam); - if (bRet) - return S_OK; - else - return E_FAIL; + ERR("failed to create property sheet page\n"); + return E_FAIL; + } + + if (!pfnAddPage(hPage, lParam)) + return E_FAIL; + + return S_OK; } HRESULT WINAPI CShellLink::ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam) @@ -2129,11 +2101,12 @@ HRESULT WINAPI CShellLink::GetSite(REFIID iid, void ** ppvSite) { - TRACE("%p %s %p\n", this, debugstr_guid(&iid), ppvSite ); + TRACE("%p %s %p\n", this, debugstr_guid(&iid), ppvSite); if (site == NULL) return E_FAIL; - return site->QueryInterface(iid, ppvSite ); + + return site->QueryInterface(iid, ppvSite); } /************************************************************************** @@ -2141,13 +2114,13 @@ */ HRESULT WINAPI IShellLink_ConstructFromFile(IUnknown *pUnkOuter, REFIID riid, LPCITEMIDLIST pidl, LPVOID *ppv) { - CComPtr<IUnknown> psl; + CComPtr<IUnknown> psl; HRESULT hr = CShellLink::_CreatorClass::CreateInstance(NULL, riid, (void**)&psl); if (SUCCEEDED(hr)) { - CComPtr<IPersistFile> ppf; + CComPtr<IPersistFile> ppf; *ppv = NULL;
12 years, 9 months
1
0
0
0
[ion] 54990: Fix boot. The fact this fixes it should worry about the state of CSRSS...
by ion@svn.reactos.org
Author: ion Date: Tue Jan 17 17:42:47 2012 New Revision: 54990 URL:
http://svn.reactos.org/svn/reactos?rev=54990&view=rev
Log: Fix boot. The fact this fixes it should worry about the state of CSRSS... Modified: trunk/reactos/dll/win32/kernel32/client/proc.c trunk/reactos/include/reactos/subsys/csrss/csrss.h Modified: trunk/reactos/dll/win32/kernel32/client/proc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/proc.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/proc.c [iso-8859-1] Tue Jan 17 17:42:47 2012 @@ -801,7 +801,6 @@ SIZE_T Size; BOOLEAN HavePebLock = FALSE, Result; PPEB Peb = NtCurrentPeb(); - DPRINT("BasePushProcessParameters\n"); /* Get the full path name */ Size = GetFullPathNameW(ApplicationPathName, @@ -1050,7 +1049,7 @@ RTL_USER_PROCESS_PARAMETERS_PROFILE_KERNEL : 0; ProcessParameters->Flags |= (CreationFlags & PROFILE_SERVER) ? RTL_USER_PROCESS_PARAMETERS_PROFILE_SERVER : 0; - ProcessParameters->Flags |= (NtCurrentPeb()->ProcessParameters->Flags & + ProcessParameters->Flags |= (Peb->ProcessParameters->Flags & RTL_USER_PROCESS_PARAMETERS_DISABLE_HEAP_CHECKS); /* Write the Parameter Block */ @@ -1068,7 +1067,7 @@ sizeof(PVOID), NULL); if (!NT_SUCCESS(Status)) goto FailPath; - + /* Check if there's any app compat data to write */ RemoteAppCompatData = NULL; if (AppCompatData) @@ -1082,7 +1081,7 @@ MEM_COMMIT, PAGE_READWRITE); if (!NT_SUCCESS(Status)) goto FailPath; - + /* Write the application compatibility data */ Status = NtWriteVirtualMemory(ProcessHandle, RemoteAppCompatData, @@ -1091,7 +1090,7 @@ NULL); if (!NT_SUCCESS(Status)) goto FailPath; } - + /* Write the PEB Pointer to the app compat data (might be NULL) */ Status = NtWriteVirtualMemory(ProcessHandle, &RemotePeb->pShimData, @@ -1109,7 +1108,7 @@ sizeof(ImageSubsystem), NULL); } - + /* Success path */ Result = TRUE; Modified: trunk/reactos/include/reactos/subsys/csrss/csrss.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/subsys/csr…
============================================================================== --- trunk/reactos/include/reactos/subsys/csrss/csrss.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/subsys/csrss/csrss.h [iso-8859-1] Tue Jan 17 17:42:47 2012 @@ -51,6 +51,7 @@ typedef struct { +#if 0 // // NT-type structure (BASE_CREATEPROCESS_MSG) // @@ -65,6 +66,7 @@ PVOID PebAddressNative; ULONG PebAddressWow64; USHORT ProcessorArchitecture; +#endif // // ReactOS Data //
12 years, 9 months
1
0
0
0
[rharabien] 54989: [SHELL32] - Remove useless function
by rharabien@svn.reactos.org
Author: rharabien Date: Tue Jan 17 16:49:39 2012 New Revision: 54989 URL:
http://svn.reactos.org/svn/reactos?rev=54989&view=rev
Log: [SHELL32] - Remove useless function Modified: trunk/reactos/dll/win32/shell32/shelllink.cpp Modified: trunk/reactos/dll/win32/shell32/shelllink.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shelllin…
============================================================================== --- trunk/reactos/dll/win32/shell32/shelllink.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/shelllink.cpp [iso-8859-1] Tue Jan 17 16:49:39 2012 @@ -201,42 +201,6 @@ return r; } -static BOOL StartLinkProcessor( LPCOLESTR szLink ) -{ - static const WCHAR szFormat[] = { - 'w','i','n','e','m','e','n','u','b','u','i','l','d','e','r','.','e','x','e', - ' ','-','w',' ','"','%','s','"',0 }; - LONG len; - LPWSTR buffer; - STARTUPINFOW si; - PROCESS_INFORMATION pi; - BOOL ret; - - len = sizeof(szFormat) + wcslen( szLink ) * sizeof(WCHAR); - buffer = (LPWSTR)HeapAlloc( GetProcessHeap(), 0, len ); - if( !buffer ) - return FALSE; - - swprintf( buffer, szFormat, szLink ); - - TRACE("starting %s\n",debugstr_w(buffer)); - - memset(&si, 0, sizeof(si)); - si.cb = sizeof(si); - - ret = CreateProcessW( NULL, buffer, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ); - - HeapFree( GetProcessHeap(), 0, buffer ); - - if (ret) - { - CloseHandle( pi.hProcess ); - CloseHandle( pi.hThread ); - } - - return ret; -} - HRESULT WINAPI CShellLink::Save(LPCOLESTR pszFileName, BOOL fRemember) { HRESULT r; @@ -263,8 +227,6 @@ { wcscpy(sLinkPath, pszFileName); } - - StartLinkProcessor( pszFileName ); bDirty = FALSE; }
12 years, 9 months
1
0
0
0
[cgutman] 54988: [NTOSKRNL] - Deallocate the process page directory when destroying its address space (removed in r48233 and now resurrected in a version compatible with ARM3) - Fixes leaking syste...
by cgutman@svn.reactos.org
Author: cgutman Date: Tue Jan 17 07:03:46 2012 New Revision: 54988 URL:
http://svn.reactos.org/svn/reactos?rev=54988&view=rev
Log: [NTOSKRNL] - Deallocate the process page directory when destroying its address space (removed in r48233 and now resurrected in a version compatible with ARM3) - Fixes leaking system pages on each process exit (868 MC_SYSTEM pages were allocated just sitting at the desktop on livecd without the patch, only 187 with the patch) Modified: trunk/reactos/ntoskrnl/include/internal/mm.h trunk/reactos/ntoskrnl/mm/i386/page.c trunk/reactos/ntoskrnl/mm/marea.c Modified: trunk/reactos/ntoskrnl/include/internal/mm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/mm.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/mm.h [iso-8859-1] Tue Jan 17 07:03:46 2012 @@ -1503,9 +1503,9 @@ NTAPI MmReleaseMmInfo(struct _EPROCESS *Process); -NTSTATUS -NTAPI -Mmi386ReleaseMmInfo(struct _EPROCESS *Process); +VOID +NTAPI +MmDeleteProcessPageDirectory(struct _EPROCESS *Process); VOID NTAPI Modified: trunk/reactos/ntoskrnl/mm/i386/page.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/i386/page.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/mm/i386/page.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/i386/page.c [iso-8859-1] Tue Jan 17 07:03:46 2012 @@ -200,6 +200,64 @@ return(Attributes); } +static +VOID +MmDeletePageDirectoryEntry(ULONG PdeEntry) +{ + KIRQL OldIrql; + PMMPFN Page; + + Page = MiGetPfnEntry(PTE_TO_PFN(PdeEntry)); + + /* Check if this is a legacy allocation */ + if (MI_IS_ROS_PFN(Page)) + { + /* Free it using the legacy API */ + MmReleasePageMemoryConsumer(MC_SYSTEM, PTE_TO_PFN(PdeEntry)); + } + else + { + OldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock); + + /* Free it using the ARM3 API */ + MI_SET_PFN_DELETED(Page); + MiDecrementShareCount(Page, PTE_TO_PFN(PdeEntry)); + + KeReleaseQueuedSpinLock(LockQueuePfnLock, OldIrql); + } +} + +VOID +NTAPI +MmDeleteProcessPageDirectory(PEPROCESS Process) +{ + PULONG PageDir; + ULONG PdeOffset; + + /* Map the page directory in hyperspace */ + PageDir = MmCreateHyperspaceMapping(PTE_TO_PFN(Process->Pcb.DirectoryTableBase[0])); + + /* Loop the user land page directory */ + for (PdeOffset = 0; PdeOffset < ADDR_TO_PDE_OFFSET(MmSystemRangeStart); PdeOffset++) + { + /* Check if a valid PDE exists here */ + if (PageDir[PdeOffset] != 0) + { + /* Free the page that backs it */ + MmDeletePageDirectoryEntry(PageDir[PdeOffset]); + } + } + + /* Free the hyperspace mapping page (ARM3) */ + MmDeletePageDirectoryEntry(PageDir[ADDR_TO_PDE_OFFSET(HYPERSPACE)]); + + /* Delete the hyperspace mapping */ + MmDeleteHyperspaceMapping(PageDir); + + /* Free the PDE page itself (ARM3) */ + MmDeletePageDirectoryEntry(Process->Pcb.DirectoryTableBase[0]); +} + static PULONG MmGetPageTableForProcess(PEPROCESS Process, PVOID Address, BOOLEAN Create) { Modified: trunk/reactos/ntoskrnl/mm/marea.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/marea.c?rev=54…
============================================================================== --- trunk/reactos/ntoskrnl/mm/marea.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/marea.c [iso-8859-1] Tue Jan 17 07:03:46 2012 @@ -1057,6 +1057,8 @@ } } + MmDeleteProcessPageDirectory(Process); + MmUnlockAddressSpace(&Process->Vm); DPRINT("Finished MmReleaseMmInfo()\n");
12 years, 9 months
1
0
0
0
← Newer
1
...
34
35
36
37
38
39
40
...
56
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
Results per page:
10
25
50
100
200