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
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
April 2008
----- 2024 -----
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
21 participants
395 discussions
Start a n
N
ew thread
[fireball] 32864: - Move msxml3.dll's preferred base to a better address.
by fireball@svn.reactos.org
Author: fireball Date: Fri Apr 4 12:06:35 2008 New Revision: 32864 URL:
http://svn.reactos.org/svn/reactos?rev=32864&view=rev
Log: - Move msxml3.dll's preferred base to a better address. Modified: trunk/reactos/baseaddress.rbuild Modified: trunk/reactos/baseaddress.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/baseaddress.rbuild?rev=328…
============================================================================== --- trunk/reactos/baseaddress.rbuild [iso-8859-1] (original) +++ trunk/reactos/baseaddress.rbuild [iso-8859-1] Fri Apr 4 12:06:35 2008 @@ -93,8 +93,8 @@ <property name="BASEADDRESS_WS2_32" value="0x74aa0000" /> <property name="BASEADDRESS_SYSSETUP" value="0x74a30000" /> <property name="BASEADDRESS_POWRPROF" value="0x74ad0000" /> + <property name="BASEADDRESS_MSXML3" value="0x74ae0000" /> <property name="BASEADDRESS_MMDRV" value="0x74c30000" /> - <property name="BASEADDRESS_MSXML3" value="0x74980000" /> <property name="BASEADDRESS_OLEDLG" value="0x74d00000" /> <property name="BASEADDRESS_SAMSRV" value="0x74f30000" /> <property name="BASEADDRESS_SAMLIB" value="0x750C0000" />
16 years, 7 months
1
0
0
0
[fireball] 32863: - Again: baseaddress.rbuild is sorted BY BASE ADDRESS, not by alphabet!
by fireball@svn.reactos.org
Author: fireball Date: Fri Apr 4 11:52:55 2008 New Revision: 32863 URL:
http://svn.reactos.org/svn/reactos?rev=32863&view=rev
Log: - Again: baseaddress.rbuild is sorted BY BASE ADDRESS, not by alphabet! Modified: trunk/reactos/baseaddress.rbuild Modified: trunk/reactos/baseaddress.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/baseaddress.rbuild?rev=328…
============================================================================== --- trunk/reactos/baseaddress.rbuild [iso-8859-1] (original) +++ trunk/reactos/baseaddress.rbuild [iso-8859-1] Fri Apr 4 11:52:55 2008 @@ -1,7 +1,6 @@ <?xml version="1.0"?> <!DOCTYPE group SYSTEM "tools/rbuild/project.dtd"> <group xmlns:xi="
http://www.w3.org/2001/XInclude
"> - <property name="BASEADDRESS_ATL" value="0x76a80000" /> <property name="BASEADDRESS_REGTESTS" value="0x07000000" /> <property name="BASEADDRESS_NOTIFYHOOK" value="0x08000000" /> <property name="BASEADDRESS_COMCAT" value="0x20A50000" /> @@ -15,7 +14,6 @@ <property name="BASEADDRESS_UXTHEME" value="0x5ad70000" /> <property name="BASEADDRESS_VDMDBG" value="0x5b0d0000" /> <property name="BASEADDRESS_OBJSEL" value="0x5b400000" /> - <property name="BASEADDRESS_TAPI32" value="0x76e60000" /> <property name="BASEADDRESS_TAPIUI" value="0x5b770000" /> <property name="BASEADDRESS_SLAYER" value="0x5c7e0000" /> <property name="BASEADDRESS_USRMGR" value="0x5c900000" /> @@ -72,6 +70,7 @@ <property name="BASEADDRESS_CLB" value="0x6f2b0000" /> <property name="BASEADDRESS_CARDS" value="0x701a0000" /> <property name="BASEADDRESS_WININET" value="0x70200000" /> + <property name="BASEADDRESS_WINHTTP" value="0x70c60000" /> <property name="BASEADDRESS_ACLUI" value="0x71550000" /> <property name="BASEADDRESS_DHCPCSVC" value="0x71650000" /> <property name="BASEADDRESS_SHDOCVW" value="0x71700000" /> @@ -125,12 +124,14 @@ <property name="BASEADDRESS_NTMARTA" value="0x768A0000" /> <property name="BASEADDRESS_RASDLG" value="0x768d0000" /> <property name="BASEADDRESS_GDIPLUS" value="0x76a00000" /> + <property name="BASEADDRESS_ATL" value="0x76a80000" /> <property name="BASEADDRESS_WINTRUST" value="0x76c30000" /> <property name="BASEADDRESS_IMAGEHLP" value="0x76c90000" /> <property name="BASEADDRESS_CLUSAPI" value="0x76d10000" /> <property name="BASEADDRESS_DHCPCSVC" value="0x76d80000" /> <property name="BASEADDRESS_FMIFS" value="0x76df0000" /> <property name="BASEADDRESS_OLEAUT32" value="0x76e00000" /> + <property name="BASEADDRESS_TAPI32" value="0x76e60000" /> <property name="BASEADDRESS_RASAPI32" value="0x76ee0000" /> <property name="BASEADDRESS_RASMAN" value="0x76e90000h" /> <property name="BASEADDRESS_WTSAPI32" value="0x76f50000" /> @@ -157,11 +158,10 @@ <property name="BASEADDRESS_DNSAPI" value="0x77fb0000" /> <property name="BASEADDRESS_MSVCRT" value="0x78000000" /> <property name="BASEADDRESS_MSVCRT20" value="0x78500000" /> + <property name="BASEADDRESS_MSCOREE" value="0x79000000" /> <property name="BASEADDRESS_KERNEL32" value="0x7c800000" /> <property name="BASEADDRESS_NTDLL" value="0x7c900000" /> <property name="BASEADDRESS_HHCTRL" value="0x7e410000" /> <property name="BASEADDRESS_BEEPMIDI" value="0x7ef0000" /> <property name="BASEADDRESS_FREETYPE" value="0x7f000000" /> - <property name="BASEADDRESS_MSCOREE" value="0x79000000" /> - <property name="BASEADDRESS_WINHTTP" value="0x70c60000" /> </group>
16 years, 7 months
1
0
0
0
[winesync] 32862: Autosyncing with Wine HEAD
by winesync@svn.reactos.org
Author: winesync Date: Fri Apr 4 11:43:16 2008 New Revision: 32862 URL:
http://svn.reactos.org/svn/reactos?rev=32862&view=rev
Log: Autosyncing with Wine HEAD Added: trunk/rostests/winetests/imm32/ trunk/rostests/winetests/imm32/imm32.c (with props) trunk/rostests/winetests/imm32/imm32.rbuild (with props) trunk/rostests/winetests/imm32/testlist.c (with props) trunk/rostests/winetests/riched32/ trunk/rostests/winetests/riched32/editor.c (with props) trunk/rostests/winetests/riched32/riched32.rbuild (with props) trunk/rostests/winetests/riched32/testlist.c (with props) trunk/rostests/winetests/shlwapi/istream.c (with props) Modified: trunk/rostests/winetests/advpack/advpack.c trunk/rostests/winetests/advpack/advpack.rbuild trunk/rostests/winetests/advpack/files.c trunk/rostests/winetests/advpack/install.c trunk/rostests/winetests/cabinet/cabinet.rbuild trunk/rostests/winetests/cabinet/extract.c trunk/rostests/winetests/cabinet/fdi.c trunk/rostests/winetests/comcat/comcat.rbuild trunk/rostests/winetests/comctl32/comboex.c trunk/rostests/winetests/comctl32/comctl32.rbuild trunk/rostests/winetests/comctl32/datetime.c trunk/rostests/winetests/comctl32/dpa.c trunk/rostests/winetests/comctl32/header.c trunk/rostests/winetests/comctl32/listview.c trunk/rostests/winetests/comctl32/monthcal.c trunk/rostests/winetests/comctl32/progress.c trunk/rostests/winetests/comctl32/rebar.c trunk/rostests/winetests/comctl32/toolbar.c trunk/rostests/winetests/comctl32/tooltips.c trunk/rostests/winetests/comctl32/treeview.c trunk/rostests/winetests/comdlg32/comdlg32.rbuild trunk/rostests/winetests/comdlg32/printdlg.c trunk/rostests/winetests/directory.rbuild trunk/rostests/winetests/hlink/hlink.c trunk/rostests/winetests/hlink/hlink.rbuild trunk/rostests/winetests/lz32/lz32.rbuild trunk/rostests/winetests/lz32/lzexpand_main.c trunk/rostests/winetests/mapi32/mapi32.rbuild trunk/rostests/winetests/mapi32/prop.c trunk/rostests/winetests/mlang/mlang.rbuild trunk/rostests/winetests/msi/automation.c trunk/rostests/winetests/msi/db.c trunk/rostests/winetests/msi/format.c trunk/rostests/winetests/msi/install.c trunk/rostests/winetests/msi/msi.c trunk/rostests/winetests/msi/msi.rbuild trunk/rostests/winetests/msi/package.c trunk/rostests/winetests/msi/record.c trunk/rostests/winetests/msi/source.c trunk/rostests/winetests/msi/suminfo.c trunk/rostests/winetests/netapi32/access.c trunk/rostests/winetests/netapi32/netapi32.rbuild trunk/rostests/winetests/netapi32/wksta.c trunk/rostests/winetests/odbccp32/odbccp32.rbuild trunk/rostests/winetests/riched20/editor.c trunk/rostests/winetests/riched20/riched20.rbuild trunk/rostests/winetests/rsaenh/rsaenh.c trunk/rostests/winetests/rsaenh/rsaenh.rbuild trunk/rostests/winetests/shlwapi/generated.c trunk/rostests/winetests/shlwapi/path.c trunk/rostests/winetests/shlwapi/shlwapi.rbuild trunk/rostests/winetests/shlwapi/string.c trunk/rostests/winetests/shlwapi/testlist.c trunk/rostests/winetests/shlwapi/url.c trunk/rostests/winetests/urlmon/generated.c trunk/rostests/winetests/urlmon/misc.c trunk/rostests/winetests/urlmon/protocol.c trunk/rostests/winetests/urlmon/stream.c trunk/rostests/winetests/urlmon/url.c trunk/rostests/winetests/urlmon/urlmon.rbuild trunk/rostests/winetests/uxtheme/system.c trunk/rostests/winetests/uxtheme/uxtheme.rbuild trunk/rostests/winetests/version/info.c trunk/rostests/winetests/version/version.rbuild [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/rostests/winetests/advpack/advpack.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/advpack/advpack…
Modified: trunk/rostests/winetests/advpack/advpack.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/advpack/advpack…
Modified: trunk/rostests/winetests/advpack/files.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/advpack/files.c…
Modified: trunk/rostests/winetests/advpack/install.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/advpack/install…
Modified: trunk/rostests/winetests/cabinet/cabinet.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/cabinet/cabinet…
Modified: trunk/rostests/winetests/cabinet/extract.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/cabinet/extract…
Modified: trunk/rostests/winetests/cabinet/fdi.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/cabinet/fdi.c?r…
Modified: trunk/rostests/winetests/comcat/comcat.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comcat/comcat.r…
Modified: trunk/rostests/winetests/comctl32/comboex.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/comboe…
Modified: trunk/rostests/winetests/comctl32/comctl32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/comctl…
Modified: trunk/rostests/winetests/comctl32/datetime.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/dateti…
Modified: trunk/rostests/winetests/comctl32/dpa.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/dpa.c?…
Modified: trunk/rostests/winetests/comctl32/header.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/header…
Modified: trunk/rostests/winetests/comctl32/listview.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/listvi…
Modified: trunk/rostests/winetests/comctl32/monthcal.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/monthc…
Modified: trunk/rostests/winetests/comctl32/progress.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/progre…
Modified: trunk/rostests/winetests/comctl32/rebar.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/rebar.…
Modified: trunk/rostests/winetests/comctl32/toolbar.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/toolba…
Modified: trunk/rostests/winetests/comctl32/tooltips.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/toolti…
Modified: trunk/rostests/winetests/comctl32/treeview.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comctl32/treevi…
Modified: trunk/rostests/winetests/comdlg32/comdlg32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comdlg32/comdlg…
Modified: trunk/rostests/winetests/comdlg32/printdlg.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/comdlg32/printd…
Modified: trunk/rostests/winetests/directory.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/directory.rbuil…
Modified: trunk/rostests/winetests/hlink/hlink.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/hlink/hlink.c?r…
Modified: trunk/rostests/winetests/hlink/hlink.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/hlink/hlink.rbu…
Added: trunk/rostests/winetests/imm32/imm32.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/imm32/imm32.c?r…
Added: trunk/rostests/winetests/imm32/imm32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/imm32/imm32.rbu…
Added: trunk/rostests/winetests/imm32/testlist.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/imm32/testlist.…
Modified: trunk/rostests/winetests/lz32/lz32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/lz32/lz32.rbuil…
Modified: trunk/rostests/winetests/lz32/lzexpand_main.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/lz32/lzexpand_m…
Modified: trunk/rostests/winetests/mapi32/mapi32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mapi32/mapi32.r…
Modified: trunk/rostests/winetests/mapi32/prop.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mapi32/prop.c?r…
Modified: trunk/rostests/winetests/mlang/mlang.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mlang/mlang.rbu…
Modified: trunk/rostests/winetests/msi/automation.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/automation.…
Modified: trunk/rostests/winetests/msi/db.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/db.c?rev=32…
Modified: trunk/rostests/winetests/msi/format.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/format.c?re…
Modified: trunk/rostests/winetests/msi/install.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/install.c?r…
Modified: trunk/rostests/winetests/msi/msi.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/msi.c?rev=3…
Modified: trunk/rostests/winetests/msi/msi.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/msi.rbuild?…
Modified: trunk/rostests/winetests/msi/package.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/package.c?r…
Modified: trunk/rostests/winetests/msi/record.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/record.c?re…
Modified: trunk/rostests/winetests/msi/source.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/source.c?re…
Modified: trunk/rostests/winetests/msi/suminfo.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/suminfo.c?r…
Modified: trunk/rostests/winetests/netapi32/access.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/netapi32/access…
Modified: trunk/rostests/winetests/netapi32/netapi32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/netapi32/netapi…
Modified: trunk/rostests/winetests/netapi32/wksta.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/netapi32/wksta.…
Modified: trunk/rostests/winetests/odbccp32/odbccp32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/odbccp32/odbccp…
Modified: trunk/rostests/winetests/riched20/editor.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/riched20/editor…
Modified: trunk/rostests/winetests/riched20/riched20.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/riched20/riched…
Added: trunk/rostests/winetests/riched32/editor.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/riched32/editor…
Added: trunk/rostests/winetests/riched32/riched32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/riched32/riched…
Added: trunk/rostests/winetests/riched32/testlist.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/riched32/testli…
Modified: trunk/rostests/winetests/rsaenh/rsaenh.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/rsaenh/rsaenh.c…
Modified: trunk/rostests/winetests/rsaenh/rsaenh.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/rsaenh/rsaenh.r…
Modified: trunk/rostests/winetests/shlwapi/generated.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/generat…
Added: trunk/rostests/winetests/shlwapi/istream.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/istream…
Modified: trunk/rostests/winetests/shlwapi/path.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/path.c?…
Modified: trunk/rostests/winetests/shlwapi/shlwapi.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/shlwapi…
Modified: trunk/rostests/winetests/shlwapi/string.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/string.…
Modified: trunk/rostests/winetests/shlwapi/testlist.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/testlis…
Modified: trunk/rostests/winetests/shlwapi/url.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/url.c?r…
Modified: trunk/rostests/winetests/urlmon/generated.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/urlmon/generate…
Modified: trunk/rostests/winetests/urlmon/misc.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/urlmon/misc.c?r…
Modified: trunk/rostests/winetests/urlmon/protocol.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/urlmon/protocol…
Modified: trunk/rostests/winetests/urlmon/stream.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/urlmon/stream.c…
Modified: trunk/rostests/winetests/urlmon/url.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/urlmon/url.c?re…
Modified: trunk/rostests/winetests/urlmon/urlmon.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/urlmon/urlmon.r…
Modified: trunk/rostests/winetests/uxtheme/system.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/uxtheme/system.…
Modified: trunk/rostests/winetests/uxtheme/uxtheme.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/uxtheme/uxtheme…
Modified: trunk/rostests/winetests/version/info.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/version/info.c?…
Modified: trunk/rostests/winetests/version/version.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/version/version…
16 years, 7 months
1
0
0
0
[winesync] 32861: Autosyncing with Wine HEAD
by winesync@svn.reactos.org
Author: winesync Date: Fri Apr 4 10:10:09 2008 New Revision: 32861 URL:
http://svn.reactos.org/svn/reactos?rev=32861&view=rev
Log: Autosyncing with Wine HEAD Added: trunk/reactos/dll/win32/wldap32/wldap32_Pl.rc (with props) Modified: trunk/reactos/dll/win32/wldap32/wldap32.rbuild trunk/reactos/dll/win32/wldap32/wldap32.rc Modified: trunk/reactos/dll/win32/wldap32/wldap32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wldap32/wldap32.…
============================================================================== --- trunk/reactos/dll/win32/wldap32/wldap32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wldap32/wldap32.rbuild [iso-8859-1] Fri Apr 4 10:10:09 2008 @@ -8,10 +8,6 @@ <define name="__WINESRC__" /> <define name="WINVER">0x600</define> <define name="_WIN32_WINNT">0x600</define> - <library>wine</library> - <library>user32</library> - <library>kernel32</library> - <library>ntdll</library> <file>add.c</file> <file>ber.c</file> <file>bind.c</file> @@ -34,5 +30,9 @@ <file>value.c</file> <file>wldap32.rc</file> <file>wldap32.spec</file> + <library>wine</library> + <library>user32</library> + <library>kernel32</library> + <library>ntdll</library> </module> </group> Modified: trunk/reactos/dll/win32/wldap32/wldap32.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wldap32/wldap32.…
============================================================================== --- trunk/reactos/dll/win32/wldap32/wldap32.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wldap32/wldap32.rc [iso-8859-1] Fri Apr 4 10:10:09 2008 @@ -29,6 +29,7 @@ #include "wldap32_Ko.rc" #include "wldap32_Nl.rc" #include "wldap32_No.rc" +#include "wldap32_Pl.rc" #include "wldap32_Ru.rc" #include "wldap32_Sv.rc" #include "wldap32_Tr.rc" Added: trunk/reactos/dll/win32/wldap32/wldap32_Pl.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wldap32/wldap32_…
============================================================================== --- trunk/reactos/dll/win32/wldap32/wldap32_Pl.rc (added) +++ trunk/reactos/dll/win32/wldap32/wldap32_Pl.rc [iso-8859-1] Fri Apr 4 10:10:09 2008 @@ -1,0 +1,124 @@ +/* + * Polish resources for WLDAP32 + * + * Copyright 2005 Hans Leidekker + * Copyright 2008 Mikolaj Zalewski + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +STRINGTABLE DISCARDABLE +{ + 0 "Sukces" + 1 "B³¹d operacji" + 2 "B³¹d protoko³u" + 3 "Przekroczony limit czasu" + 4 "Przekroczony limit rozmiaru" + 5 "Porównanie da³o wynik negatywny" + 6 "Porównanie da³o wynik pozytywny" + 7 "Metoda uwierzytelniania nie jest obs³ugiwana" + 8 "Wymagana mocna metoda uwierzytelniania" + 9 "Odwo³anie (v2)" + 10 "Odwo³anie" + 11 "Przekroczony limit administracyjny na serwerze" + 12 "Bezwzglêdnie wymagane rozszerzenie nie jest dostêpne" + 13 "Wymagana poufnoæ" + 14 "" + 15 "" + 16 "Nie ma takiego atrybutu" + 17 "Niezdefiniowany typ" + 18 "Nieodpowiednie dopasowanie" + 19 "Naruszenie wiêzów" + 20 "Atrybut lub wartoæ ju¿ isniej¹" + 21 "B³¹d sk³adni" + 22 "" + 23 "" + 24 "" + 25 "" + 26 "" + 27 "" + 28 "" + 29 "" + 30 "" + 31 "" + 32 "Nie ma takiego obiektu" + 33 "Problem aliasu" + 34 "B³¹d sk³adni DN" + 35 "Jest liciem" + 36 "Problem z odwo³aniem do aliasu" + 37 "" + 38 "" + 39 "" + 40 "" + 41 "" + 42 "" + 43 "" + 44 "" + 45 "" + 46 "" + 47 "" + 48 "Niew³aciwe uwierzytelnienie" + 49 "Nieprawid³owe powiadczenie" + 50 "Niewystarczaj¹ce prawa dostêpu" + 51 "Zajêty" + 52 "Niedostêpny" + 53 "Brak chêci wykonania" + 54 "Wykryto pêtlê" + 55 "" + 56 "" + 57 "" + 58 "" + 59 "" + 60 "Brak formantu sortowania" + 61 "B³¹d zakresu indeksu" + 62 "" + 63 "" + 64 "Naruszenie zasad nazewnictwa" + 65 "Naruszenie klasy obiektu" + 66 "Operacja niedozwolona na nie-liciu" + 67 "Operacja niedozwolona na RDN" + 68 "Ju¿ istnieje" + 69 "Nie mo¿na modyfikowaæ klasy obiektu" + 70 "Wynik zbyt du¿y" + 71 "Dotyczy wielu DSA" + 72 "" + 73 "" + 74 "" + 75 "" + 76 "" + 77 "" + 78 "" + 79 "" + 80 "Inne" + 81 "Serwer wy³¹czony" + 82 "B³¹d lokalny" + 83 "B³¹d podczas kodowania" + 84 "B³¹d podczas dekodowania" + 85 "Limit czasu" + 86 "Nieznane uwierzytelnianie" + 87 "B³¹d filtru" + 88 "Akcja anulowana przez u¿ytkownika" + 89 "B³êdny parametr" + 90 "Brak pamiêci" + 91 "Nie mo¿na siê po³¹czyæ z serwerem LDAP" + 92 "Operacja nie jest obs³ugiwana przez tê wersjê protoko³u LDAP" + 93 "Brak okrelonego formantu w wiadomoci" + 94 "Brak wyników z wiadomoci" + 95 "Zwrócono wiêcej wyników" + 96 "Natrafiono na pêtlê podczas obs³ugi odwo³añ" + 97 "Przekroczono limit skoków odwo³añ" +} Propchange: trunk/reactos/dll/win32/wldap32/wldap32_Pl.rc ------------------------------------------------------------------------------ svn:eol-style = native
16 years, 7 months
1
0
0
0
[winesync] 32860: Autosyncing with Wine HEAD
by winesync@svn.reactos.org
Author: winesync Date: Fri Apr 4 09:43:57 2008 New Revision: 32860 URL:
http://svn.reactos.org/svn/reactos?rev=32860&view=rev
Log: Autosyncing with Wine HEAD Modified: trunk/reactos/dll/win32/uxtheme/draw.c trunk/reactos/dll/win32/uxtheme/metric.c trunk/reactos/dll/win32/uxtheme/msstyles.c trunk/reactos/dll/win32/uxtheme/uxtheme.rbuild Modified: trunk/reactos/dll/win32/uxtheme/draw.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/uxtheme/draw.c?r…
============================================================================== --- trunk/reactos/dll/win32/uxtheme/draw.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/uxtheme/draw.c [iso-8859-1] Fri Apr 4 09:43:57 2008 @@ -1609,12 +1609,12 @@ } else { /* otherwise, try to determine content rect from the background type and props */ int bgtype = BT_BORDERFILL; - memcpy(pContentRect, pBoundingRect, sizeof(RECT)); + *pContentRect = *pBoundingRect; GetThemeEnumValue(hTheme, iPartId, iStateId, TMT_BGTYPE, &bgtype); if(bgtype == BT_BORDERFILL) { int bordersize = 1; - + GetThemeInt(hTheme, iPartId, iStateId, TMT_BORDERSIZE, &bordersize); InflateRect(pContentRect, -bordersize, -bordersize); } else if ((bgtype == BT_IMAGEFILE) @@ -1657,12 +1657,12 @@ } else { /* otherwise, try to determine content rect from the background type and props */ int bgtype = BT_BORDERFILL; - memcpy(pExtentRect, pContentRect, sizeof(RECT)); + *pExtentRect = *pContentRect; GetThemeEnumValue(hTheme, iPartId, iStateId, TMT_BGTYPE, &bgtype); if(bgtype == BT_BORDERFILL) { int bordersize = 1; - + GetThemeInt(hTheme, iPartId, iStateId, TMT_BORDERSIZE, &bordersize); InflateRect(pExtentRect, bordersize, bordersize); } else if ((bgtype == BT_IMAGEFILE) Modified: trunk/reactos/dll/win32/uxtheme/metric.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/uxtheme/metric.c…
============================================================================== --- trunk/reactos/dll/win32/uxtheme/metric.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/uxtheme/metric.c [iso-8859-1] Fri Apr 4 09:43:57 2008 @@ -135,7 +135,7 @@ case TMT_MSGBOXFONT: font = &ncm.lfMessageFont; break; default: FIXME("Unknown FontID: %d\n", iFontID); break; } - if(font) CopyMemory(plf, font, sizeof(LOGFONTW)); + if(font) *plf = *font; else hr = STG_E_INVALIDPARAMETER; } return hr; Modified: trunk/reactos/dll/win32/uxtheme/msstyles.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/uxtheme/msstyles…
============================================================================== --- trunk/reactos/dll/win32/uxtheme/msstyles.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/uxtheme/msstyles.c [iso-8859-1] Fri Apr 4 09:43:57 2008 @@ -141,7 +141,7 @@ } pszSizes = (LPWSTR)LoadResource(hTheme, hrsc); - /* Validate requested color against whats available from the theme */ + /* Validate requested color against what's available from the theme */ if(pszColorName) { tmp = pszColors; while(*tmp) { @@ -155,7 +155,7 @@ else pszSelectedColor = pszColors; /* Use the default color */ - /* Validate requested size against whats available from the theme */ + /* Validate requested size against what's available from the theme */ if(pszSizeName) { tmp = pszSizes; while(*tmp) { @@ -751,27 +751,27 @@ switch (iPropertyId) { case TMT_CAPTIONFONT: - memcpy (&state->metrics.lfCaptionFont, &font, sizeof (LOGFONTW)); + state->metrics.lfCaptionFont = font; state->metricsDirty = TRUE; break; case TMT_SMALLCAPTIONFONT: - memcpy (&state->metrics.lfSmCaptionFont, &font, sizeof (LOGFONTW)); + state->metrics.lfSmCaptionFont = font; state->metricsDirty = TRUE; break; case TMT_MENUFONT: - memcpy (&state->metrics.lfMenuFont, &font, sizeof (LOGFONTW)); + state->metrics.lfMenuFont = font; state->metricsDirty = TRUE; break; case TMT_STATUSFONT: - memcpy (&state->metrics.lfStatusFont, &font, sizeof (LOGFONTW)); + state->metrics.lfStatusFont = font; state->metricsDirty = TRUE; break; case TMT_MSGBOXFONT: - memcpy (&state->metrics.lfMessageFont, &font, sizeof (LOGFONTW)); + state->metrics.lfMessageFont = font; state->metricsDirty = TRUE; break; case TMT_ICONTITLEFONT: - memcpy (&state->iconTitleFont, &font, sizeof (LOGFONTW)); + state->iconTitleFont = font; state->metricsDirty = TRUE; break; } @@ -1347,10 +1347,10 @@ LPCWSTR lpCur = tp->lpValue; LPCWSTR lpEnd = tp->lpValue + tp->dwValueLen; - MSSTYLES_GetNextInteger(lpCur, lpEnd, &lpCur, (int*)&pRect->left); - MSSTYLES_GetNextInteger(lpCur, lpEnd, &lpCur, (int*)&pRect->top); - MSSTYLES_GetNextInteger(lpCur, lpEnd, &lpCur, (int*)&pRect->right); - if(!MSSTYLES_GetNextInteger(lpCur, lpEnd, &lpCur, (int*)&pRect->bottom)) { + MSSTYLES_GetNextInteger(lpCur, lpEnd, &lpCur, &pRect->left); + MSSTYLES_GetNextInteger(lpCur, lpEnd, &lpCur, &pRect->top); + MSSTYLES_GetNextInteger(lpCur, lpEnd, &lpCur, &pRect->right); + if(!MSSTYLES_GetNextInteger(lpCur, lpEnd, &lpCur, &pRect->bottom)) { TRACE("Could not parse rect property\n"); return E_PROP_ID_UNSUPPORTED; } Modified: trunk/reactos/dll/win32/uxtheme/uxtheme.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/uxtheme/uxtheme.…
============================================================================== --- trunk/reactos/dll/win32/uxtheme/uxtheme.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/uxtheme/uxtheme.rbuild [iso-8859-1] Fri Apr 4 09:43:57 2008 @@ -1,5 +1,6 @@ <?xml version="1.0"?> <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> +<group> <module name="uxtheme" type="win32dll" baseaddress="${BASEADDRESS_UXTHEME}" installbase="system32" installname="uxtheme.dll" allowwarnings="true"> <importlibrary definition="uxtheme.spec.def" /> <include base="uxtheme">.</include> @@ -7,13 +8,6 @@ <define name="__WINESRC__" /> <define name="WINVER">0x600</define> <define name="_WIN32_WINNT">0x600</define> - <library>wine</library> - <library>user32</library> - <library>gdi32</library> - <library>advapi32</library> - <library>kernel32</library> - <library>ntdll</library> - <library>msimg32</library> <file>draw.c</file> <file>main.c</file> <file>metric.c</file> @@ -24,4 +18,12 @@ <file>uxini.c</file> <file>version.rc</file> <file>uxtheme.spec</file> + <library>wine</library> + <library>user32</library> + <library>gdi32</library> + <library>advapi32</library> + <library>kernel32</library> + <library>msimg32</library> + <library>ntdll</library> </module> +</group>
16 years, 7 months
1
0
0
0
[winesync] 32859: Autosyncing with Wine HEAD
by winesync@svn.reactos.org
Author: winesync Date: Fri Apr 4 09:41:46 2008 New Revision: 32859 URL:
http://svn.reactos.org/svn/reactos?rev=32859&view=rev
Log: Autosyncing with Wine HEAD Added: trunk/reactos/dll/win32/urlmon/download.c (with props) Modified: trunk/reactos/dll/win32/urlmon/binding.c trunk/reactos/dll/win32/urlmon/file.c trunk/reactos/dll/win32/urlmon/http.c trunk/reactos/dll/win32/urlmon/mk.c trunk/reactos/dll/win32/urlmon/regsvr.c trunk/reactos/dll/win32/urlmon/sec_mgr.c trunk/reactos/dll/win32/urlmon/session.c trunk/reactos/dll/win32/urlmon/umon.c trunk/reactos/dll/win32/urlmon/umstream.c trunk/reactos/dll/win32/urlmon/urlmon.rbuild trunk/reactos/dll/win32/urlmon/urlmon.spec trunk/reactos/dll/win32/urlmon/urlmon_main.c trunk/reactos/dll/win32/urlmon/urlmon_main.h Modified: trunk/reactos/dll/win32/urlmon/binding.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/binding.c…
============================================================================== --- trunk/reactos/dll/win32/urlmon/binding.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/binding.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -38,17 +38,33 @@ } task_header_t; typedef struct { - const IStreamVtbl *lpStreamVtbl; + const IUnknownVtbl *lpUnknownVtbl; LONG ref; IInternetProtocol *protocol; BYTE buf[1024*8]; - DWORD buf_size; - BOOL init_buf; + DWORD size; + BOOL init; HRESULT hres; -} ProtocolStream; + + LPWSTR cache_file; +} stgmed_buf_t; + +typedef struct _stgmed_obj_t stgmed_obj_t; + +typedef struct { + void (*release)(stgmed_obj_t*); + HRESULT (*fill_stgmed)(stgmed_obj_t*,STGMEDIUM*); + void *(*get_result)(stgmed_obj_t*); +} stgmed_obj_vtbl; + +struct _stgmed_obj_t { + const stgmed_obj_vtbl *vtbl; +}; + +#define STGMEDUNK(x) ((IUnknown*) &(x)->lpUnknownVtbl) typedef enum { BEFORE_DOWNLOAD, @@ -71,7 +87,9 @@ IBindStatusCallback *callback; IInternetProtocol *protocol; IServiceProvider *service_provider; - ProtocolStream *stream; + + stgmed_buf_t *stgmed_buf; + stgmed_obj_t *stgmed_obj; BINDINFO bindinfo; DWORD bindf; @@ -92,8 +110,6 @@ DWORD apartment_thread; HWND notif_hwnd; - STGMEDIUM stgmed; - task_header_t *task_queue_head, *task_queue_tail; CRITICAL_SECTION section; }; @@ -143,18 +159,18 @@ return ret; } -static void fill_stream_buffer(ProtocolStream *This) +static void fill_stgmed_buffer(stgmed_buf_t *buf) { DWORD read = 0; - if(sizeof(This->buf) == This->buf_size) + if(sizeof(buf->buf) == buf->size) return; - This->hres = IInternetProtocol_Read(This->protocol, This->buf+This->buf_size, - sizeof(This->buf)-This->buf_size, &read); - This->buf_size += read; + buf->hres = IInternetProtocol_Read(buf->protocol, buf->buf+buf->size, + sizeof(buf->buf)-buf->size, &read); + buf->size += read; if(read > 0) - This->init_buf = TRUE; + buf->init = TRUE; } static LRESULT WINAPI notif_wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) @@ -281,9 +297,9 @@ if(verify) { LPWSTR mime = NULL; - fill_stream_buffer(binding->stream); - FindMimeFromData(NULL, binding->url, binding->stream->buf, - min(binding->stream->buf_size, 255), binding->mime, 0, &mime, 0); + fill_stgmed_buffer(binding->stgmed_buf); + FindMimeFromData(NULL, binding->url, binding->stgmed_buf->buf, + min(binding->stgmed_buf->size, 255), binding->mime, 0, &mime, 0); heap_free(binding->mime); binding->mime = heap_strdupW(mime); @@ -404,31 +420,17 @@ FIXME("Load failed: %08x\n", hres); } -static void create_object(Binding *binding) +static HRESULT create_mime_object(Binding *binding, const CLSID *clsid, LPCWSTR clsid_str) { IPersistMoniker *persist; - LPWSTR clsid_str; - CLSID clsid; HRESULT hres; - if(!binding->mime) { - FIXME("MIME unavailable\n"); - return; - } - - if(!(clsid_str = get_mime_clsid(binding->mime, &clsid))) { - FIXME("Could not find object for MIME %s\n", debugstr_w(binding->mime)); - return; - } - - IBindStatusCallback_OnProgress(binding->callback, 0, 0, BINDSTATUS_CLASSIDAVAILABLE, clsid_str); - - IBindStatusCallback_OnProgress(binding->callback, 0, 0, BINDSTATUS_BEGINSYNCOPERATION, NULL); - - hres = CoCreateInstance(&clsid, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, + hres = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, &binding->iid, (void**)&binding->obj); - if(FAILED(hres)) - FIXME("CoCreateInstance failed: %08x\n", hres); + if(FAILED(hres)) { + WARN("CoCreateInstance failed: %08x\n", hres); + return INET_E_CANNOT_INSTANTIATE_OBJECT; + } binding->state |= BINDING_OBJAVAIL; @@ -451,14 +453,123 @@ /* FIXME: Try query IPersistFile */ } + IBindStatusCallback_OnObjectAvailable(binding->callback, &binding->iid, binding->obj); + + return S_OK; +} + +static void create_object(Binding *binding) +{ + LPWSTR clsid_str; + CLSID clsid; + HRESULT hres; + + if(!binding->mime) { + FIXME("MIME not available\n"); + return; + } + + if(!(clsid_str = get_mime_clsid(binding->mime, &clsid))) { + FIXME("Could not find object for MIME %s\n", debugstr_w(binding->mime)); + return; + } + + IBindStatusCallback_OnProgress(binding->callback, 0, 0, BINDSTATUS_CLASSIDAVAILABLE, clsid_str); + IBindStatusCallback_OnProgress(binding->callback, 0, 0, BINDSTATUS_BEGINSYNCOPERATION, NULL); + + hres = create_mime_object(binding, &clsid, clsid_str); heap_free(clsid_str); - IBindStatusCallback_OnObjectAvailable(binding->callback, &binding->iid, binding->obj); - IBindStatusCallback_OnProgress(binding->callback, 0, 0, BINDSTATUS_ENDSYNCOPERATION, NULL); - stop_binding(binding, S_OK, NULL); -} + stop_binding(binding, hres, NULL); + if(FAILED(hres)) + IInternetProtocol_Terminate(binding->protocol, 0); +} + +#define STGMEDUNK_THIS(iface) DEFINE_THIS(stgmed_buf_t, Unknown, iface) + +static HRESULT WINAPI StgMedUnk_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) +{ + stgmed_buf_t *This = STGMEDUNK_THIS(iface); + + *ppv = NULL; + + if(IsEqualGUID(riid, &IID_IUnknown)) { + TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); + + *ppv = STGMEDUNK(This); + IUnknown_AddRef(STGMEDUNK(This)); + return S_OK; + } + + TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); + return E_NOINTERFACE; +} + +static ULONG WINAPI StgMedUnk_AddRef(IUnknown *iface) +{ + stgmed_buf_t *This = STGMEDUNK_THIS(iface); + LONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); + + return ref; +} + +static ULONG WINAPI StgMedUnk_Release(IUnknown *iface) +{ + stgmed_buf_t *This = STGMEDUNK_THIS(iface); + LONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); + + if(!ref) { + IInternetProtocol_Release(This->protocol); + heap_free(This->cache_file); + heap_free(This); + + URLMON_UnlockModule(); + } + + return ref; +} + +#undef STGMEDUNK_THIS + +static const IUnknownVtbl StgMedUnkVtbl = { + StgMedUnk_QueryInterface, + StgMedUnk_AddRef, + StgMedUnk_Release +}; + +static stgmed_buf_t *create_stgmed_buf(IInternetProtocol *protocol) +{ + stgmed_buf_t *ret = heap_alloc(sizeof(*ret)); + + ret->lpUnknownVtbl = &StgMedUnkVtbl; + ret->ref = 1; + ret->size = 0; + ret->init = FALSE; + ret->hres = S_OK; + ret->cache_file = NULL; + + IInternetProtocol_AddRef(protocol); + ret->protocol = protocol; + + URLMON_LockModule(); + + return ret; +} + +typedef struct { + stgmed_obj_t stgmed_obj; + const IStreamVtbl *lpStreamVtbl; + + LONG ref; + + stgmed_buf_t *buf; +} ProtocolStream; #define STREAM_THIS(iface) DEFINE_THIS(ProtocolStream, Stream, iface) @@ -507,7 +618,7 @@ TRACE("(%p) ref=%d\n", This, ref); if(!ref) { - IInternetProtocol_Release(This->protocol); + IUnknown_Release(STGMEDUNK(This->buf)); heap_free(This); URLMON_UnlockModule(); @@ -517,24 +628,25 @@ } static HRESULT WINAPI ProtocolStream_Read(IStream *iface, void *pv, - ULONG cb, ULONG *pcbRead) + ULONG cb, ULONG *pcbRead) { ProtocolStream *This = STREAM_THIS(iface); DWORD read = 0, pread = 0; + HRESULT hres; TRACE("(%p)->(%p %d %p)\n", This, pv, cb, pcbRead); - if(This->buf_size) { + if(This->buf->size) { read = cb; - if(read > This->buf_size) - read = This->buf_size; - - memcpy(pv, This->buf, read); - - if(read < This->buf_size) - memmove(This->buf, This->buf+read, This->buf_size-read); - This->buf_size -= read; + if(read > This->buf->size) + read = This->buf->size; + + memcpy(pv, This->buf->buf, read); + + if(read < This->buf->size) + memmove(This->buf->buf, This->buf->buf+read, This->buf->size-read); + This->buf->size -= read; } if(read == cb) { @@ -543,14 +655,14 @@ return S_OK; } - This->hres = IInternetProtocol_Read(This->protocol, (PBYTE)pv+read, cb-read, &pread); + hres = This->buf->hres = IInternetProtocol_Read(This->buf->protocol, (PBYTE)pv+read, cb-read, &pread); if (pcbRead) *pcbRead = read + pread; - if(This->hres == E_PENDING) + if(hres == E_PENDING) return E_PENDING; - else if(FAILED(This->hres)) - FIXME("Read failed: %08x\n", This->hres); + else if(FAILED(hres)) + FIXME("Read failed: %08x\n", hres); return read || pread ? S_OK : S_FALSE; } @@ -656,25 +768,117 @@ ProtocolStream_Clone }; -#define BINDING_THIS(iface) DEFINE_THIS(Binding, Binding, iface) - -static ProtocolStream *create_stream(IInternetProtocol *protocol) +static void stgmed_stream_release(stgmed_obj_t *obj) +{ + ProtocolStream *stream = (ProtocolStream*)obj; + IStream_Release(STREAM(stream)); +} + +static HRESULT stgmed_stream_fill_stgmed(stgmed_obj_t *obj, STGMEDIUM *stgmed) +{ + ProtocolStream *stream = (ProtocolStream*)obj; + + stgmed->tymed = TYMED_ISTREAM; + stgmed->u.pstm = STREAM(stream); + stgmed->pUnkForRelease = STGMEDUNK(stream->buf); + + return S_OK; +} + +static void *stgmed_stream_get_result(stgmed_obj_t *obj) +{ + ProtocolStream *stream = (ProtocolStream*)obj; + + IStream_AddRef(STREAM(stream)); + return STREAM(stream); +} + +static const stgmed_obj_vtbl stgmed_stream_vtbl = { + stgmed_stream_release, + stgmed_stream_fill_stgmed, + stgmed_stream_get_result +}; + +typedef struct { + stgmed_obj_t stgmed_obj; + stgmed_buf_t *buf; +} stgmed_file_obj_t; + +static stgmed_obj_t *create_stgmed_stream(stgmed_buf_t *buf) { ProtocolStream *ret = heap_alloc(sizeof(ProtocolStream)); + ret->stgmed_obj.vtbl = &stgmed_stream_vtbl; ret->lpStreamVtbl = &ProtocolStreamVtbl; ret->ref = 1; - ret->buf_size = 0; - ret->init_buf = FALSE; - ret->hres = S_OK; - - IInternetProtocol_AddRef(protocol); - ret->protocol = protocol; + + IUnknown_AddRef(STGMEDUNK(buf)); + ret->buf = buf; URLMON_LockModule(); - return ret; -} + return &ret->stgmed_obj; +} + +static void stgmed_file_release(stgmed_obj_t *obj) +{ + stgmed_file_obj_t *file_obj = (stgmed_file_obj_t*)obj; + + IUnknown_Release(STGMEDUNK(file_obj->buf)); + heap_free(file_obj); +} + +static HRESULT stgmed_file_fill_stgmed(stgmed_obj_t *obj, STGMEDIUM *stgmed) +{ + stgmed_file_obj_t *file_obj = (stgmed_file_obj_t*)obj; + + if(!file_obj->buf->cache_file) { + WARN("cache_file not set\n"); + return INET_E_DATA_NOT_AVAILABLE; + } + + fill_stgmed_buffer(file_obj->buf); + if(file_obj->buf->size == sizeof(file_obj->buf->buf)) { + BYTE buf[1024]; + DWORD read; + HRESULT hres; + + do { + hres = IInternetProtocol_Read(file_obj->buf->protocol, buf, sizeof(buf), &read); + }while(hres == S_OK); + } + + stgmed->tymed = TYMED_FILE; + stgmed->u.lpszFileName = file_obj->buf->cache_file; + stgmed->pUnkForRelease = STGMEDUNK(file_obj->buf); + + return S_OK; +} + +static void *stgmed_file_get_result(stgmed_obj_t *obj) +{ + return NULL; +} + +static const stgmed_obj_vtbl stgmed_file_vtbl = { + stgmed_file_release, + stgmed_file_fill_stgmed, + stgmed_file_get_result +}; + +static stgmed_obj_t *create_stgmed_file(stgmed_buf_t *buf) +{ + stgmed_file_obj_t *ret = heap_alloc(sizeof(*ret)); + + ret->stgmed_obj.vtbl = &stgmed_file_vtbl; + + IUnknown_AddRef(STGMEDUNK(buf)); + ret->buf = buf; + + return &ret->stgmed_obj; +} + +#define BINDING_THIS(iface) DEFINE_THIS(Binding, Binding, iface) static HRESULT WINAPI Binding_QueryInterface(IBinding *iface, REFIID riid, void **ppv) { @@ -736,8 +940,10 @@ IInternetProtocol_Release(This->protocol); if(This->service_provider) IServiceProvider_Release(This->service_provider); - if(This->stream) - IStream_Release(STREAM(This->stream)); + if(This->stgmed_buf) + IUnknown_Release(STGMEDUNK(This->stgmed_buf)); + if(This->stgmed_obj) + This->stgmed_obj->vtbl->release(This->stgmed_obj); if(This->obj) IUnknown_Release(This->obj); if(This->bctx) @@ -877,7 +1083,7 @@ TRACE("(%p)->(%p)\n", This, pProtocolData); task = heap_alloc(sizeof(switch_task_t)); - memcpy(&task->data, pProtocolData, sizeof(PROTOCOLDATA)); + task->data = *pProtocolData; push_task(This, &task->header, switch_proc); @@ -957,7 +1163,7 @@ on_progress(This, 0, 0, BINDSTATUS_CONNECTING, szStatusText); break; case BINDSTATUS_BEGINDOWNLOADDATA: - fill_stream_buffer(This->stream); + fill_stgmed_buffer(This->stgmed_buf); break; case BINDSTATUS_MIMETYPEAVAILABLE: set_binding_mime(This, szStatusText); @@ -971,6 +1177,8 @@ mime_available(This, szStatusText, FALSE); break; case BINDSTATUS_CACHEFILENAMEAVAILABLE: + heap_free(This->stgmed_buf->cache_file); + This->stgmed_buf->cache_file = heap_strdupW(szStatusText); break; case BINDSTATUS_DIRECTBIND: This->report_mime = FALSE; @@ -1000,15 +1208,19 @@ mime_available(This, NULL, TRUE); if(This->download_state == BEFORE_DOWNLOAD) { - fill_stream_buffer(This->stream); + fill_stgmed_buffer(This->stgmed_buf); This->download_state = DOWNLOADING; sent_begindownloaddata = TRUE; IBindStatusCallback_OnProgress(This->callback, progress, progress_max, BINDSTATUS_BEGINDOWNLOADDATA, This->url); - } - - if(This->stream->hres == S_FALSE || (bscf & BSCF_LASTDATANOTIFICATION)) { + + if(This->stgmed_buf->cache_file) + IBindStatusCallback_OnProgress(This->callback, progress, progress_max, + BINDSTATUS_CACHEFILENAMEAVAILABLE, This->stgmed_buf->cache_file); + } + + if(This->stgmed_buf->hres == S_FALSE || (bscf & BSCF_LASTDATANOTIFICATION)) { This->download_state = END_DOWNLOAD; IBindStatusCallback_OnProgress(This->callback, progress, progress_max, BINDSTATUS_ENDDOWNLOADDATA, This->url); @@ -1021,15 +1233,26 @@ if(!(This->state & BINDING_OBJAVAIL)) create_object(This); }else { + STGMEDIUM stgmed; + HRESULT hres; + if(!(This->state & BINDING_LOCKED)) { HRESULT hres = IInternetProtocol_LockRequest(This->protocol, 0); if(SUCCEEDED(hres)) This->state |= BINDING_LOCKED; } + hres = This->stgmed_obj->vtbl->fill_stgmed(This->stgmed_obj, &stgmed); + if(FAILED(hres)) { + stop_binding(This, hres, NULL); + return; + } + + formatetc.tymed = stgmed.tymed; formatetc.cfFormat = This->clipboard_format; + IBindStatusCallback_OnDataAvailable(This->callback, bscf, progress, - &formatetc, &This->stgmed); + &formatetc, &stgmed); if(This->download_state == END_DOWNLOAD) stop_binding(This, S_OK, NULL); @@ -1159,7 +1382,7 @@ *grfBINDF = This->bindf; - memcpy(pbindinfo, &This->bindinfo, sizeof(BINDINFO)); + *pbindinfo = This->bindinfo; if(pbindinfo->szExtraInfo || pbindinfo->szCustomVerb) FIXME("copy strings\n"); @@ -1283,7 +1506,7 @@ IUnknown_Release(unk); } - return SUCCEEDED(hres) ? S_OK : MK_E_SYNTAX; + return SUCCEEDED(hres) ? S_OK : INET_E_DATA_NOT_AVAILABLE; } static BOOL is_urlmon_protocol(LPCWSTR url) @@ -1326,11 +1549,6 @@ Binding *ret; HRESULT hres; - if(!to_obj && !IsEqualGUID(&IID_IStream, riid)) { - FIXME("Unsupported riid %s\n", debugstr_guid(riid)); - return E_NOTIMPL; - } - URLMON_LockModule(); ret = heap_alloc_zero(sizeof(Binding)); @@ -1406,15 +1624,25 @@ ret->url = heap_strdupW(url); if(binding_ctx) { - ret->stream = binding_ctx->stream; - IStream_AddRef(STREAM(ret->stream)); + ret->stgmed_buf = binding_ctx->stgmed_buf; + IUnknown_AddRef(STGMEDUNK(ret->stgmed_buf)); ret->clipboard_format = binding_ctx->clipboard_format; }else { - ret->stream = create_stream(ret->protocol); - } - ret->stgmed.tymed = TYMED_ISTREAM; - ret->stgmed.u.pstm = STREAM(ret->stream); - ret->stgmed.pUnkForRelease = (IUnknown*)BINDING(ret); /* NOTE: Windows uses other IUnknown */ + ret->stgmed_buf = create_stgmed_buf(ret->protocol); + } + + if(to_obj) { + ret->stgmed_obj = NULL; + }else if(IsEqualGUID(&IID_IStream, riid)) { + ret->stgmed_obj = create_stgmed_stream(ret->stgmed_buf); + }else if(IsEqualGUID(&IID_IUnknown, riid)) { + ret->bindf |= BINDF_NEEDFILE; + ret->stgmed_obj = create_stgmed_file(ret->stgmed_buf); + }else { + FIXME("Unsupported riid %s\n", debugstr_guid(riid)); + IBinding_Release(BINDING(ret)); + return E_NOTIMPL; + } *binding = ret; return S_OK; @@ -1434,7 +1662,7 @@ hres = IBindStatusCallback_OnStartBinding(binding->callback, 0, BINDING(binding)); if(FAILED(hres)) { WARN("OnStartBinding failed: %08x\n", hres); - stop_binding(binding, 0x800c0008, NULL); + stop_binding(binding, INET_E_DOWNLOAD_FAILURE, NULL); IBinding_Release(BINDING(binding)); return hres; } @@ -1448,7 +1676,7 @@ TRACE("start ret %08x\n", hres); - if(FAILED(hres)) { + if(FAILED(hres) && hres != E_PENDING) { stop_binding(binding, hres, NULL); IBinding_Release(BINDING(binding)); @@ -1484,23 +1712,16 @@ if(FAILED(hres)) return hres; - if(binding->hres != S_OK) { - hres = SUCCEEDED(binding->hres) ? S_OK : binding->hres; - }else if(binding->stream->init_buf) { + if(binding->hres == S_OK && binding->stgmed_buf->init) { if((binding->state & BINDING_STOPPED) && (binding->state & BINDING_LOCKED)) IInternetProtocol_UnlockRequest(binding->protocol); - IStream_AddRef(STREAM(binding->stream)); - *ppv = binding->stream; - - hres = S_OK; - }else { - hres = MK_S_ASYNCHRONOUS; + *ppv = binding->stgmed_obj->vtbl->get_result(binding->stgmed_obj); } IBinding_Release(BINDING(binding)); - return hres; + return *ppv ? S_OK : MK_S_ASYNCHRONOUS; } HRESULT bind_to_object(IMoniker *mon, LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv) Added: trunk/reactos/dll/win32/urlmon/download.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/download.…
============================================================================== --- trunk/reactos/dll/win32/urlmon/download.c (added) +++ trunk/reactos/dll/win32/urlmon/download.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -1,0 +1,406 @@ +/* + * Copyright 2008 Jacek Caban for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "urlmon_main.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(urlmon); + +typedef struct { + const IBindStatusCallbackVtbl *lpBindStatusCallbackVtbl; + const IServiceProviderVtbl *lpServiceProviderVtbl; + + LONG ref; + + IBindStatusCallback *callback; + LPWSTR file_name; + LPWSTR cache_file; +} DownloadBSC; + +#define STATUSCLB(x) ((IBindStatusCallback*) &(x)->lpBindStatusCallbackVtbl) +#define SERVPROV(x) ((IServiceProvider*) &(x)->lpServiceProviderVtbl) + +#define STATUSCLB_THIS(iface) DEFINE_THIS(DownloadBSC, BindStatusCallback, iface) + +static HRESULT WINAPI DownloadBSC_QueryInterface(IBindStatusCallback *iface, + REFIID riid, void **ppv) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + + *ppv = NULL; + + if(IsEqualGUID(&IID_IUnknown, riid)) { + TRACE("(%p)->(IID_IUnknown, %p)\n", This, ppv); + *ppv = STATUSCLB(This); + }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) { + TRACE("(%p)->(IID_IBindStatusCallback, %p)\n", This, ppv); + *ppv = STATUSCLB(This); + }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { + TRACE("(%p)->(IID_IServiceProvider, %p)\n", This, ppv); + *ppv = SERVPROV(This); + } + + if(*ppv) { + IBindStatusCallback_AddRef((IUnknown*)*ppv); + return S_OK; + } + + TRACE("Unsupported riid = %s\n", debugstr_guid(riid)); + return E_NOINTERFACE; +} + +static ULONG WINAPI DownloadBSC_AddRef(IBindStatusCallback *iface) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + LONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) ref = %d\n", This, ref); + + return ref; +} + +static ULONG WINAPI DownloadBSC_Release(IBindStatusCallback *iface) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + LONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) ref = %d\n", This, ref); + + if(!ref) { + if(This->callback) + IBindStatusCallback_Release(This->callback); + heap_free(This->file_name); + heap_free(This->cache_file); + heap_free(This); + } + + return ref; +} + +static HRESULT WINAPI DownloadBSC_OnStartBinding(IBindStatusCallback *iface, + DWORD dwReserved, IBinding *pbind) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + + TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind); + + if(This->callback) + IBindStatusCallback_OnStartBinding(This->callback, dwReserved, pbind); + + return S_OK; +} + +static HRESULT WINAPI DownloadBSC_GetPriority(IBindStatusCallback *iface, LONG *pnPriority) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + FIXME("(%p)->(%p)\n", This, pnPriority); + return E_NOTIMPL; +} + +static HRESULT WINAPI DownloadBSC_OnLowResource(IBindStatusCallback *iface, DWORD reserved) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + FIXME("(%p)->(%d)\n", This, reserved); + return E_NOTIMPL; +} + +static void on_progress(DownloadBSC *This, ULONG progress, ULONG progress_max, ULONG status_code, LPCWSTR status_text) +{ + HRESULT hres; + + if(!This->callback) + return; + + hres = IBindStatusCallback_OnProgress(This->callback, progress, progress_max, status_code, status_text); + if(FAILED(hres)) + FIXME("OnProgress failed: %08x\n", hres); +} + +static HRESULT WINAPI DownloadBSC_OnProgress(IBindStatusCallback *iface, ULONG ulProgress, + ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + + TRACE("%p)->(%u %u %u %s)\n", This, ulProgress, ulProgressMax, ulStatusCode, + debugstr_w(szStatusText)); + + switch(ulStatusCode) { + case BINDSTATUS_BEGINDOWNLOADDATA: + case BINDSTATUS_DOWNLOADINGDATA: + case BINDSTATUS_ENDDOWNLOADDATA: + case BINDSTATUS_SENDINGREQUEST: + case BINDSTATUS_MIMETYPEAVAILABLE: + on_progress(This, ulProgress, ulProgressMax, ulStatusCode, szStatusText); + break; + + case BINDSTATUS_CACHEFILENAMEAVAILABLE: + on_progress(This, ulProgress, ulProgressMax, ulStatusCode, szStatusText); + This->cache_file = heap_strdupW(szStatusText); + break; + + case BINDSTATUS_FINDINGRESOURCE: + case BINDSTATUS_CONNECTING: + break; + + default: + FIXME("Unsupported status %u\n", ulStatusCode); + } + + return S_OK; +} + +static HRESULT WINAPI DownloadBSC_OnStopBinding(IBindStatusCallback *iface, + HRESULT hresult, LPCWSTR szError) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + + TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError)); + + if(This->cache_file) { + BOOL b; + + b = CopyFileW(This->cache_file, This->file_name, FALSE); + if(!b) + FIXME("CopyFile failed: %u\n", GetLastError()); + }else { + FIXME("No cache file\n"); + } + + if(This->callback) + IBindStatusCallback_OnStopBinding(This->callback, hresult, szError); + + return S_OK; +} + +static HRESULT WINAPI DownloadBSC_GetBindInfo(IBindStatusCallback *iface, + DWORD *grfBINDF, BINDINFO *pbindinfo) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + DWORD bindf = 0; + + TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo); + + if(This->callback) { + BINDINFO bindinfo; + HRESULT hres; + + memset(&bindinfo, 0, sizeof(bindinfo)); + bindinfo.cbSize = sizeof(bindinfo); + + hres = IBindStatusCallback_GetBindInfo(This->callback, &bindf, &bindinfo); + if(SUCCEEDED(hres)) + ReleaseBindInfo(&bindinfo); + } + + *grfBINDF = BINDF_PULLDATA | BINDF_NEEDFILE | (bindf & BINDF_ENFORCERESTRICTED); + return S_OK; +} + +static HRESULT WINAPI DownloadBSC_OnDataAvailable(IBindStatusCallback *iface, + DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + + TRACE("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); + + return S_OK; +} + +static HRESULT WINAPI DownloadBSC_OnObjectAvailable(IBindStatusCallback *iface, + REFIID riid, IUnknown *punk) +{ + DownloadBSC *This = STATUSCLB_THIS(iface); + FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk); + return E_NOTIMPL; +} + +#undef STATUSCLB_THIS + +static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = { + DownloadBSC_QueryInterface, + DownloadBSC_AddRef, + DownloadBSC_Release, + DownloadBSC_OnStartBinding, + DownloadBSC_GetPriority, + DownloadBSC_OnLowResource, + DownloadBSC_OnProgress, + DownloadBSC_OnStopBinding, + DownloadBSC_GetBindInfo, + DownloadBSC_OnDataAvailable, + DownloadBSC_OnObjectAvailable +}; + +#define SERVPROV_THIS(iface) DEFINE_THIS(DownloadBSC, ServiceProvider, iface) + +static HRESULT WINAPI DwlServiceProvider_QueryInterface(IServiceProvider *iface, + REFIID riid, void **ppv) +{ + DownloadBSC *This = SERVPROV_THIS(iface); + return IBindStatusCallback_QueryInterface(STATUSCLB(This), riid, ppv); +} + +static ULONG WINAPI DwlServiceProvider_AddRef(IServiceProvider *iface) +{ + DownloadBSC *This = SERVPROV_THIS(iface); + return IBindStatusCallback_AddRef(STATUSCLB(This)); +} + +static ULONG WINAPI DwlServiceProvider_Release(IServiceProvider *iface) +{ + DownloadBSC *This = SERVPROV_THIS(iface); + return IBindStatusCallback_Release(STATUSCLB(This)); +} + +static HRESULT WINAPI DwlServiceProvider_QueryService(IServiceProvider *iface, + REFGUID guidService, REFIID riid, void **ppv) +{ + DownloadBSC *This = SERVPROV_THIS(iface); + IServiceProvider *serv_prov; + HRESULT hres; + + TRACE("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); + + if(!This->callback) + return E_NOINTERFACE; + + hres = IBindStatusCallback_QueryInterface(This->callback, riid, ppv); + if(SUCCEEDED(hres)) + return S_OK; + + hres = IBindStatusCallback_QueryInterface(This->callback, &IID_IServiceProvider, (void**)&serv_prov); + if(SUCCEEDED(hres)) { + hres = IServiceProvider_QueryService(serv_prov, guidService, riid, ppv); + IServiceProvider_Release(serv_prov); + return hres; + } + + return E_NOINTERFACE; +} + +#undef SERVPROV_THIS + +static const IServiceProviderVtbl ServiceProviderVtbl = { + DwlServiceProvider_QueryInterface, + DwlServiceProvider_AddRef, + DwlServiceProvider_Release, + DwlServiceProvider_QueryService +}; + +static IBindStatusCallback *DownloadBSC_Create(IBindStatusCallback *callback, LPCWSTR file_name) +{ + DownloadBSC *ret = heap_alloc(sizeof(*ret)); + + ret->lpBindStatusCallbackVtbl = &BindStatusCallbackVtbl; + ret->lpServiceProviderVtbl = &ServiceProviderVtbl; + ret->ref = 1; + ret->file_name = heap_strdupW(file_name); + ret->cache_file = NULL; + + if(callback) + IBindStatusCallback_AddRef(callback); + ret->callback = callback; + + return STATUSCLB(ret); +} + +/*********************************************************************** + * URLDownloadToFileW (URLMON.@) + * + * Downloads URL szURL to file szFileName and call lpfnCB callback to + * report progress. + * + * PARAMS + * pCaller [I] controlling IUnknown interface. + * szURL [I] URL of the file to download + * szFileName [I] file name to store the content of the URL + * dwReserved [I] reserved - set to 0 + * lpfnCB [I] callback for progress report + * + * RETURNS + * S_OK on success + */ +HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN pCaller, LPCWSTR szURL, LPCWSTR szFileName, + DWORD dwReserved, LPBINDSTATUSCALLBACK lpfnCB) +{ + IBindStatusCallback *callback; + IUnknown *unk; + IMoniker *mon; + IBindCtx *bindctx; + HRESULT hres; + + TRACE("(%p %s %s %d %p)\n", pCaller, debugstr_w(szURL), debugstr_w(szFileName), dwReserved, lpfnCB); + + if(pCaller) + FIXME("pCaller not supported\n"); + + callback = DownloadBSC_Create(lpfnCB, szFileName); + hres = CreateAsyncBindCtx(0, callback, NULL, &bindctx); + IBindStatusCallback_Release(callback); + if(FAILED(hres)) + return hres; + + hres = CreateURLMoniker(NULL, szURL, &mon); + if(FAILED(hres)) { + IBindCtx_Release(bindctx); + return hres; + } + + hres = IMoniker_BindToStorage(mon, bindctx, NULL, &IID_IUnknown, (void**)&unk); + IMoniker_Release(mon); + IBindCtx_Release(bindctx); + + if(unk) + IUnknown_Release(unk); + + return hres == MK_S_ASYNCHRONOUS ? S_OK : hres; +} + +/*********************************************************************** + * URLDownloadToFileA (URLMON.@) + * + * Downloads URL szURL to rile szFileName and call lpfnCB callback to + * report progress. + * + * PARAMS + * pCaller [I] controlling IUnknown interface. + * szURL [I] URL of the file to download + * szFileName [I] file name to store the content of the URL + * dwReserved [I] reserved - set to 0 + * lpfnCB [I] callback for progress report + * + * RETURNS + * S_OK on success + */ +HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN pCaller, LPCSTR szURL, LPCSTR szFileName, DWORD dwReserved, + LPBINDSTATUSCALLBACK lpfnCB) +{ + LPWSTR urlW, file_nameW; + HRESULT hres; + + TRACE("(%p %s %s %d %p)\n", pCaller, debugstr_a(szURL), debugstr_a(szFileName), dwReserved, lpfnCB); + + urlW = heap_strdupAtoW(szURL); + file_nameW = heap_strdupAtoW(szFileName); + + hres = URLDownloadToFileW(pCaller, urlW, file_nameW, dwReserved, lpfnCB); + + heap_free(urlW); + heap_free(file_nameW); + + return hres; +} Propchange: trunk/reactos/dll/win32/urlmon/download.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/urlmon/file.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/file.c?re…
============================================================================== --- trunk/reactos/dll/win32/urlmon/file.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/file.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -229,10 +229,14 @@ TRACE("(%p)->(%p %u %p)\n", This, pv, cb, pcbRead); + if (pcbRead) + *pcbRead = 0; + if(!This->file) return INET_E_DATA_NOT_AVAILABLE; - ReadFile(This->file, pv, cb, &read, NULL); + if (!ReadFile(This->file, pv, cb, &read, NULL)) + return INET_E_DOWNLOAD_FAILURE; if(pcbRead) *pcbRead = read; Modified: trunk/reactos/dll/win32/urlmon/http.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/http.c?re…
============================================================================== --- trunk/reactos/dll/win32/urlmon/http.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/http.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -380,7 +380,7 @@ if (!(user_agent = CoTaskMemAlloc((len)*sizeof(WCHAR)))) WARN("Out of memory\n"); else - MultiByteToWideChar(CP_ACP, 0, user_agenta, -1, user_agent, len*sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, user_agenta, -1, user_agent, len); } heap_free(user_agenta); } @@ -419,6 +419,8 @@ if (This->grfBINDF & BINDF_NOWRITECACHE) request_flags |= INTERNET_FLAG_NO_CACHE_WRITE; + if (This->grfBINDF & BINDF_NEEDFILE) + request_flags |= INTERNET_FLAG_NEED_FILE; This->request = HttpOpenRequestW(This->connect, This->bind_info.dwBindVerb < BINDVERB_CUSTOM ? wszBindVerb[This->bind_info.dwBindVerb] : This->bind_info.szCustomVerb, @@ -655,6 +657,21 @@ { This->content_length = atoiW(content_length); } + + if(This->grfBINDF & BINDF_NEEDFILE) { + WCHAR cache_file[MAX_PATH]; + DWORD buflen = sizeof(cache_file); + + if(InternetQueryOptionW(This->request, INTERNET_OPTION_DATAFILE_NAME, + cache_file, &buflen)) + { + IInternetProtocolSink_ReportProgress(This->protocol_sink, + BINDSTATUS_CACHEFILENAMEAVAILABLE, + cache_file); + }else { + FIXME("Could not get cache file\n"); + } + } This->flags |= FLAG_FIRST_CONTINUE_COMPLETE; } Modified: trunk/reactos/dll/win32/urlmon/mk.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/mk.c?rev=…
============================================================================== --- trunk/reactos/dll/win32/urlmon/mk.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/mk.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -124,7 +124,6 @@ ReleaseBindInfo(&bindinfo); - IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_DIRECTBIND, NULL); IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_SENDINGREQUEST, NULL); hres = FindMimeFromData(NULL, szUrl, NULL, 0, NULL, 0, &mime, 0); Modified: trunk/reactos/dll/win32/urlmon/regsvr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/regsvr.c?…
============================================================================== --- trunk/reactos/dll/win32/urlmon/regsvr.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/regsvr.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -522,7 +522,7 @@ { HRESULT hres; HMODULE hAdvpack; - typeof(RegInstallA) *pRegInstall; + HRESULT (WINAPI *pRegInstall)(HMODULE hm, LPCSTR pszSection, const STRTABLEA* pstTable); STRTABLEA strtable; STRENTRYA pse[7]; static CLSID const *clsids[34]; @@ -550,7 +550,7 @@ strtable.pse = pse; hAdvpack = LoadLibraryW(wszAdvpack); - pRegInstall = (typeof(RegInstallA)*)GetProcAddress(hAdvpack, "RegInstall"); + pRegInstall = (void *)GetProcAddress(hAdvpack, "RegInstall"); hres = pRegInstall(URLMON_hInstance, doregister ? "RegisterDll" : "UnregisterDll", &strtable); Modified: trunk/reactos/dll/win32/urlmon/sec_mgr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/sec_mgr.c…
============================================================================== --- trunk/reactos/dll/win32/urlmon/sec_mgr.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/sec_mgr.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -23,65 +23,27 @@ #include "urlmon_main.h" #include "winreg.h" +#include "wininet.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(urlmon); -/*********************************************************************** - * InternetSecurityManager implementation - * - */ -typedef struct { - const IInternetSecurityManagerVtbl* lpInternetSecurityManagerVtbl; - - LONG ref; - - IInternetSecurityMgrSite *mgrsite; - IInternetSecurityManager *custom_manager; -} SecManagerImpl; - -#define SECMGR_THIS(iface) DEFINE_THIS(SecManagerImpl, InternetSecurityManager, iface) - -static HRESULT map_url_to_zone(LPCWSTR url, DWORD *zone) -{ - WCHAR schema[64]; - DWORD res, size=0; +static const WCHAR fileW[] = {'f','i','l','e',0}; + +static HRESULT get_zone_from_reg(LPCWSTR schema, DWORD *zone) +{ + DWORD res, size; HKEY hkey; - HRESULT hres; static const WCHAR wszZoneMapProtocolKey[] = {'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\', - 'Z','o','n','e','M','a','p','\\', - 'P','r','o','t','o','c','o','l','D','e','f','a','u','l','t','s',0}; - static const WCHAR wszFile[] = {'f','i','l','e',0}; - - *zone = -1; - - hres = CoInternetParseUrl(url, PARSE_SCHEMA, 0, schema, sizeof(schema)/sizeof(WCHAR), &size, 0); - if(FAILED(hres)) - return hres; - if(!*schema) - return 0x80041001; - - /* file protocol is a special case */ - if(!strcmpW(schema, wszFile)) { - WCHAR path[MAX_PATH]; - - hres = CoInternetParseUrl(url, PARSE_PATH_FROM_URL, 0, path, - sizeof(path)/sizeof(WCHAR), &size, 0); - - if(SUCCEEDED(hres) && strchrW(path, '\\')) { - *zone = 0; - return S_OK; - } - } - - WARN("domains are not yet implemented\n"); + 'M','i','c','r','o','s','o','f','t','\\', + 'W','i','n','d','o','w','s','\\', + 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', + 'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\', + 'Z','o','n','e','M','a','p','\\', + 'P','r','o','t','o','c','o','l','D','e','f','a','u','l','t','s',0}; res = RegOpenKeyW(HKEY_CURRENT_USER, wszZoneMapProtocolKey, &hkey); if(res != ERROR_SUCCESS) { @@ -110,6 +72,171 @@ *zone = 3; return S_OK; } + +static HRESULT map_url_to_zone(LPCWSTR url, DWORD *zone, LPWSTR *ret_url) +{ + LPWSTR secur_url; + WCHAR schema[64]; + DWORD size=0; + HRESULT hres; + + secur_url = heap_alloc(INTERNET_MAX_URL_LENGTH*sizeof(WCHAR)); + *zone = -1; + + hres = CoInternetParseUrl(url, PARSE_SECURITY_URL, 0, secur_url, INTERNET_MAX_URL_LENGTH, &size, 0); + if(hres != S_OK) + strcpyW(secur_url, url); + + hres = CoInternetParseUrl(secur_url, PARSE_SCHEMA, 0, schema, sizeof(schema)/sizeof(WCHAR), &size, 0); + if(FAILED(hres) || !*schema) { + heap_free(secur_url); + return E_INVALIDARG; + } + + /* file protocol is a special case */ + if(!strcmpW(schema, fileW)) { + WCHAR path[MAX_PATH], root[20]; + WCHAR *ptr; + + hres = CoInternetParseUrl(secur_url, PARSE_PATH_FROM_URL, 0, path, + sizeof(path)/sizeof(WCHAR), &size, 0); + + if(SUCCEEDED(hres) && (ptr = strchrW(path, '\\')) && ptr-path < sizeof(root)/sizeof(WCHAR)) { + UINT type; + + memcpy(root, path, (ptr-path)*sizeof(WCHAR)); + root[ptr-path] = 0; + + type = GetDriveTypeW(root); + + switch(type) { + case DRIVE_UNKNOWN: + case DRIVE_NO_ROOT_DIR: + break; + case DRIVE_REMOVABLE: + case DRIVE_FIXED: + case DRIVE_CDROM: + case DRIVE_RAMDISK: + *zone = 0; + hres = S_OK; + break; + case DRIVE_REMOTE: + *zone = 3; + hres = S_OK; + break; + default: + FIXME("unsupported drive type %d\n", type); + } + } + } + + if(*zone == -1) { + WARN("domains are not yet implemented\n"); + hres = get_zone_from_reg(schema, zone); + } + + if(FAILED(hres) || !ret_url) + heap_free(secur_url); + else + *ret_url = secur_url; + + return hres; +} + +static HRESULT open_zone_key(HKEY parent_key, DWORD zone, HKEY *hkey) +{ + static const WCHAR wszZonesKey[] = + {'S','o','f','t','w','a','r','e','\\', + 'M','i','c','r','o','s','o','f','t','\\', + 'W','i','n','d','o','w','s','\\', + 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', + 'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\', + 'Z','o','n','e','s','\\',0}; + static const WCHAR wszFormat[] = {'%','s','%','l','d',0}; + + WCHAR key_name[sizeof(wszZonesKey)/sizeof(WCHAR)+8]; + DWORD res; + + wsprintfW(key_name, wszFormat, wszZonesKey, zone); + + res = RegOpenKeyW(parent_key, key_name, hkey); + + if(res != ERROR_SUCCESS) { + WARN("RegOpenKey failed\n"); + return E_INVALIDARG; + } + + return S_OK; +} + +static HRESULT get_action_policy(DWORD zone, DWORD action, BYTE *policy, DWORD size, URLZONEREG zone_reg) +{ + HKEY parent_key; + HKEY hkey; + LONG res; + HRESULT hres; + + switch(action) { + case URLACTION_SCRIPT_OVERRIDE_SAFETY: + *(DWORD*)policy = URLPOLICY_DISALLOW; + return S_OK; + } + + switch(zone_reg) { + case URLZONEREG_DEFAULT: + case URLZONEREG_HKCU: + parent_key = HKEY_CURRENT_USER; + break; + case URLZONEREG_HKLM: + parent_key = HKEY_LOCAL_MACHINE; + break; + default: + WARN("Unknown URLZONEREG: %d\n", zone_reg); + return E_FAIL; + }; + + hres = open_zone_key(parent_key, zone, &hkey); + if(SUCCEEDED(hres)) { + WCHAR action_str[16]; + DWORD len = size; + + static const WCHAR formatW[] = {'%','X',0}; + + wsprintfW(action_str, formatW, action); + + res = RegQueryValueExW(hkey, action_str, NULL, NULL, policy, &len); + if(res == ERROR_MORE_DATA) { + hres = E_INVALIDARG; + }else if(res == ERROR_FILE_NOT_FOUND) { + hres = E_FAIL; + }else if(res != ERROR_SUCCESS) { + ERR("RegQueryValue failed: %d\n", res); + hres = E_UNEXPECTED; + } + + RegCloseKey(hkey); + } + + if(FAILED(hres) && zone_reg == URLZONEREG_DEFAULT) + return get_action_policy(zone, action, policy, size, URLZONEREG_HKLM); + + return hres; +} + +/*********************************************************************** + * InternetSecurityManager implementation + * + */ +typedef struct { + const IInternetSecurityManagerVtbl* lpInternetSecurityManagerVtbl; + + LONG ref; + + IInternetSecurityMgrSite *mgrsite; + IInternetSecurityManager *custom_manager; +} SecManagerImpl; + +#define SECMGR_THIS(iface) DEFINE_THIS(SecManagerImpl, InternetSecurityManager, iface) static HRESULT WINAPI SecManagerImpl_QueryInterface(IInternetSecurityManager* iface,REFIID riid,void** ppvObject) { @@ -230,8 +357,6 @@ DWORD dwFlags) { SecManagerImpl *This = SECMGR_THIS(iface); - LPWSTR url; - DWORD size; HRESULT hres; TRACE("(%p)->(%s %p %08x)\n", iface, debugstr_w(pwszUrl), pdwZone, dwFlags); @@ -251,26 +376,15 @@ if(dwFlags) FIXME("not supported flags: %08x\n", dwFlags); - size = (strlenW(pwszUrl)+16) * sizeof(WCHAR); - url = heap_alloc(size); - - hres = CoInternetParseUrl(pwszUrl, PARSE_SECURITY_URL, 0, url, size/sizeof(WCHAR), &size, 0); - if(FAILED(hres)) - memcpy(url, pwszUrl, size); - - hres = map_url_to_zone(url, pdwZone); - - heap_free(url); - - return hres; + return map_url_to_zone(pwszUrl, pdwZone, NULL); } static HRESULT WINAPI SecManagerImpl_GetSecurityId(IInternetSecurityManager *iface, LPCWSTR pwszUrl, BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved) { SecManagerImpl *This = SECMGR_THIS(iface); - LPWSTR buf, ptr, ptr2; - DWORD size, zone, len; + LPWSTR url, ptr, ptr2; + DWORD zone, len; HRESULT hres; static const WCHAR wszFile[] = {'f','i','l','e',':'}; @@ -291,26 +405,17 @@ if(dwReserved) FIXME("dwReserved is not supported\n"); - len = strlenW(pwszUrl)+1; - buf = heap_alloc((len+16)*sizeof(WCHAR)); - - hres = CoInternetParseUrl(pwszUrl, PARSE_SECURITY_URL, 0, buf, len, &size, 0); + hres = map_url_to_zone(pwszUrl, &zone, &url); if(FAILED(hres)) - memcpy(buf, pwszUrl, len*sizeof(WCHAR)); - - hres = map_url_to_zone(buf, &zone); - if(FAILED(hres)) { - heap_free(buf); return hres == 0x80041001 ? E_INVALIDARG : hres; - } /* file protocol is a special case */ - if(strlenW(pwszUrl) >= sizeof(wszFile)/sizeof(WCHAR) - && !memcmp(buf, wszFile, sizeof(wszFile))) { + if(strlenW(url) >= sizeof(wszFile)/sizeof(WCHAR) + && !memcmp(url, wszFile, sizeof(wszFile)) && strchrW(url, '\\')) { static const BYTE secidFile[] = {'f','i','l','e',':'}; - heap_free(buf); + heap_free(url); if(*pcbSecurityId < sizeof(secidFile)+sizeof(zone)) return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER); @@ -322,7 +427,7 @@ return S_OK; } - ptr = strchrW(buf, ':'); + ptr = strchrW(url, ':'); ptr2 = ++ptr; while(*ptr2 == '/') ptr2++; @@ -333,15 +438,15 @@ if(ptr) *ptr = 0; - len = WideCharToMultiByte(CP_ACP, 0, buf, -1, NULL, 0, NULL, NULL)-1; + len = WideCharToMultiByte(CP_ACP, 0, url, -1, NULL, 0, NULL, NULL)-1; if(len+sizeof(DWORD) > *pcbSecurityId) { - heap_free(buf); + heap_free(url); return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER); } - WideCharToMultiByte(CP_ACP, 0, buf, -1, (LPSTR)pbSecurityId, -1, NULL, NULL); - heap_free(buf); + WideCharToMultiByte(CP_ACP, 0, url, -1, (LPSTR)pbSecurityId, len, NULL, NULL); + heap_free(url); *(DWORD*)(pbSecurityId+len) = zone; @@ -358,6 +463,7 @@ DWORD dwFlags, DWORD dwReserved) { SecManagerImpl *This = SECMGR_THIS(iface); + DWORD zone, policy; HRESULT hres; TRACE("(%p)->(%s %08x %p %08x %p %08x %08x %08x)\n", iface, debugstr_w(pwszUrl), dwAction, @@ -370,8 +476,36 @@ return hres; } - FIXME("Default action is not implemented\n"); - return E_NOTIMPL; + if(pContext || cbContext || dwFlags || dwReserved) + FIXME("Unsupported arguments\n"); + + if(!pwszUrl) + return E_INVALIDARG; + + hres = map_url_to_zone(pwszUrl, &zone, NULL); + if(FAILED(hres)) + return hres; + + hres = get_action_policy(zone, dwAction, (BYTE*)&policy, sizeof(policy), URLZONEREG_DEFAULT); + if(FAILED(hres)) + return hres; + + TRACE("policy %x\n", policy); + + switch(GetUrlPolicyPermissions(policy)) { + case URLPOLICY_ALLOW: + case URLPOLICY_CHANNEL_SOFTDIST_PRECACHE: + return S_OK; + case URLPOLICY_DISALLOW: + return S_FALSE; + case URLPOLICY_QUERY: + FIXME("URLPOLICY_QUERY not implemented\n"); + return E_FAIL; + default: + FIXME("Not implemented policy %x\n", policy); + } + + return E_FAIL; } @@ -481,46 +615,6 @@ LONG ref; } ZoneMgrImpl; -static HRESULT open_zone_key(DWORD zone, HKEY *hkey, URLZONEREG zone_reg) -{ - static const WCHAR wszZonesKey[] = - {'S','o','f','t','w','a','r','e','\\', - 'M','i','c','r','o','s','o','f','t','\\', - 'W','i','n','d','o','w','s','\\', - 'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\', - 'I','n','t','e','r','n','e','t',' ','S','e','t','t','i','n','g','s','\\', - 'Z','o','n','e','s','\\',0}; - static const WCHAR wszFormat[] = {'%','s','%','l','d',0}; - - WCHAR key_name[sizeof(wszZonesKey)/sizeof(WCHAR)+8]; - HKEY parent_key; - DWORD res; - - switch(zone_reg) { - case URLZONEREG_DEFAULT: /* FIXME: TEST */ - case URLZONEREG_HKCU: - parent_key = HKEY_CURRENT_USER; - break; - case URLZONEREG_HKLM: - parent_key = HKEY_LOCAL_MACHINE; - break; - default: - WARN("Unknown URLZONEREG: %d\n", zone_reg); - return E_FAIL; - }; - - wsprintfW(key_name, wszFormat, wszZonesKey, zone); - - res = RegOpenKeyW(parent_key, key_name, hkey); - - if(res != ERROR_SUCCESS) { - WARN("RegOpenKey failed\n"); - return E_INVALIDARG; - } - - return S_OK; -} - /******************************************************************** * IInternetZoneManager_QueryInterface */ @@ -634,39 +728,13 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneActionPolicy(IInternetZoneManager* iface, DWORD dwZone, DWORD dwAction, BYTE* pPolicy, DWORD cbPolicy, URLZONEREG urlZoneReg) { - WCHAR action[16]; - HKEY hkey; - LONG res; - DWORD size = cbPolicy; - HRESULT hres; - - static const WCHAR wszFormat[] = {'%','l','X',0}; - TRACE("(%p)->(%d %08x %p %d %d)\n", iface, dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg); if(!pPolicy) return E_INVALIDARG; - hres = open_zone_key(dwZone, &hkey, urlZoneReg); - if(FAILED(hres)) - return hres; - - wsprintfW(action, wszFormat, dwAction); - - res = RegQueryValueExW(hkey, action, NULL, NULL, pPolicy, &size); - if(res == ERROR_MORE_DATA) { - hres = E_INVALIDARG; - }else if(res == ERROR_FILE_NOT_FOUND) { - hres = E_FAIL; - }else if(res != ERROR_SUCCESS) { - ERR("RegQueryValue failed: %d\n", res); - hres = E_UNEXPECTED; - } - - RegCloseKey(hkey); - - return hres; + return get_action_policy(dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg); } /******************************************************************** Modified: trunk/reactos/dll/win32/urlmon/session.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/session.c…
============================================================================== --- trunk/reactos/dll/win32/urlmon/session.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/session.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -27,6 +27,7 @@ LPWSTR protocol; IClassFactory *cf; CLSID clsid; + BOOL urlmon; struct name_space *next; } name_space; @@ -41,6 +42,15 @@ static name_space *name_space_list = NULL; static mime_filter *mime_filter_list = NULL; + +static CRITICAL_SECTION session_cs; +static CRITICAL_SECTION_DEBUG session_cs_dbg = +{ + 0, 0, &session_cs, + { &session_cs_dbg.ProcessLocksList, &session_cs_dbg.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": session") } +}; +static CRITICAL_SECTION session_cs = { &session_cs_dbg, -1, 0, 0, 0, 0 }; static name_space *find_name_space(LPCWSTR protocol) { @@ -95,7 +105,87 @@ if(pclsid) *pclsid = clsid; + if(!ret) + return S_OK; + return CoGetClassObject(&clsid, CLSCTX_INPROC_SERVER, NULL, &IID_IClassFactory, (void**)ret); +} + +static HRESULT register_namespace(IClassFactory *cf, REFIID clsid, LPCWSTR protocol, BOOL urlmon_protocol) +{ + name_space *new_name_space; + + new_name_space = heap_alloc(sizeof(name_space)); + + if(!urlmon_protocol) + IClassFactory_AddRef(cf); + new_name_space->cf = cf; + new_name_space->clsid = *clsid; + new_name_space->urlmon = urlmon_protocol; + new_name_space->protocol = heap_strdupW(protocol); + + EnterCriticalSection(&session_cs); + + new_name_space->next = name_space_list; + name_space_list = new_name_space; + + LeaveCriticalSection(&session_cs); + + return S_OK; +} + +static HRESULT unregister_namespace(IClassFactory *cf, LPCWSTR protocol) +{ + name_space *iter, *last = NULL; + + EnterCriticalSection(&session_cs); + + for(iter = name_space_list; iter; iter = iter->next) { + if(iter->cf == cf && !strcmpW(iter->protocol, protocol)) + break; + last = iter; + } + + if(iter) { + if(last) + last->next = iter->next; + else + name_space_list = iter->next; + } + + LeaveCriticalSection(&session_cs); + + if(iter) { + if(!iter->urlmon) + IClassFactory_Release(iter->cf); + heap_free(iter->protocol); + heap_free(iter); + } + + return S_OK; +} + + +void register_urlmon_namespace(IClassFactory *cf, REFIID clsid, LPCWSTR protocol, BOOL do_register) +{ + if(do_register) + register_namespace(cf, clsid, protocol, TRUE); + else + unregister_namespace(cf, protocol); +} + +BOOL is_registered_protocol(LPCWSTR url) +{ + DWORD schema_len; + WCHAR schema[64]; + HRESULT hres; + + hres = CoInternetParseUrl(url, PARSE_SCHEMA, 0, schema, sizeof(schema)/sizeof(schema[0]), + &schema_len, 0); + if(FAILED(hres)) + return FALSE; + + return get_protocol_cf(schema, schema_len, NULL, NULL) == S_OK; } IInternetProtocolInfo *get_protocol_info(LPCWSTR url) @@ -112,16 +202,19 @@ if(FAILED(hres) || !schema_len) return NULL; + EnterCriticalSection(&session_cs); + ns = find_name_space(schema); - if(ns) { + if(ns && !ns->urlmon) { hres = IClassFactory_QueryInterface(ns->cf, &IID_IInternetProtocolInfo, (void**)&ret); - if(SUCCEEDED(hres)) - return ret; - - hres = IClassFactory_CreateInstance(ns->cf, NULL, &IID_IInternetProtocolInfo, (void**)&ret); - if(SUCCEEDED(hres)) - return ret; - } + if(FAILED(hres)) + hres = IClassFactory_CreateInstance(ns->cf, NULL, &IID_IInternetProtocolInfo, (void**)&ret); + } + + LeaveCriticalSection(&session_cs); + + if(ns && SUCCEEDED(hres)) + return ret; hres = get_protocol_cf(schema, schema_len, NULL, &cf); if(FAILED(hres)) @@ -142,10 +235,14 @@ DWORD schema_len; HRESULT hres; + *ret = NULL; + hres = CoInternetParseUrl(url, PARSE_SCHEMA, 0, schema, sizeof(schema)/sizeof(schema[0]), &schema_len, 0); if(FAILED(hres) || !schema_len) return schema_len ? hres : E_FAIL; + + EnterCriticalSection(&session_cs); ns = find_name_space(schema); if(ns) { @@ -153,8 +250,12 @@ IClassFactory_AddRef(*ret); if(clsid) *clsid = ns->clsid; + } + + LeaveCriticalSection(&session_cs); + + if(*ret) return S_OK; - } return get_protocol_cf(schema, schema_len, clsid, ret); } @@ -192,8 +293,6 @@ IClassFactory *pCF, REFCLSID rclsid, LPCWSTR pwzProtocol, ULONG cPatterns, const LPCWSTR *ppwzPatterns, DWORD dwReserved) { - name_space *new_name_space; - TRACE("(%p %s %s %d %p %d)\n", pCF, debugstr_guid(rclsid), debugstr_w(pwzProtocol), cPatterns, ppwzPatterns, dwReserved); @@ -205,47 +304,18 @@ if(!pCF || !pwzProtocol) return E_INVALIDARG; - new_name_space = heap_alloc(sizeof(name_space)); - - IClassFactory_AddRef(pCF); - new_name_space->cf = pCF; - new_name_space->clsid = *rclsid; - new_name_space->protocol = heap_strdupW(pwzProtocol); - - new_name_space->next = name_space_list; - name_space_list = new_name_space; - return S_OK; + return register_namespace(pCF, rclsid, pwzProtocol, FALSE); } static HRESULT WINAPI InternetSession_UnregisterNameSpace(IInternetSession *iface, IClassFactory *pCF, LPCWSTR pszProtocol) { - name_space *iter, *last = NULL; - TRACE("(%p %s)\n", pCF, debugstr_w(pszProtocol)); if(!pCF || !pszProtocol) return E_INVALIDARG; - for(iter = name_space_list; iter; iter = iter->next) { - if(iter->cf == pCF && !strcmpW(iter->protocol, pszProtocol)) - break; - last = iter; - } - - if(!iter) - return S_OK; - - if(last) - last->next = iter->next; - else - name_space_list = iter->next; - - IClassFactory_Release(iter->cf); - heap_free(iter->protocol); - heap_free(iter); - - return S_OK; + return unregister_namespace(pCF, pszProtocol); } static HRESULT WINAPI InternetSession_RegisterMimeFilter(IInternetSession *iface, @@ -262,9 +332,13 @@ filter->clsid = *rclsid; filter->mime = heap_strdupW(pwzType); + EnterCriticalSection(&session_cs); + filter->next = mime_filter_list; mime_filter_list = filter; + LeaveCriticalSection(&session_cs); + return S_OK; } @@ -274,6 +348,8 @@ mime_filter *iter, *prev = NULL; TRACE("(%p %s)\n", pCF, debugstr_w(pwzType)); + + EnterCriticalSection(&session_cs); for(iter = mime_filter_list; iter; iter = iter->next) { if(iter->cf == pCF && !strcmpW(iter->mime, pwzType)) @@ -281,17 +357,20 @@ prev = iter; } - if(!iter) - return S_OK; - - if(prev) - prev->next = iter->next; - else - mime_filter_list = iter->next; - - IClassFactory_Release(iter->cf); - heap_free(iter->mime); - heap_free(iter); + if(iter) { + if(prev) + prev->next = iter->next; + else + mime_filter_list = iter->next; + } + + LeaveCriticalSection(&session_cs); + + if(iter) { + IClassFactory_Release(iter->cf); + heap_free(iter->mime); + heap_free(iter); + } return S_OK; } Modified: trunk/reactos/dll/win32/urlmon/umon.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/umon.c?re…
============================================================================== --- trunk/reactos/dll/win32/urlmon/umon.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/umon.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -493,10 +493,7 @@ /****************************************************************************** * URLMoniker_BindToStorage ******************************************************************************/ -static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, - IBindCtx* pbc, - REFIID riid, - VOID** ppvObject) +static HRESULT URLMonikerImpl_BindToStorage_hack(LPCWSTR URLName, IBindCtx* pbc, VOID** ppvObject) { HRESULT hres; BINDINFO bi; @@ -505,12 +502,7 @@ Binding *bind; int len; - WARN("(%s %p %s %p)\n", debugstr_w(URLName), pbc, debugstr_guid(riid), ppvObject); - - if(!IsEqualIID(&IID_IStream, riid)) { - FIXME("unsupported iid\n"); - return E_NOTIMPL; - } + WARN("(%s %p %p)\n", debugstr_w(URLName), pbc, ppvObject); bind = heap_alloc_zero(sizeof(Binding)); bind->lpVtbl = &BindingVtbl; @@ -741,10 +733,11 @@ return E_FAIL; } - if(url.nScheme== INTERNET_SCHEME_HTTPS - || url.nScheme== INTERNET_SCHEME_FTP - || url.nScheme == INTERNET_SCHEME_GOPHER) - return URLMonikerImpl_BindToStorage_hack(This->URLName, pbc, riid, ppvObject); + if(IsEqualGUID(&IID_IStream, riid) && + ( url.nScheme == INTERNET_SCHEME_HTTPS + || url.nScheme == INTERNET_SCHEME_FTP + || url.nScheme == INTERNET_SCHEME_GOPHER)) + return URLMonikerImpl_BindToStorage_hack(This->URLName, pbc, ppvObject); TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft, debugstr_guid(riid), ppvObject); @@ -1186,218 +1179,25 @@ } /*********************************************************************** - * URLDownloadToFileA (URLMON.@) - * - * Downloads URL szURL to rile szFileName and call lpfnCB callback to - * report progress. - * - * PARAMS - * pCaller [I] controlling IUnknown interface. - * szURL [I] URL of the file to download - * szFileName [I] file name to store the content of the URL - * dwReserved [I] reserved - set to 0 - * lpfnCB [I] callback for progress report - * - * RETURNS - * S_OK on success - * E_OUTOFMEMORY when going out of memory + * MkParseDisplayNameEx (URLMON.@) */ -HRESULT WINAPI URLDownloadToFileA(LPUNKNOWN pCaller, - LPCSTR szURL, - LPCSTR szFileName, - DWORD dwReserved, - LPBINDSTATUSCALLBACK lpfnCB) -{ - UNICODE_STRING szURL_w, szFileName_w; - - if ((szURL == NULL) || (szFileName == NULL)) { - FIXME("(%p,%s,%s,%08x,%p) cannot accept NULL strings !\n", pCaller, debugstr_a(szURL), debugstr_a(szFileName), dwReserved, lpfnCB); - return E_INVALIDARG; /* The error code is not specified in this case... */ - } - - if (RtlCreateUnicodeStringFromAsciiz(&szURL_w, szURL)) { - if (RtlCreateUnicodeStringFromAsciiz(&szFileName_w, szFileName)) { - HRESULT ret = URLDownloadToFileW(pCaller, szURL_w.Buffer, szFileName_w.Buffer, dwReserved, lpfnCB); - - RtlFreeUnicodeString(&szURL_w); - RtlFreeUnicodeString(&szFileName_w); - - return ret; - } else { - RtlFreeUnicodeString(&szURL_w); - } - } - - FIXME("(%p,%s,%s,%08x,%p) could not allocate W strings !\n", pCaller, szURL, szFileName, dwReserved, lpfnCB); - return E_OUTOFMEMORY; -} - -/*********************************************************************** - * URLDownloadToFileW (URLMON.@) - * - * Downloads URL szURL to rile szFileName and call lpfnCB callback to - * report progress. - * - * PARAMS - * pCaller [I] controlling IUnknown interface. - * szURL [I] URL of the file to download - * szFileName [I] file name to store the content of the URL - * dwReserved [I] reserved - set to 0 - * lpfnCB [I] callback for progress report - * - * RETURNS - * S_OK on success - * E_OUTOFMEMORY when going out of memory - */ -HRESULT WINAPI URLDownloadToFileW(LPUNKNOWN pCaller, - LPCWSTR szURL, - LPCWSTR szFileName, - DWORD dwReserved, - LPBINDSTATUSCALLBACK lpfnCB) -{ - HINTERNET hinternet, hcon, hreq; - BOOL r; - CHAR buffer[0x1000]; - DWORD sz, total, written; - DWORD total_size = 0xFFFFFFFF, arg_size = sizeof(total_size); - URL_COMPONENTSW url; - WCHAR host[0x80], path[0x100]; - HANDLE hfile; - static const WCHAR wszAppName[]={'u','r','l','m','o','n','.','d','l','l',0}; - - /* Note: all error codes would need to be checked agains real Windows behaviour... */ - TRACE("(%p,%s,%s,%08x,%p) stub!\n", pCaller, debugstr_w(szURL), debugstr_w(szFileName), dwReserved, lpfnCB); - - if ((szURL == NULL) || (szFileName == NULL)) { - FIXME(" cannot accept NULL strings !\n"); - return E_INVALIDARG; - } - - /* Would be better to use the application name here rather than 'urlmon' :-/ */ - hinternet = InternetOpenW(wszAppName, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); - if (hinternet == NULL) { - return E_OUTOFMEMORY; - } - - memset(&url, 0, sizeof(url)); - url.dwStructSize = sizeof(url); - url.lpszHostName = host; - url.dwHostNameLength = sizeof(host); - url.lpszUrlPath = path; - url.dwUrlPathLength = sizeof(path); - - if (!InternetCrackUrlW(szURL, 0, 0, &url)) { - InternetCloseHandle(hinternet); - return E_OUTOFMEMORY; - } - - if (lpfnCB) { - if (IBindStatusCallback_OnProgress(lpfnCB, 0, 0, BINDSTATUS_CONNECTING, url.lpszHostName) == E_ABORT) { - InternetCloseHandle(hinternet); - return S_OK; - } - } - - hcon = InternetConnectW(hinternet, url.lpszHostName, url.nPort, - url.lpszUserName, url.lpszPassword, - INTERNET_SERVICE_HTTP, 0, 0); - if (!hcon) { - InternetCloseHandle(hinternet); - return E_OUTOFMEMORY; - } - - hreq = HttpOpenRequestW(hcon, NULL, url.lpszUrlPath, NULL, NULL, NULL, 0, 0); - if (!hreq) { - InternetCloseHandle(hinternet); - InternetCloseHandle(hcon); - return E_OUTOFMEMORY; - } - - if (!HttpSendRequestW(hreq, NULL, 0, NULL, 0)) { - InternetCloseHandle(hinternet); - InternetCloseHandle(hcon); - InternetCloseHandle(hreq); - return E_OUTOFMEMORY; - } - - if (HttpQueryInfoW(hreq, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, - &total_size, &arg_size, NULL)) { - TRACE(" total size : %d\n", total_size); - } - - hfile = CreateFileW(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, - FILE_ATTRIBUTE_NORMAL, NULL ); - if (hfile == INVALID_HANDLE_VALUE) { - return E_ACCESSDENIED; - } - - if (lpfnCB) { - if (IBindStatusCallback_OnProgress(lpfnCB, 0, total_size != 0xFFFFFFFF ? total_size : 0, - BINDSTATUS_BEGINDOWNLOADDATA, szURL) == E_ABORT) { - InternetCloseHandle(hreq); - InternetCloseHandle(hcon); - InternetCloseHandle(hinternet); - CloseHandle(hfile); - return S_OK; - } - } - - total = 0; - while (1) { - r = InternetReadFile(hreq, buffer, sizeof(buffer), &sz); - if (!r) { - InternetCloseHandle(hreq); - InternetCloseHandle(hcon); - InternetCloseHandle(hinternet); - - CloseHandle(hfile); - return E_OUTOFMEMORY; - } - if (!sz) - break; - - total += sz; - - if (lpfnCB) { - if (IBindStatusCallback_OnProgress(lpfnCB, total, total_size != 0xFFFFFFFF ? total_size : 0, - BINDSTATUS_DOWNLOADINGDATA, szURL) == E_ABORT) { - InternetCloseHandle(hreq); - InternetCloseHandle(hcon); - InternetCloseHandle(hinternet); - CloseHandle(hfile); - return S_OK; - } - } - - if (!WriteFile(hfile, buffer, sz, &written, NULL)) { - InternetCloseHandle(hreq); - InternetCloseHandle(hcon); - InternetCloseHandle(hinternet); - - CloseHandle(hfile); - return E_OUTOFMEMORY; - } - } - - if (lpfnCB) { - if (IBindStatusCallback_OnProgress(lpfnCB, total, total_size != 0xFFFFFFFF ? total_size : 0, - BINDSTATUS_ENDDOWNLOADDATA, szURL) == E_ABORT) { - InternetCloseHandle(hreq); - InternetCloseHandle(hcon); - InternetCloseHandle(hinternet); - CloseHandle(hfile); - return S_OK; - } - } - - InternetCloseHandle(hreq); - InternetCloseHandle(hcon); - InternetCloseHandle(hinternet); - - CloseHandle(hfile); - - return S_OK; -} +HRESULT WINAPI MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten, LPMONIKER *ppmk) +{ + TRACE("(%p %s %p %p)\n", pbc, debugstr_w(szDisplayName), pchEaten, ppmk); + + if(is_registered_protocol(szDisplayName)) { + HRESULT hres; + + hres = CreateURLMoniker(NULL, szDisplayName, ppmk); + if(SUCCEEDED(hres)) { + *pchEaten = strlenW(szDisplayName); + return hres; + } + } + + return MkParseDisplayName(pbc, szDisplayName, pchEaten, ppmk); +} + /*********************************************************************** * URLDownloadToCacheFileA (URLMON.@) Modified: trunk/reactos/dll/win32/urlmon/umstream.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/umstream.…
============================================================================== --- trunk/reactos/dll/win32/urlmon/umstream.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/umstream.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -221,7 +221,7 @@ if ( !pcbRead) pcbRead = &dwBytesRead; - if ( ! ReadFile( This->handle, pv, cb, (LPDWORD)pcbRead, NULL ) ) + if ( ! ReadFile( This->handle, pv, cb, pcbRead, NULL ) ) return S_FALSE; if (!*pcbRead) Modified: trunk/reactos/dll/win32/urlmon/urlmon.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/urlmon.rb…
============================================================================== --- trunk/reactos/dll/win32/urlmon/urlmon.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/urlmon.rbuild [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -9,18 +9,10 @@ <define name="__WINESRC__" /> <define name="WINVER">0x600</define> <define name="_WIN32_WINNT">0x600</define> - <library>wine</library> - <library>ole32</library> - <library>shlwapi</library> - <library>wininet</library> - <library>user32</library> - <library>advapi32</library> - <library>kernel32</library> - <library>ntdll</library> - <library>uuid</library> <file>bindctx.c</file> <file>binding.c</file> <file>bindprot.c</file> + <file>download.c</file> <file>file.c</file> <file>format.c</file> <file>ftp.c</file> @@ -35,5 +27,14 @@ <file>urlmon_main.c</file> <file>rsrc.rc</file> <file>urlmon.spec</file> + <library>wine</library> + <library>ole32</library> + <library>shlwapi</library> + <library>wininet</library> + <library>user32</library> + <library>advapi32</library> + <library>kernel32</library> + <library>uuid</library> + <library>ntdll</library> </module> </group> Modified: trunk/reactos/dll/win32/urlmon/urlmon.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/urlmon.sp…
============================================================================== --- trunk/reactos/dll/win32/urlmon/urlmon.spec [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/urlmon.spec [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -21,7 +21,7 @@ @ stdcall CoInternetQueryInfo(ptr long long ptr long ptr long) @ stub CompareSecurityIds @ stub CopyBindInfo -@ stub CopyStgMedium +@ stdcall CopyStgMedium(ptr ptr) @ stdcall CreateAsyncBindCtx(long ptr ptr ptr) @ stdcall CreateAsyncBindCtxEx(ptr long ptr ptr ptr long) @ stdcall CreateFormatEnumerator(long ptr ptr) @@ -53,7 +53,7 @@ @ stub IsLoggingEnabledA @ stub IsLoggingEnabledW @ stdcall IsValidURL(ptr wstr long) -@ stdcall MkParseDisplayNameEx(ptr ptr ptr ptr) ole32.MkParseDisplayName +@ stdcall MkParseDisplayNameEx(ptr wstr ptr ptr) @ stdcall ObtainUserAgentString(long str ptr) @ stub PrivateCoInstall @ stdcall RegisterBindStatusCallback(ptr ptr ptr long) Modified: trunk/reactos/dll/win32/urlmon/urlmon_main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/urlmon_ma…
============================================================================== --- trunk/reactos/dll/win32/urlmon/urlmon_main.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/urlmon_main.c [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -210,31 +210,14 @@ static void init_session(BOOL init) { - IInternetSession *session; int i; - CoInternetGetSession(0, &session, 0); - for(i=0; i < sizeof(object_creation)/sizeof(object_creation[0]); i++) { - if(object_creation[i].protocol) { - if(init) - { - IInternetSession_RegisterNameSpace(session, object_creation[i].cf, - object_creation[i].clsid, object_creation[i].protocol, 0, NULL, 0); - /* make sure that the AddRef on the class factory doesn't keep us loaded */ - URLMON_UnlockModule(); - } - else - { - /* make sure that the Release on the class factory doesn't unload us */ - URLMON_LockModule(); - IInternetSession_UnregisterNameSpace(session, object_creation[i].cf, - object_creation[i].protocol); - } - } - } - - IInternetSession_Release(session); + + if(object_creation[i].protocol) + register_urlmon_namespace(object_creation[i].cf, object_creation[i].clsid, + object_creation[i].protocol, init); + } } /******************************************************************************* @@ -398,12 +381,51 @@ if(offsetof(BINDINFO, szExtraInfo) < size) CoTaskMemFree(pbindinfo->szCustomVerb); - if(pbindinfo->pUnk && offsetof(BINDINFO, pUnk) < size) IUnknown_Release(pbindinfo->pUnk); memset(pbindinfo, 0, size); pbindinfo->cbSize = size; +} + +/*********************************************************************** + * CopyStgMedium (URLMON.@) + */ +HRESULT WINAPI CopyStgMedium(const STGMEDIUM *src, STGMEDIUM *dst) +{ + TRACE("(%p %p)\n", src, dst); + + if(!src || !dst) + return E_POINTER; + + *dst = *src; + + switch(dst->tymed) { + case TYMED_NULL: + break; + case TYMED_FILE: + if(src->u.lpszFileName && !src->pUnkForRelease) { + DWORD size = (strlenW(src->u.lpszFileName)+1)*sizeof(WCHAR); + dst->u.lpszFileName = CoTaskMemAlloc(size); + memcpy(dst->u.lpszFileName, src->u.lpszFileName, size); + } + break; + case TYMED_ISTREAM: + if(dst->u.pstm) + IStream_AddRef(dst->u.pstm); + break; + case TYMED_ISTORAGE: + if(dst->u.pstg) + IStorage_AddRef(dst->u.pstg); + break; + default: + FIXME("Unimplemented tymed %d\n", src->tymed); + } + + if(dst->pUnkForRelease) + IUnknown_AddRef(dst->pUnkForRelease); + + return S_OK; } static BOOL text_richtext_filter(const BYTE *b, DWORD size) @@ -430,6 +452,12 @@ return FALSE; } +static BOOL audio_basic_filter(const BYTE *b, DWORD size) +{ + return size > 4 + && b[0] == '.' && b[1] == 's' && b[2] == 'n' && b[3] == 'd'; +} + static BOOL audio_wav_filter(const BYTE *b, DWORD size) { return size > 12 @@ -574,6 +602,7 @@ static const WCHAR wszTextHtml[] = {'t','e','x','t','/','h','t','m','l',0}; static const WCHAR wszTextRichtext[] = {'t','e','x','t','/','r','i','c','h','t','e','x','t',0}; + static const WCHAR wszAudioBasic[] = {'a','u','d','i','o','/','b','a','s','i','c',0}; static const WCHAR wszAudioWav[] = {'a','u','d','i','o','/','w','a','v',0}; static const WCHAR wszImageGif[] = {'i','m','a','g','e','/','g','i','f',0}; static const WCHAR wszImagePjpeg[] = {'i','m','a','g','e','/','p','j','p','e','g',0}; @@ -604,16 +633,25 @@ } mime_filters[] = { {wszTextHtml, text_html_filter}, {wszTextRichtext, text_richtext_filter}, + /* {wszAudioXAiff, audio_xaiff_filter}, */ + {wszAudioBasic, audio_basic_filter}, {wszAudioWav, audio_wav_filter}, {wszImageGif, image_gif_filter}, {wszImagePjpeg, image_pjpeg_filter}, {wszImageTiff, image_tiff_filter}, {wszImageXPng, image_xpng_filter}, + /* {wszImageXBitmap, image_xbitmap_filter}, */ {wszImageBmp, image_bmp_filter}, + /* {wszImageXJg, image_xjg_filter}, */ + /* {wszImageXEmf, image_xemf_filter}, */ + /* {wszImageXWmf, image_xwmf_filter}, */ {wszVideoAvi, video_avi_filter}, {wszVideoMpeg, video_mpeg_filter}, {wszAppPostscript, application_postscript_filter}, + /* {wszAppBase64, application_base64_filter}, */ + /* {wszAppMacbinhex40, application_macbinhex40_filter}, */ {wszAppPdf, application_pdf_filter}, + /* {wszAppXCompressed, application_xcompressed_filter}, */ {wszAppXZip, application_xzip_filter}, {wszAppXGzip, application_xgzip_filter}, {wszAppJava, application_java_filter}, Modified: trunk/reactos/dll/win32/urlmon/urlmon_main.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/urlmon/urlmon_ma…
============================================================================== --- trunk/reactos/dll/win32/urlmon/urlmon_main.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/urlmon/urlmon_main.h [iso-8859-1] Fri Apr 4 09:41:46 2008 @@ -67,6 +67,8 @@ IInternetProtocolInfo *get_protocol_info(LPCWSTR url); HRESULT get_protocol_handler(LPCWSTR url, CLSID *clsid, IClassFactory **ret); +BOOL is_registered_protocol(LPCWSTR); +void register_urlmon_namespace(IClassFactory*,REFIID,LPCWSTR,BOOL); HRESULT bind_to_storage(LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv); HRESULT bind_to_object(IMoniker *mon, LPCWSTR url, IBindCtx *pbc, REFIID riid, void **ppv); @@ -109,4 +111,17 @@ return ret; } +static inline LPWSTR heap_strdupAtoW(const char *str) +{ + LPWSTR ret = NULL; + + if(str) { + DWORD len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); + ret = heap_alloc(len*sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len); + } + + return ret; +} + #endif /* __WINE_URLMON_MAIN_H */
16 years, 7 months
1
0
0
0
[hpoussin] 32858: Add some constants/prototypes
by hpoussin@svn.reactos.org
Author: hpoussin Date: Fri Apr 4 09:41:24 2008 New Revision: 32858 URL:
http://svn.reactos.org/svn/reactos?rev=32858&view=rev
Log: Add some constants/prototypes Modified: trunk/reactos/include/psdk/urlmon.idl Modified: trunk/reactos/include/psdk/urlmon.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/urlmon.idl?re…
============================================================================== --- trunk/reactos/include/psdk/urlmon.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/urlmon.idl [iso-8859-1] Fri Apr 4 09:41:24 2008 @@ -23,6 +23,20 @@ import "msxml.idl"; interface IInternetProtocolSink; + +/***************************************************************************** + * IInternet interface + */ +[ + object, + uuid(79eac9e0-baf9-11ce-8c82-00aa004ba90b), + pointer_default(unique), + local +] +interface IInternet : IUnknown +{ + typedef [unique] IInternet *LPIINTERNET; +} /***************************************************************************** * IBinding interface @@ -1005,6 +1019,120 @@ [in] DWORD dwFlags); } +cpp_quote("#define URLACTION_MIN 0x00001000") +cpp_quote("#define URLACTION_DOWNLOAD_MIN 0x00001000") +cpp_quote("#define URLACTION_DOWNLOAD_SIGNED_ACTIVEX 0x00001001") +cpp_quote("#define URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX 0x00001004") +cpp_quote("#define URLACTION_DOWNLOAD_CURR_MAX 0x00001004") +cpp_quote("#define URLACTION_DOWNLOAD_MAX 0x000011ff") + +cpp_quote("#define URLACTION_ACTIVEX_MIN 0x00001200") +cpp_quote("#define URLACTION_ACTIVEX_RUN 0x00001200") +cpp_quote("#define URLPOLICY_ACTIVEX_CHECK_LIST 0x00010000") +cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY 0x00001201") +cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY 0x00001202") +cpp_quote("#define URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY 0x00001203") +cpp_quote("#define URLACTION_SCRIPT_OVERRIDE_SAFETY 0x00001401") +cpp_quote("#define URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY 0x00001204") +cpp_quote("#define URLACTION_ACTIVEX_TREATASUNTRUSTED 0x00001205") +cpp_quote("#define URLACTION_ACTIVEX_CURR_MAX 0x00001205") +cpp_quote("#define URLACTION_ACTIVEX_MAX 0x000013ff") + +cpp_quote("#define URLACTION_SCRIPT_MIN 0x00001400") +cpp_quote("#define URLACTION_SCRIPT_RUN 0x00001400") +cpp_quote("#define URLACTION_SCRIPT_JAVA_USE 0x00001402") +cpp_quote("#define URLACTION_SCRIPT_SAFE_ACTIVEX 0x00001405") +cpp_quote("#define URLACTION_CROSS_DOMAIN_DATA 0x00001406") +cpp_quote("#define URLACTION_SCRIPT_PASTE 0x00001407") +cpp_quote("#define URLACTION_SCRIPT_CURR_MAX 0x00001407") +cpp_quote("#define URLACTION_SCRIPT_MAX 0x000015ff") + +cpp_quote("#define URLACTION_HTML_MIN 0x00001600") +cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS 0x00001601") +cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS_FROM 0x00001602") +cpp_quote("#define URLACTION_HTML_SUBMIT_FORMS_TO 0x00001603") +cpp_quote("#define URLACTION_HTML_FONT_DOWNLOAD 0x00001604") +cpp_quote("#define URLACTION_HTML_JAVA_RUN 0x00001605") +cpp_quote("#define URLACTION_HTML_USERDATA_SAVE 0x00001606") +cpp_quote("#define URLACTION_HTML_SUBFRAME_NAVIGATE 0x00001607") +cpp_quote("#define URLACTION_HTML_META_REFRESH 0x00001608") +cpp_quote("#define URLACTION_HTML_MIXED_CONTENT 0x00001609") +cpp_quote("#define URLACTION_HTML_MAX 0x000017ff") + +cpp_quote("#define URLACTION_SHELL_MIN 0x00001800") +cpp_quote("#define URLACTION_SHELL_INSTALL_DTITEMS 0x00001800") +cpp_quote("#define URLACTION_SHELL_MOVE_OR_COPY 0x00001802") +cpp_quote("#define URLACTION_SHELL_FILE_DOWNLOAD 0x00001803") +cpp_quote("#define URLACTION_SHELL_VERB 0x00001804") +cpp_quote("#define URLACTION_SHELL_WEBVIEW_VERB 0x00001805") +cpp_quote("#define URLACTION_SHELL_CURR_MAX 0x00001805") +cpp_quote("#define URLACTION_SHELL_MAX 0x000019ff") + +cpp_quote("#define URLACTION_NETWORK_MIN 0x00001a00") +cpp_quote("#define URLACTION_CREDENTIALS_USE 0x00001a00") +cpp_quote("#define URLACTION_AUTHENTICATE_CLIENT 0x00001a01") +cpp_quote("#define URLACTION_COOKIES 0x00001a02") +cpp_quote("#define URLACTION_COOKIES_SESSION 0x00001a03") +cpp_quote("#define URLACTION_CLIENT_CERT_PROMPT 0x00001a04") +cpp_quote("#define URLACTION_COOKIES_THIRD_PARTY 0x00001a05") +cpp_quote("#define URLACTION_COOKIES_SESSION_THIRD_PARTY 0x00001a06") +cpp_quote("#define URLACTION_COOKIES_ENABLED 0x00001a10") +cpp_quote("#define URLACTION_NETWORK_CURR_MAX 0x00001a10") +cpp_quote("#define URLACTION_NETWORK_MAX 0x00001bff") + +cpp_quote("#define URLACTION_JAVA_MIN 0x00001c00") +cpp_quote("#define URLACTION_JAVA_PERMISSIONS 0x00001c00") +cpp_quote("#define URLPOLICY_JAVA_PROHIBIT 0x00000000") +cpp_quote("#define URLPOLICY_JAVA_HIGH 0x00010000") +cpp_quote("#define URLPOLICY_JAVA_MEDIUM 0x00020000") +cpp_quote("#define URLPOLICY_JAVA_LOW 0x00030000") +cpp_quote("#define URLPOLICY_JAVA_CUSTOM 0x00800000") +cpp_quote("#define URLACTION_JAVA_CURR_MAX 0x00001c00") +cpp_quote("#define URLACTION_JAVA_MAX 0x00001cff") + +cpp_quote("#define URLACTION_INFODELIVERY_MIN 0x00001d00") +cpp_quote("#define URLACTION_INFODELIVERY_NO_ADDING_CHANNELS 0x00001d00") +cpp_quote("#define URLACTION_INFODELIVERY_NO_EDITING_CHANNELS 0x00001d01") +cpp_quote("#define URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS 0x00001d02") +cpp_quote("#define URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS 0x00001d03") +cpp_quote("#define URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS 0x00001d04") +cpp_quote("#define URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS 0x00001d05") +cpp_quote("#define URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING 0x00001d06") +cpp_quote("#define URLACTION_INFODELIVERY_CURR_MAX 0x00001d06") +cpp_quote("#define URLACTION_INFODELIVERY_MAX 0x00001dff") + +cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_MIN 0x00001e00") +cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_PERMISSIONS 0x00001e05") +cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT 0x00010000") +cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_PRECACHE 0x00020000") +cpp_quote("#define URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL 0x00030000") +cpp_quote("#define URLACTION_CHANNEL_SOFTDIST_MAX 0x00001eff") + +cpp_quote("#define URLPOLICY_ALLOW 0x00") +cpp_quote("#define URLPOLICY_QUERY 0x01") +cpp_quote("#define URLPOLICY_DISALLOW 0x03") + +cpp_quote("#define URLPOLICY_NOTIFY_ON_ALLOW 0x10") +cpp_quote("#define URLPOLICY_NOTIFY_ON_DISALLOW 0x20") + +cpp_quote("#define URLPOLICY_LOG_ON_ALLOW 0x40") +cpp_quote("#define URLPOLICY_LOG_ON_DISALLOW 0x80") + +cpp_quote("#define URLPOLICY_DONTCHECKDLGBOX 0x100") + +cpp_quote("#define URLPOLICY_CREDENTIALS_SILENT_LOGON_OK 0x00000000") +cpp_quote("#define URLPOLICY_CREDENTIALS_MUST_PROMPT_USER 0x00010000") +cpp_quote("#define URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT 0x00020000") +cpp_quote("#define URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY 0x00030000") + +cpp_quote("#define URLPOLICY_AUTHENTICATE_CLEARTEXT_OK 0x00000000") +cpp_quote("#define URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE 0x00010000") +cpp_quote("#define URLPOLICY_AUTHENTICATE_MUTUAL_ONLY 0x00030000") + +cpp_quote("#define URLPOLICY_MASK_PERMISSIONS 0x0f") +cpp_quote("#define GetUrlPolicyPermissions(dw) (dw & URLPOLICY_MASK_PERMISSIONS)") +cpp_quote("#define SetUrlPolicyPermissions(dw,dw2) ((dw) = ((dw) & ~URLPOLICY_MASK_PERMISSIONS) | (dw2))") + /***************************************************************************** * IInternetZoneManager interface */ @@ -1279,6 +1407,7 @@ cpp_quote("HRESULT WINAPI RegisterFormatEnumerator(LPBC,IEnumFORMATETC*,DWORD);") cpp_quote("HRESULT WINAPI RevokeFormatEnumerator(LPBC,IEnumFORMATETC*);") cpp_quote("HRESULT WINAPI RevokeBindStatusCallback(LPBC,IBindStatusCallback*);") +cpp_quote("HRESULT WINAPI CopyStgMedium(const STGMEDIUM*,STGMEDIUM*);") cpp_quote("void WINAPI ReleaseBindInfo(BINDINFO*);") cpp_quote("HRESULT WINAPI UrlMkGetSessionOption(DWORD,LPVOID,DWORD,DWORD*,DWORD);") cpp_quote("HRESULT WINAPI UrlMkSetSessionOption(DWORD,LPVOID,DWORD,DWORD);")
16 years, 7 months
1
0
0
0
[winesync] 32857: Autosyncing with Wine HEAD
by winesync@svn.reactos.org
Author: winesync Date: Fri Apr 4 09:35:37 2008 New Revision: 32857 URL:
http://svn.reactos.org/svn/reactos?rev=32857&view=rev
Log: Autosyncing with Wine HEAD Added: trunk/reactos/dll/win32/shlwapi/shlwapi_Ro.rc (with props) Modified: trunk/reactos/dll/win32/shlwapi/ordinal.c trunk/reactos/dll/win32/shlwapi/path.c trunk/reactos/dll/win32/shlwapi/shlwapi.rbuild trunk/reactos/dll/win32/shlwapi/shlwapi.rc trunk/reactos/dll/win32/shlwapi/shlwapi_Ru.rc trunk/reactos/dll/win32/shlwapi/shlwapi_ros.diff trunk/reactos/dll/win32/shlwapi/url.c Modified: trunk/reactos/dll/win32/shlwapi/ordinal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/ordinal.…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/ordinal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/ordinal.c [iso-8859-1] Fri Apr 4 09:35:37 2008 @@ -1284,9 +1284,6 @@ */ HRESULT WINAPI IUnknown_GetWindow(IUnknown *lpUnknown, HWND *lphWnd) { - /* FIXME: Wine has no header for this object */ - static const GUID IID_IInternetSecurityMgrSite = { 0x79eac9ed, - 0xbaf9, 0x11ce, { 0x8c, 0x82, 0x00, 0xaa, 0x00, 0x4b, 0xa9, 0x0b }}; IUnknown *lpOle; HRESULT hRet = E_FAIL; Modified: trunk/reactos/dll/win32/shlwapi/path.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/path.c?r…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/path.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/path.c [iso-8859-1] Fri Apr 4 09:35:37 2008 @@ -2344,7 +2344,12 @@ { WCHAR szPath[MAX_PATH]; WCHAR szBuff[MAX_PATH]; - MultiByteToWideChar(CP_ACP,0,lpszPath,-1,szPath,MAX_PATH); + int ret = MultiByteToWideChar(CP_ACP,0,lpszPath,-1,szPath,MAX_PATH); + + if (!ret) { + WARN("Failed to convert string to widechar (too long?), LE %d.\n", GetLastError()); + return FALSE; + } bRet = PathCanonicalizeW(szBuff, szPath); WideCharToMultiByte(CP_ACP,0,szBuff,-1,lpszBuf,MAX_PATH,0,0); } Modified: trunk/reactos/dll/win32/shlwapi/shlwapi.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/shlwapi.…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/shlwapi.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/shlwapi.rbuild [iso-8859-1] Fri Apr 4 09:35:37 2008 @@ -8,23 +8,6 @@ <define name="__WINESRC__" /> <define name="WINVER">0x600</define> <define name="_WIN32_WINNT">0x600</define> - <library>wine</library> - <library>user32</library> - <library>gdi32</library> - <library>advapi32</library> - <library>kernel32</library> - <library>ntdll</library> - <library>oleaut32</library> - <library>ole32</library> - <library>comctl32</library> - <library>comdlg32</library> - <library>mpr</library> - <library>mlang</library> - <library>urlmon</library> - <library>shell32</library> - <library>winmm</library> - <library>version</library> - <library>uuid</library> <file>assoc.c</file> <file>clist.c</file> <file>istream.c</file> @@ -41,5 +24,22 @@ <file>wsprintf.c</file> <file>shlwapi.rc</file> <file>shlwapi.spec</file> + <library>wine</library> + <library>user32</library> + <library>gdi32</library> + <library>advapi32</library> + <library>kernel32</library> + <library>oleaut32</library> + <library>ole32</library> + <library>comctl32</library> + <library>comdlg32</library> + <library>mpr</library> + <library>mlang</library> + <library>urlmon</library> + <library>shell32</library> + <library>winmm</library> + <library>version</library> + <library>uuid</library> + <library>ntdll</library> </module> </group> Modified: trunk/reactos/dll/win32/shlwapi/shlwapi.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/shlwapi.…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/shlwapi.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/shlwapi.rc [iso-8859-1] Fri Apr 4 09:35:37 2008 @@ -39,6 +39,7 @@ #include "shlwapi_No.rc" #include "shlwapi_Pl.rc" #include "shlwapi_Pt.rc" +#include "shlwapi_Ro.rc" #include "shlwapi_Ru.rc" #include "shlwapi_Sv.rc" #include "shlwapi_Tr.rc" Added: trunk/reactos/dll/win32/shlwapi/shlwapi_Ro.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/shlwapi_…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/shlwapi_Ro.rc (added) +++ trunk/reactos/dll/win32/shlwapi/shlwapi_Ro.rc [iso-8859-1] Fri Apr 4 09:35:37 2008 @@ -1,0 +1,46 @@ +/* + * Copyright 2004 Jon Griffiths + * Copyright 2008 Michael Stefaniuc + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL + +#pragma code_page(65001) + +IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Eroare!" +FONT 8, "MS Shell Dlg" +{ + LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20 + LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8 + CHECKBOX "Nu &afiÈa din nou acest mesaj", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + PUSHBUTTON L"&OK" IDOK, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON L"&RenunÈÄ" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON L"&Da" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON L"&Nu" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP +} + +STRINGTABLE DISCARDABLE +{ + IDS_BYTES_FORMAT "%ld octeÈi" + IDS_TIME_INTERVAL_HOURS " ore" + IDS_TIME_INTERVAL_MINUTES " min" + IDS_TIME_INTERVAL_SECONDS " sec" +} + +#pragma code_page(default) Propchange: trunk/reactos/dll/win32/shlwapi/shlwapi_Ro.rc ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/shlwapi/shlwapi_Ru.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/shlwapi_…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/shlwapi_Ru.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/shlwapi_Ru.rc [iso-8859-1] Fri Apr 4 09:35:37 2008 @@ -1,7 +1,7 @@ /* * Russian resources for shlwapi * - * Copyright 2005 Mikhail Y. Zvyozdochkin + * Copyright 2008 Vitaliy Margolen * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT @@ -27,17 +27,17 @@ { LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20 LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8 - CHECKBOX "&Áîëüøå íå ïîêàçûâàòü ýòî ñîîáùåíèå", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Áîëüøå íå &ïîêàçûâàòü ýòî ñîîáùåíèå", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP PUSHBUTTON L"&OK" IDOK, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON L"&Îòìåíà" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON L"Î&òìåíèòü" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON L"&Äà" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON L"&Íåò" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP } STRINGTABLE DISCARDABLE { - IDS_BYTES_FORMAT "%ld bytes" - IDS_TIME_INTERVAL_HOURS " hr" - IDS_TIME_INTERVAL_MINUTES " min" - IDS_TIME_INTERVAL_SECONDS " sec" + IDS_BYTES_FORMAT "%ld áàéò" + IDS_TIME_INTERVAL_HOURS " ÷àñ" + IDS_TIME_INTERVAL_MINUTES " ìèí" + IDS_TIME_INTERVAL_SECONDS " ñåê" } Modified: trunk/reactos/dll/win32/shlwapi/shlwapi_ros.diff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/shlwapi_…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/shlwapi_ros.diff [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/shlwapi_ros.diff [iso-8859-1] Fri Apr 4 09:35:37 2008 @@ -2,67 +2,11 @@ =================================================================== --- shlwapi.rc (revision 25691) +++ shlwapi.rc (revision 25692) -@@ -39,5 +39,7 @@ - #include "shlwapi_No.rc" - #include "shlwapi_Pl.rc" - #include "shlwapi_Pt.rc" -+#include "shlwapi_Ru.rc" +@@ -43,3 +43,4 @@ + #include "shlwapi_Ru.rc" #include "shlwapi_Sv.rc" #include "shlwapi_Tr.rc" +#include "shlwapi_Uk.rc" -Index: shlwapi_Ru.rc -=================================================================== ---- shlwapi_Ru.rc (revision 25692) -+++ shlwapi_Ru.rc (working copy) -@@ -0,0 +1,43 @@ -+/* -+ * Russian resources for shlwapi -+ * -+ * Copyright 2005 Mikhail Y. Zvyozdochkin -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ */ -+ -+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -+ -+IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60 -+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -+CAPTION "Îøèáêà!" -+FONT 8, "MS Shell Dlg" -+{ -+ LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20 -+ LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8 -+ CHECKBOX "&Áîëüøå íå ïîêàçûâàòü ýòî ñîîáùåíèå", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP -+ PUSHBUTTON L"&OK" IDOK, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP -+ PUSHBUTTON L"&Îòìåíà" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP -+ PUSHBUTTON L"&Äà" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP -+ PUSHBUTTON L"&Íåò" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP -+} -+ -+STRINGTABLE DISCARDABLE -+{ -+ IDS_BYTES_FORMAT "%ld bytes" -+ IDS_TIME_INTERVAL_HOURS " hr" -+ IDS_TIME_INTERVAL_MINUTES " min" -+ IDS_TIME_INTERVAL_SECONDS " sec" -+} - -Property shlwapi_Ru.rc -___________________________________________________________________ -Name: svn:eol-style - + native Index: shlwapi_Uk.rc =================================================================== --- shlwapi_Uk.rc (revision 25692) Modified: trunk/reactos/dll/win32/shlwapi/url.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/url.c?re…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/url.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/url.c [iso-8859-1] Fri Apr 4 09:35:37 2008 @@ -752,7 +752,6 @@ break; } while(FALSE); /* a litte trick to allow easy exit from nested if's */ - ret = S_OK; switch (process_case) { @@ -780,9 +779,6 @@ memcpy(preliminary, base.pszProtocol, (base.cchProtocol + 1)*sizeof(WCHAR)); work = preliminary + base.cchProtocol + 1; strcpyW(work, relative.pszSuffix); - if (!(dwFlags & URL_PLUGGABLE_PROTOCOL) && - URL_JustLocation(relative.pszSuffix)) - strcatW(work, single_slash); break; case 4: /* @@ -1584,14 +1580,18 @@ { HKEY newkey; DWORD data_len, dwType; - WCHAR reg_path[MAX_PATH]; WCHAR value[MAX_PATH], data[MAX_PATH]; + static const WCHAR prefix_keyW[] = + {'S','o','f','t','w','a','r','e', + '\\','M','i','c','r','o','s','o','f','t', + '\\','W','i','n','d','o','w','s', + '\\','C','u','r','r','e','n','t','V','e','r','s','i','o','n', + '\\','U','R','L', + '\\','D','e','f','a','u','l','t','P','r','e','f','i','x',0}; + /* get and prepend default */ - MultiByteToWideChar(0, 0, - "Software\\Microsoft\\Windows\\CurrentVersion\\URL\\DefaultPrefix", - -1, reg_path, MAX_PATH); - RegOpenKeyExW(HKEY_LOCAL_MACHINE, reg_path, 0, 1, &newkey); + RegOpenKeyExW(HKEY_LOCAL_MACHINE, prefix_keyW, 0, 1, &newkey); data_len = MAX_PATH; value[0] = '@'; value[1] = '\0'; @@ -2013,7 +2013,7 @@ * pszIn [I] Url to parse * pszOut [O] Destination for part of pszIn requested * pcchOut [I] Size of pszOut - * [O] length of pszOut string EXLUDING '\0' if S_OK, otherwise + * [O] length of pszOut string EXCLUDING '\0' if S_OK, otherwise * needed size of pszOut INCLUDING '\0'. * dwPart [I] URL_PART_ enum from "shlwapi.h" * dwFlags [I] URL_ flags from "shlwapi.h" @@ -2155,6 +2155,8 @@ PARSEDURLA base; DWORD res1; + TRACE("%s\n", debugstr_a(lpstrPath)); + if (!lpstrPath || !*lpstrPath) return FALSE; /* get protocol */ @@ -2172,6 +2174,8 @@ { PARSEDURLW base; DWORD res1; + + TRACE("%s\n", debugstr_w(lpstrPath)); if (!lpstrPath || !*lpstrPath) return FALSE;
16 years, 7 months
1
0
0
0
[hpoussin] 32856: Add some constants
by hpoussin@svn.reactos.org
Author: hpoussin Date: Fri Apr 4 09:28:24 2008 New Revision: 32856 URL:
http://svn.reactos.org/svn/reactos?rev=32856&view=rev
Log: Add some constants Modified: trunk/reactos/include/psdk/wincrypt.h Modified: trunk/reactos/include/psdk/wincrypt.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/wincrypt.h?re…
============================================================================== --- trunk/reactos/include/psdk/wincrypt.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/wincrypt.h [iso-8859-1] Fri Apr 4 09:28:24 2008 @@ -1687,6 +1687,11 @@ #define PP_USE_HARDWARE_RNG 38 #define PP_KEYSPEC 39 #define PP_ENUMEX_SIGNING_PROT 40 +#define PP_CRYPT_COUNT_KEY_USE 41 +#define PP_USER_CERTSTORE 42 +#define PP_SMARTCARD_READER 43 +#define PP_SMARTCARD_GUID 45 +#define PP_ROOT_CERTSTORE 46 /* Crypt{Get/Set}KeyParam */ #define KP_IV 1
16 years, 7 months
1
0
0
0
[winesync] 32855: Autosyncing with Wine HEAD
by winesync@svn.reactos.org
Author: winesync Date: Fri Apr 4 09:27:55 2008 New Revision: 32855 URL:
http://svn.reactos.org/svn/reactos?rev=32855&view=rev
Log: Autosyncing with Wine HEAD Modified: trunk/reactos/dll/win32/rsaenh/handle.c trunk/reactos/dll/win32/rsaenh/implglue.c trunk/reactos/dll/win32/rsaenh/mpi.c trunk/reactos/dll/win32/rsaenh/rsaenh.c trunk/reactos/dll/win32/rsaenh/rsaenh.rbuild Modified: trunk/reactos/dll/win32/rsaenh/handle.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rsaenh/handle.c?…
============================================================================== --- trunk/reactos/dll/win32/rsaenh/handle.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rsaenh/handle.c [iso-8859-1] Fri Apr 4 09:27:55 2008 @@ -193,10 +193,10 @@ int release_handle_table(HANDLETABLE *lpTable) { TRACE("(lpTable=%p)\n", lpTable); - + release_all_handles(lpTable); destroy_handle_table(lpTable); - return (int)HeapFree(GetProcessHeap(), 0, lpTable); + return HeapFree(GetProcessHeap(), 0, lpTable); } /****************************************************************************** Modified: trunk/reactos/dll/win32/rsaenh/implglue.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rsaenh/implglue.…
============================================================================== --- trunk/reactos/dll/win32/rsaenh/implglue.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rsaenh/implglue.c [iso-8859-1] Fri Apr 4 09:27:55 2008 @@ -134,7 +134,7 @@ BOOL duplicate_hash_impl(ALG_ID aiAlgid, CONST HASH_CONTEXT *pSrcHashContext, HASH_CONTEXT *pDestHashContext) { - memcpy(pDestHashContext, pSrcHashContext, sizeof(HASH_CONTEXT)); + *pDestHashContext = *pSrcHashContext; return TRUE; } @@ -227,7 +227,7 @@ case CALG_AES_128: case CALG_AES_192: case CALG_AES_256: - memcpy(pDestKeyContext, pSrcKeyContext, sizeof(KEY_CONTEXT)); + *pDestKeyContext = *pSrcKeyContext; break; case CALG_RSA_KEYX: case CALG_RSA_SIGN: Modified: trunk/reactos/dll/win32/rsaenh/mpi.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rsaenh/mpi.c?rev…
============================================================================== --- trunk/reactos/dll/win32/rsaenh/mpi.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rsaenh/mpi.c [iso-8859-1] Fri Apr 4 09:27:55 2008 @@ -30,9 +30,6 @@ #include <stdarg.h> #include "tomcrypt.h" - -/* table of first PRIME_SIZE primes */ -static const mp_digit __prime_tab[]; /* Known optimal configurations CPU /Compiler /MUL CUTOFF/SQR CUTOFF @@ -1069,7 +1066,7 @@ /* normalize both x and y, ensure that y >= b/2, [b == 2**DIGIT_BIT] */ norm = mp_count_bits(&y) % DIGIT_BIT; - if (norm < (int)(DIGIT_BIT-1)) { + if (norm < DIGIT_BIT-1) { norm = (DIGIT_BIT-1) - norm; if ((res = mp_mul_2d (&x, norm, &x)) != MP_OKAY) { goto __Y; @@ -1285,7 +1282,7 @@ } /* shift by as many digits in the bit count */ - if (b >= (int)DIGIT_BIT) { + if (b >= DIGIT_BIT) { mp_rshd (c, b / DIGIT_BIT); } @@ -1390,9 +1387,9 @@ } else { t = 0; } - q.dp[ix] = (mp_digit)t; - } - + q.dp[ix] = t; + } + if (d != NULL) { *d = (mp_digit)w; } @@ -1710,11 +1707,11 @@ } /* read next digit and reset bitcnt */ buf = X->dp[digidx--]; - bitcnt = (int)DIGIT_BIT; + bitcnt = DIGIT_BIT; } /* grab the next msb from the exponent */ - y = (mp_digit)(buf >> (DIGIT_BIT - 1)) & 1; + y = (buf >> (DIGIT_BIT - 1)) & 1; buf <<= (mp_digit)1; /* if the bit is zero and mode == 0 then we ignore it @@ -2609,7 +2606,7 @@ } /* if the modulus is larger than the value than return */ - if (b > (int) (a->used * DIGIT_BIT)) { + if (b > a->used * DIGIT_BIT) { res = mp_copy (a, c); return res; } @@ -2624,8 +2621,7 @@ c->dp[x] = 0; } /* clear the digit that is not completely outside/inside the modulus */ - c->dp[b / DIGIT_BIT] &= - (mp_digit) ((((mp_digit) 1) << (((mp_digit) b) % DIGIT_BIT)) - ((mp_digit) 1)); + c->dp[b / DIGIT_BIT] &= (1 << ((mp_digit)b % DIGIT_BIT)) - 1; mp_clamp (c); return MP_OKAY; } @@ -2661,7 +2657,7 @@ /* now compute C = A * B mod b */ - for (x = bits - 1; x < (int)DIGIT_BIT; x++) { + for (x = bits - 1; x < DIGIT_BIT; x++) { if ((res = mp_mul_2 (a, a)) != MP_OKAY) { return res; } @@ -2907,14 +2903,14 @@ } } - if (c->alloc < (int)(c->used + b/DIGIT_BIT + 1)) { + if (c->alloc < c->used + b/DIGIT_BIT + 1) { if ((res = mp_grow (c, c->used + b / DIGIT_BIT + 1)) != MP_OKAY) { return res; } } /* shift by as many digits in the bit count */ - if (b >= (int)DIGIT_BIT) { + if (b >= DIGIT_BIT) { if ((res = mp_lshd (c, b / DIGIT_BIT)) != MP_OKAY) { return res; } @@ -3034,6 +3030,45 @@ mp_clear (&t); return res; } + +/* table of first PRIME_SIZE primes */ +static const mp_digit __prime_tab[] = { + 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, + 0x0017, 0x001D, 0x001F, 0x0025, 0x0029, 0x002B, 0x002F, 0x0035, + 0x003B, 0x003D, 0x0043, 0x0047, 0x0049, 0x004F, 0x0053, 0x0059, + 0x0061, 0x0065, 0x0067, 0x006B, 0x006D, 0x0071, 0x007F, 0x0083, + 0x0089, 0x008B, 0x0095, 0x0097, 0x009D, 0x00A3, 0x00A7, 0x00AD, + 0x00B3, 0x00B5, 0x00BF, 0x00C1, 0x00C5, 0x00C7, 0x00D3, 0x00DF, + 0x00E3, 0x00E5, 0x00E9, 0x00EF, 0x00F1, 0x00FB, 0x0101, 0x0107, + 0x010D, 0x010F, 0x0115, 0x0119, 0x011B, 0x0125, 0x0133, 0x0137, + + 0x0139, 0x013D, 0x014B, 0x0151, 0x015B, 0x015D, 0x0161, 0x0167, + 0x016F, 0x0175, 0x017B, 0x017F, 0x0185, 0x018D, 0x0191, 0x0199, + 0x01A3, 0x01A5, 0x01AF, 0x01B1, 0x01B7, 0x01BB, 0x01C1, 0x01C9, + 0x01CD, 0x01CF, 0x01D3, 0x01DF, 0x01E7, 0x01EB, 0x01F3, 0x01F7, + 0x01FD, 0x0209, 0x020B, 0x021D, 0x0223, 0x022D, 0x0233, 0x0239, + 0x023B, 0x0241, 0x024B, 0x0251, 0x0257, 0x0259, 0x025F, 0x0265, + 0x0269, 0x026B, 0x0277, 0x0281, 0x0283, 0x0287, 0x028D, 0x0293, + 0x0295, 0x02A1, 0x02A5, 0x02AB, 0x02B3, 0x02BD, 0x02C5, 0x02CF, + + 0x02D7, 0x02DD, 0x02E3, 0x02E7, 0x02EF, 0x02F5, 0x02F9, 0x0301, + 0x0305, 0x0313, 0x031D, 0x0329, 0x032B, 0x0335, 0x0337, 0x033B, + 0x033D, 0x0347, 0x0355, 0x0359, 0x035B, 0x035F, 0x036D, 0x0371, + 0x0373, 0x0377, 0x038B, 0x038F, 0x0397, 0x03A1, 0x03A9, 0x03AD, + 0x03B3, 0x03B9, 0x03C7, 0x03CB, 0x03D1, 0x03D7, 0x03DF, 0x03E5, + 0x03F1, 0x03F5, 0x03FB, 0x03FD, 0x0407, 0x0409, 0x040F, 0x0419, + 0x041B, 0x0425, 0x0427, 0x042D, 0x043F, 0x0443, 0x0445, 0x0449, + 0x044F, 0x0455, 0x045D, 0x0463, 0x0469, 0x047F, 0x0481, 0x048B, + + 0x0493, 0x049D, 0x04A3, 0x04A9, 0x04B1, 0x04BD, 0x04C1, 0x04C7, + 0x04CD, 0x04CF, 0x04D5, 0x04E1, 0x04EB, 0x04FD, 0x04FF, 0x0503, + 0x0509, 0x050B, 0x0511, 0x0515, 0x0517, 0x051B, 0x0527, 0x0529, + 0x052F, 0x0551, 0x0557, 0x055D, 0x0565, 0x0577, 0x0581, 0x058F, + 0x0593, 0x0595, 0x0599, 0x059F, 0x05A7, 0x05AB, 0x05AD, 0x05B3, + 0x05BF, 0x05C9, 0x05CB, 0x05CF, 0x05D1, 0x05D5, 0x05DB, 0x05E7, + 0x05F3, 0x05FB, 0x0607, 0x060D, 0x0611, 0x0617, 0x061F, 0x0623, + 0x062B, 0x062F, 0x063D, 0x0641, 0x0647, 0x0649, 0x064D, 0x0653 +}; /* determines if an integers is divisible by one * of the first PRIME_SIZE primes or not @@ -3811,44 +3846,6 @@ memset (a->dp, 0, sizeof (mp_digit) * a->alloc); } -static const mp_digit __prime_tab[] = { - 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, - 0x0017, 0x001D, 0x001F, 0x0025, 0x0029, 0x002B, 0x002F, 0x0035, - 0x003B, 0x003D, 0x0043, 0x0047, 0x0049, 0x004F, 0x0053, 0x0059, - 0x0061, 0x0065, 0x0067, 0x006B, 0x006D, 0x0071, 0x007F, 0x0083, - 0x0089, 0x008B, 0x0095, 0x0097, 0x009D, 0x00A3, 0x00A7, 0x00AD, - 0x00B3, 0x00B5, 0x00BF, 0x00C1, 0x00C5, 0x00C7, 0x00D3, 0x00DF, - 0x00E3, 0x00E5, 0x00E9, 0x00EF, 0x00F1, 0x00FB, 0x0101, 0x0107, - 0x010D, 0x010F, 0x0115, 0x0119, 0x011B, 0x0125, 0x0133, 0x0137, - - 0x0139, 0x013D, 0x014B, 0x0151, 0x015B, 0x015D, 0x0161, 0x0167, - 0x016F, 0x0175, 0x017B, 0x017F, 0x0185, 0x018D, 0x0191, 0x0199, - 0x01A3, 0x01A5, 0x01AF, 0x01B1, 0x01B7, 0x01BB, 0x01C1, 0x01C9, - 0x01CD, 0x01CF, 0x01D3, 0x01DF, 0x01E7, 0x01EB, 0x01F3, 0x01F7, - 0x01FD, 0x0209, 0x020B, 0x021D, 0x0223, 0x022D, 0x0233, 0x0239, - 0x023B, 0x0241, 0x024B, 0x0251, 0x0257, 0x0259, 0x025F, 0x0265, - 0x0269, 0x026B, 0x0277, 0x0281, 0x0283, 0x0287, 0x028D, 0x0293, - 0x0295, 0x02A1, 0x02A5, 0x02AB, 0x02B3, 0x02BD, 0x02C5, 0x02CF, - - 0x02D7, 0x02DD, 0x02E3, 0x02E7, 0x02EF, 0x02F5, 0x02F9, 0x0301, - 0x0305, 0x0313, 0x031D, 0x0329, 0x032B, 0x0335, 0x0337, 0x033B, - 0x033D, 0x0347, 0x0355, 0x0359, 0x035B, 0x035F, 0x036D, 0x0371, - 0x0373, 0x0377, 0x038B, 0x038F, 0x0397, 0x03A1, 0x03A9, 0x03AD, - 0x03B3, 0x03B9, 0x03C7, 0x03CB, 0x03D1, 0x03D7, 0x03DF, 0x03E5, - 0x03F1, 0x03F5, 0x03FB, 0x03FD, 0x0407, 0x0409, 0x040F, 0x0419, - 0x041B, 0x0425, 0x0427, 0x042D, 0x043F, 0x0443, 0x0445, 0x0449, - 0x044F, 0x0455, 0x045D, 0x0463, 0x0469, 0x047F, 0x0481, 0x048B, - - 0x0493, 0x049D, 0x04A3, 0x04A9, 0x04B1, 0x04BD, 0x04C1, 0x04C7, - 0x04CD, 0x04CF, 0x04D5, 0x04E1, 0x04EB, 0x04FD, 0x04FF, 0x0503, - 0x0509, 0x050B, 0x0511, 0x0515, 0x0517, 0x051B, 0x0527, 0x0529, - 0x052F, 0x0551, 0x0557, 0x055D, 0x0565, 0x0577, 0x0581, 0x058F, - 0x0593, 0x0595, 0x0599, 0x059F, 0x05A7, 0x05AB, 0x05AD, 0x05B3, - 0x05BF, 0x05C9, 0x05CB, 0x05CF, 0x05D1, 0x05D5, 0x05DB, 0x05E7, - 0x05F3, 0x05FB, 0x0607, 0x060D, 0x0611, 0x0617, 0x061F, 0x0623, - 0x062B, 0x062F, 0x063D, 0x0641, 0x0647, 0x0649, 0x064D, 0x0653 -}; - /* reverse an array, used for radix code */ void bn_reverse (unsigned char *s, int len) @@ -4068,7 +4065,7 @@ } /* read next digit and reset the bitcnt */ buf = X->dp[digidx--]; - bitcnt = (int) DIGIT_BIT; + bitcnt = DIGIT_BIT; } /* grab the next msb from the exponent */ Modified: trunk/reactos/dll/win32/rsaenh/rsaenh.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rsaenh/rsaenh.c?…
============================================================================== --- trunk/reactos/dll/win32/rsaenh/rsaenh.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rsaenh/rsaenh.c [iso-8859-1] Fri Apr 4 09:27:55 2008 @@ -75,8 +75,7 @@ #define RSAENH_MAX_BLOCK_SIZE 24 #define RSAENH_KEYSTATE_IDLE 0 #define RSAENH_KEYSTATE_ENCRYPTING 1 -#define RSAENH_KEYSTATE_DECRYPTING 2 -#define RSAENH_KEYSTATE_MASTERKEY 3 +#define RSAENH_KEYSTATE_MASTERKEY 2 typedef struct _RSAENH_SCHANNEL_INFO { SCHANNEL_ALG saEncAlg; @@ -549,7 +548,7 @@ if (!src) return FALSE; *dst = HeapAlloc(GetProcessHeap(), 0, sizeof(HMAC_INFO)); if (!*dst) return FALSE; - memcpy(*dst, src, sizeof(HMAC_INFO)); + **dst = *src; (*dst)->pbInnerString = NULL; (*dst)->pbOuterString = NULL; if ((*dst)->cbInnerString == 0) (*dst)->cbInnerString = RSAENH_HMAC_DEF_PAD_LEN; @@ -828,8 +827,8 @@ } } - hCryptKey = (HCRYPTKEY)new_object(&handle_table, sizeof(CRYPTKEY), RSAENH_MAGIC_KEY, - destroy_key, (OBJECTHDR**)&pCryptKey); + hCryptKey = new_object(&handle_table, sizeof(CRYPTKEY), RSAENH_MAGIC_KEY, + destroy_key, (OBJECTHDR**)&pCryptKey); if (hCryptKey != (HCRYPTKEY)INVALID_HANDLE_VALUE) { pCryptKey->aiAlgid = aiAlgid; @@ -1095,8 +1094,8 @@ KEYCONTAINER *pKeyContainer; HCRYPTPROV hKeyContainer; - hKeyContainer = (HCRYPTPROV)new_object(&handle_table, sizeof(KEYCONTAINER), RSAENH_MAGIC_CONTAINER, - destroy_key_container, (OBJECTHDR**)&pKeyContainer); + hKeyContainer = new_object(&handle_table, sizeof(KEYCONTAINER), RSAENH_MAGIC_CONTAINER, + destroy_key_container, (OBJECTHDR**)&pKeyContainer); if (hKeyContainer != (HCRYPTPROV)INVALID_HANDLE_VALUE) { lstrcpynA(pKeyContainer->szName, pszContainerName, MAX_PATH); @@ -1670,10 +1669,10 @@ } } - *phHash = (HCRYPTHASH)new_object(&handle_table, sizeof(CRYPTHASH), RSAENH_MAGIC_HASH, - destroy_hash, (OBJECTHDR**)&pCryptHash); + *phHash = new_object(&handle_table, sizeof(CRYPTHASH), RSAENH_MAGIC_HASH, + destroy_hash, (OBJECTHDR**)&pCryptHash); if (!pCryptHash) return FALSE; - + pCryptHash->aiAlgid = Algid; pCryptHash->hKey = hKey; pCryptHash->hProv = hProv; @@ -1834,11 +1833,11 @@ return FALSE; } - *phHash = (HCRYPTHASH)new_object(&handle_table, sizeof(CRYPTHASH), RSAENH_MAGIC_HASH, - destroy_hash, (OBJECTHDR**)&pDestHash); + *phHash = new_object(&handle_table, sizeof(CRYPTHASH), RSAENH_MAGIC_HASH, + destroy_hash, (OBJECTHDR**)&pDestHash); if (*phHash != (HCRYPTHASH)INVALID_HANDLE_VALUE) { - memcpy(pDestHash, pSrcHash, sizeof(CRYPTHASH)); + *pDestHash = *pSrcHash; duplicate_hash_impl(pSrcHash->aiAlgid, &pSrcHash->context, &pDestHash->context); copy_hmac_info(&pDestHash->pHMACInfo, pSrcHash->pHMACInfo); copy_data_blob(&pDestHash->tpPRFParams.blobLabel, &pSrcHash->tpPRFParams.blobLabel); @@ -1890,11 +1889,11 @@ return FALSE; } - *phKey = (HCRYPTKEY)new_object(&handle_table, sizeof(CRYPTKEY), RSAENH_MAGIC_KEY, destroy_key, - (OBJECTHDR**)&pDestKey); + *phKey = new_object(&handle_table, sizeof(CRYPTKEY), RSAENH_MAGIC_KEY, destroy_key, + (OBJECTHDR**)&pDestKey); if (*phKey != (HCRYPTKEY)INVALID_HANDLE_VALUE) { - memcpy(pDestKey, pSrcKey, sizeof(CRYPTKEY)); + *pDestKey = *pSrcKey; copy_data_blob(&pDestKey->siSChannelInfo.blobServerRandom, &pSrcKey->siSChannelInfo.blobServerRandom); copy_data_blob(&pDestKey->siSChannelInfo.blobClientRandom, @@ -2115,9 +2114,9 @@ } if (pCryptKey->dwState == RSAENH_KEYSTATE_IDLE) - pCryptKey->dwState = RSAENH_KEYSTATE_DECRYPTING; - - if (pCryptKey->dwState != RSAENH_KEYSTATE_DECRYPTING) + pCryptKey->dwState = RSAENH_KEYSTATE_ENCRYPTING; + + if (pCryptKey->dwState != RSAENH_KEYSTATE_ENCRYPTING) { SetLastError(NTE_BAD_DATA); return FALSE; @@ -3028,11 +3027,11 @@ DWORD dwTemp; HKEY hKey; - /* This is for dwParam 41, which does not seem to be documented - * on MSDN. IE6 SP1 asks for it in the 'About' dialog, however. + /* This is for dwParam PP_CRYPT_COUNT_KEY_USE. + * IE6 SP1 asks for it in the 'About' dialog. * Returning this BLOB seems to satisfy IE. The marked 0x00 seem * to be 'don't care's. If you know anything more specific about - * provider parameter 41, please report to wine-devel(a)winehq.org */ + * this provider parameter, please report to wine-devel(a)winehq.org */ static CONST BYTE abWTF[96] = { 0xb0, 0x25, 0x63, 0x86, 0x9c, 0xab, 0xb6, 0x37, 0xe8, 0x82, /**/0x00,/**/ 0x72, 0x06, 0xb2, /**/0x00,/**/ 0x3b, @@ -3176,7 +3175,7 @@ sizeof(PROV_ENUMALGS_EX)); } - case 41: /* Undocumented. Asked for by IE About dialog */ + case PP_CRYPT_COUNT_KEY_USE: /* Asked for by IE About dialog */ return copy_param(pbData, pdwDataLen, abWTF, sizeof(abWTF)); default: Modified: trunk/reactos/dll/win32/rsaenh/rsaenh.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rsaenh/rsaenh.rb…
============================================================================== --- trunk/reactos/dll/win32/rsaenh/rsaenh.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rsaenh/rsaenh.rbuild [iso-8859-1] Fri Apr 4 09:27:55 2008 @@ -9,11 +9,6 @@ <define name="__WINESRC__" /> <define name="WINVER">0x600</define> <define name="_WIN32_WINNT">0x600</define> - <library>wine</library> - <library>crypt32</library> - <library>advapi32</library> - <library>kernel32</library> - <library>ntdll</library> <file>aes.c</file> <file>des.c</file> <file>handle.c</file> @@ -26,5 +21,10 @@ <file>rsaenh.c</file> <file>version.rc</file> <file>rsaenh.spec</file> + <library>wine</library> + <library>crypt32</library> + <library>advapi32</library> + <library>kernel32</library> + <library>ntdll</library> </module> </group>
16 years, 7 months
1
0
0
0
← Newer
1
...
31
32
33
34
35
36
37
...
40
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
Results per page:
10
25
50
100
200