mirror of
https://github.com/reactos/reactos
synced 2025-10-06 16:32:42 +02:00
Compare commits
11 Commits
no-threads
...
ReactOS-0.
Author | SHA1 | Date | |
---|---|---|---|
|
ed69f1aa76 | ||
|
4c64beaa1c | ||
|
d984c3d7ec | ||
|
3be86984e5 | ||
|
58e90f8e49 | ||
|
6547c2fe2e | ||
|
243dab19e6 | ||
|
42bb93e225 | ||
|
b531baa019 | ||
|
27013e9f9b | ||
|
b1b5843d7a |
@@ -8,18 +8,18 @@
|
||||
<location>http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.20/win32/en-US/Firefox%20Setup%202.0.0.20.exe</location>
|
||||
</application>
|
||||
<application name="Firefox 3.0">
|
||||
<regname>Mozilla Firefox (3.0.9)</regname>
|
||||
<regname>Mozilla Firefox (3.0.11)</regname>
|
||||
<licence>MPL/GPL/LGPL</licence>
|
||||
<version>3.0.9</version>
|
||||
<version>3.0.11</version>
|
||||
<description>The most popular and one of the best free Web Browsers out there.</description>
|
||||
<location>http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.9/win32/en-US/Firefox%20Setup%203.0.9.exe</location>
|
||||
<location>http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.11/win32/en-US/Firefox%20Setup%203.0.11.exe</location>
|
||||
</application>
|
||||
<application name="Opera">
|
||||
<regname>Opera</regname>
|
||||
<application name="Abyss Web server X1 2.6">
|
||||
<regname>AbyssX1 2.6</regname>
|
||||
<licence>Freeware</licence>
|
||||
<version>9.63</version>
|
||||
<description>The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.</description>
|
||||
<location>http://ftp.opera.com/pub/opera/win/963/en/Opera_963_classic_Setup.exe</location>
|
||||
<version>2.6</version>
|
||||
<description>Abyss Web Server enables you to host your Web sites on your computer. It supports secure SSL/TLS connections (HTTPS) as well as a wide range of Web technologies. It can also run advanced PHP, Perl, Python, ASP, ASP.NET, and Ruby on Rails Web applications, which can be backed by databases such as MySQL, SQLite, MS SQL Server, MS Access, or Oracle</description>
|
||||
<location>http://www.aprelium.com/data/abwsx1.exe</location>
|
||||
</application>
|
||||
<application name="Thunderbird 2.0">
|
||||
<regname>Mozilla Thunderbird (2.0.0.19)</regname>
|
||||
@@ -46,16 +46,6 @@
|
||||
<description>The most popular client for the Internet Relay Chat (IRC)</description>
|
||||
<location>http://mirc.bigchief.dk/mirc635.exe</location>
|
||||
</application>
|
||||
<application name="Samba TNG">
|
||||
<description>This tool allows you to access your Windows shared folders/printers with ReactOS.</description>
|
||||
<location>http://svn.reactos.org/packages/samba-tng.exe</location>
|
||||
</application>
|
||||
<application name="Miranda IM">
|
||||
<regname>Miranda IM</regname>
|
||||
<version>0.7.4</version>
|
||||
<description>Open source multiprotocol instant messaging application - May not work completely.</description>
|
||||
<location>http://ovh.dl.sourceforge.net/sourceforge/miranda/miranda-im-v0.7.4-unicode.exe</location>
|
||||
</application>
|
||||
<application name="Putty">
|
||||
<regname>PuTTY version 0.60</regname>
|
||||
<licence>MIT</licence>
|
||||
@@ -71,17 +61,19 @@
|
||||
<description>Word processor.</description>
|
||||
<location>http://www.abiword.org/downloads/abiword/2.6.4/Windows/abiword-setup-2.6.4.exe</location>
|
||||
</application>
|
||||
<application name="OpenOffice 2.4">
|
||||
<regname>OpenOffice.org 2.4.2</regname>
|
||||
<version>2.4.2</version>
|
||||
<description>THE Open Source Office Suite.</description>
|
||||
<location>http://ftp.plusline.de/OpenOffice/stable/2.4.2/OOo_2.4.2_Win32Intel_install_wJRE_en-US.exe</location>
|
||||
<application name="SoftMaker Office 2008">
|
||||
<regname>SoftMakerOff08</regname>
|
||||
<version>2008</version>
|
||||
<licence>Shareware</licence>
|
||||
<description>SoftMaker Office 2008 comes with the following applications: TextMaker 2008: Reads and writes all Microsoft Word files without a hitch. PlanMaker 2008, the fully Excel-compatible spreadsheet. SoftMaker Presentations 2008, fully compatible with Microsoft PowerPoint.</description>
|
||||
<location>http://www.softmaker.net/down/ofw08ev.exe</location>
|
||||
</application>
|
||||
<application name="OpenOffice 3.0">
|
||||
<regname>OpenOffice.org 3.0.1</regname>
|
||||
<version>3.0.1</version>
|
||||
<description>THE Open Source Office Suite.</description>
|
||||
<location>http://ftp.tu-chemnitz.de/pub/openoffice/stable/3.0.1/OOo_3.0.1_Win32Intel_install_en-US.exe</location>
|
||||
<application name="TextMaker Viewer 2009">
|
||||
<regname>TextMaker Viewer 2009</regname>
|
||||
<version>TMViewer09</version>
|
||||
<licence>Freeware</licence>
|
||||
<description>A light viewer which lets you open, view, and print documents created with Microsoft Word 6.0 to 2007, TextMaker as well as OpenDocument and other common office file formats.</description>
|
||||
<location>http://www.softmaker.net/down/TMViewerSetup.exe</location>
|
||||
</application>
|
||||
</category>
|
||||
<category name="Graphics" icon="3">
|
||||
@@ -91,11 +83,6 @@
|
||||
<description>Viewer for all kinds of graphics/audio files/video files.</description>
|
||||
<location>http://irfanview.tuwien.ac.at/iview423_setup.exe</location>
|
||||
</application>
|
||||
<application name="IrfanView Plugins">
|
||||
<version>4.22</version>
|
||||
<description>Additional Plugins for supporting more file types.</description>
|
||||
<location>http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_422_setup.exe</location>
|
||||
</application>
|
||||
<application name="TuxPaint">
|
||||
<regname>Tux Paint 0.9.19</regname>
|
||||
<version>0.9.19</version>
|
||||
@@ -110,82 +97,42 @@
|
||||
</application>
|
||||
</category>
|
||||
<category name="Libraries" icon="4">
|
||||
<application name="Microsoft XML 3">
|
||||
<regname>msxml3</regname>
|
||||
<version>3.0</version>
|
||||
<description>MSXML3 is needed for some MSI Installers.</description>
|
||||
<location>http://download.microsoft.com/download/8/8/8/888f34b7-4f54-4f06-8dac-fa29b19f33dd/msxml3.msi</location>
|
||||
</application>
|
||||
<application name="OLE Viewer and Microsoft Foundation Classes version 4">
|
||||
<regname>mfc40</regname>
|
||||
<version>4.0</version>
|
||||
<description>MFC 4 is needed by some applications</description>
|
||||
<location>http://download.microsoft.com/download/ole/ole2v/3.5/w351/en-us/ole2v.exe</location>
|
||||
</application>
|
||||
|
||||
<application name="Visual Basic 5 Runtime">
|
||||
<regname>vb5run</regname>
|
||||
<version>5.0</version>
|
||||
<description>Visual Basic 5 Runtime</description>
|
||||
<location>http://download.microsoft.com/download/vb50pro/utility/1/win98/en-us/msvbvm50.exe</location>
|
||||
</application>
|
||||
|
||||
<application name="Visual Basic 6 Runtime">
|
||||
<regname>vb6run</regname>
|
||||
<version>6.0</version>
|
||||
<description>Visual Basic 6 Runtime</description>
|
||||
<location>http://download.microsoft.com/download/vb60pro/install/6/win98me/en-us/vbrun60.exe</location>
|
||||
</application>
|
||||
|
||||
<application name="Visual Studio 6 Runtime">
|
||||
<regname>vc6run</regname>
|
||||
<version>6.0</version>
|
||||
<description>Visual Studio 6 Runtime</description>
|
||||
<location>http://download.microsoft.com/download/vc60pro/update/1/w9xnt4/en-us/vc6redistsetup_enu.exe</location>
|
||||
</application>
|
||||
|
||||
<application name="Visual Studio 2005 Runtime">
|
||||
<regname>vc2005run</regname>
|
||||
<version>7.0</version>
|
||||
<description>Visual Studio 2005 Runtime</description>
|
||||
<location>http://download.microsoft.com/download/d/3/4/d342efa6-3266-4157-a2ec-5174867be706/vcredist_x86.exe</location>
|
||||
</application>
|
||||
|
||||
<application name="Visual Studio 2005 Runtime SP1">
|
||||
<regname>vc2005sp1run</regname>
|
||||
<version>7.1</version>
|
||||
<description>Visual Studio 2005 Runtime SP1</description>
|
||||
<location>http://download.microsoft.com/download/e/1/c/e1c773de-73ba-494a-a5ba-f24906ecf088/vcredist_x86.exe</location>
|
||||
</application>
|
||||
|
||||
<application name="Visual Studio 2008 Runtime">
|
||||
<regname>vc2008run</regname>
|
||||
<version>8.0</version>
|
||||
<description>Visual Studio 2008 Runtime</description>
|
||||
<location>http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe</location>
|
||||
</application>
|
||||
</category>
|
||||
<category name="Multimedia" icon="4">
|
||||
<application name="SMPlayer 0.6.7">
|
||||
<regname>smplayer</regname>
|
||||
<version>0.6.7</version>
|
||||
<description>SMPlayer</description>
|
||||
<location>http://dfn.dl.sourceforge.net/sourceforge/smplayer/smplayer_0.6.7_setup.exe</location>
|
||||
<application name="VLC Media Player 0.8.0">
|
||||
<regname>vlc0.8.0</regname>
|
||||
<licence>GPL</licence>
|
||||
<version>0.8.0</version>
|
||||
<description>VLC media player is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, mp3, ogg, ...) as well as DVDs, VCDs, and various streaming protocols.</description>
|
||||
<location>http://download.videolan.org/pub/videolan/vlc/0.8.0/win32/vlc-0.8.0-win32.exe</location>
|
||||
</application>
|
||||
</category>
|
||||
<category name="Development" icon="5">
|
||||
<application name="ReactOS Build Environment">
|
||||
<regname>ReactOS Build Environment 1.2</regname>
|
||||
<version>1.2</version>
|
||||
<description>Allows you to build the ReactOS Source. For more instructions see ReactOS wiki.</description>
|
||||
<location>http://ovh.dl.sourceforge.net/sourceforge/reactos/RosBE-1.2.exe</location>
|
||||
</application>
|
||||
<application name="MinGW">
|
||||
<regname>MinGW 5.1.3</regname>
|
||||
<version>5.1.3</version>
|
||||
<description>A Port of the GNU toolchain with GCC, GDB, GNU make, etc.</description>
|
||||
<location>http://ovh.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe</location>
|
||||
</application>
|
||||
<application name="SciTE 1.78">
|
||||
<regname>SciTE 1.78</regname>
|
||||
<version>1.78</version>
|
||||
<licence>GPL</licence>
|
||||
<description>SciTE is a SCIntilla based Text Editor. Originally built to demonstrate Scintilla, it has grown to be a generally useful editor with facilities for building and running programs.</description>
|
||||
<location>http://fastbull.dl.sourceforge.net/sourceforge/scintilla/Sc178.exe</location>
|
||||
</application>
|
||||
<application name="FreeBASIC">
|
||||
<regname>FreeBASIC 0.18.4b</regname>
|
||||
<version>0.18.4b</version>
|
||||
@@ -213,10 +160,10 @@
|
||||
<location>http://www.muppetlabs.com/~breadbox/pub/software/tworld/tworld-1.3.0-win32-CCLP2.exe</location>
|
||||
</application>
|
||||
<application name="OpenTTD">
|
||||
<regname>OpenTTD 0.6.0</regname>
|
||||
<version>0.6.0</version>
|
||||
<description>Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon.</description>
|
||||
<location>http://ovh.dl.sourceforge.net/sourceforge/openttd/openttd-0.6.0-win32.exe</location>
|
||||
<regname>OpenTTD 0.7.1</regname>
|
||||
<version>0.7.1</version>
|
||||
<description>Open Source clone of the "Transport Tycoon Deluxe" game engine. You either need a copy of Transport Tycoon or have to manually download and set up the OpenGFX files.</description>
|
||||
<location>http://binaries.openttd.org/releases/0.7.1/openttd-0.7.1-windows-win32.exe</location>
|
||||
</application>
|
||||
<application name="LBreakout2">
|
||||
<regname>LBreakout2 2.4.1</regname>
|
||||
@@ -244,12 +191,6 @@
|
||||
<location>http://ftp.gnu.org/gnu/winboard/winboard-4_2_7b.exe</location>
|
||||
</application>
|
||||
</category>
|
||||
<category name="Science" icon="11">
|
||||
</category>
|
||||
<category name="Edutainment" icon="12">
|
||||
</category>
|
||||
<category name="Engineering" icon="13">
|
||||
</category>
|
||||
<category name="Tools" icon="7">
|
||||
<application name="7-Zip">
|
||||
<regname>7-Zip 4.57</regname>
|
||||
@@ -257,18 +198,6 @@
|
||||
<description>Utility to create and open 7zip, zip, tar, rar and other archive files.</description>
|
||||
<location>http://ovh.dl.sourceforge.net/sourceforge/sevenzip/7z457.exe</location>
|
||||
</application>
|
||||
<application name="uTorrent">
|
||||
<regname>µTorrent</regname>
|
||||
<version>1.8</version>
|
||||
<description>Small and fast BitTorrent Client</description>
|
||||
<location>http://download.utorrent.com/1.8.2/utorrent-1.8.2.upx.exe</location>
|
||||
</application>
|
||||
<application name="Audio Grabber">
|
||||
<regname>Audiograbber 1.83 SE</regname>
|
||||
<version>1.83 SE</version>
|
||||
<description>A very good CD Ripper/Audio File Converter.</description>
|
||||
<location>http://www.audiograbber.de/files/4898276276/agsetup183se.exe</location>
|
||||
</application>
|
||||
</category>
|
||||
<category name="Drivers" icon="8">
|
||||
<application name="AC97 Driver for VirtualBox">
|
||||
|
@@ -52,7 +52,7 @@ BEGIN
|
||||
IDS_XMLERROR_2 "Nie uda<64>o si<73> przetworzy<7A> pliku XML !"
|
||||
IDS_DOWNLOAD_ERROR "Sci<63>ganie pliku nieudane.\nProsz<73> sprawdzi<7A> po<70><6F>czenie z internetem."
|
||||
IDS_VERSION "Wersja: "
|
||||
IDS_LICENCE "Licenccja: "
|
||||
IDS_LICENCE "Licencja: "
|
||||
IDS_MAINTAINER "Opiekun: "
|
||||
IDS_APPS_TITLE "Programy"
|
||||
IDS_CATS_TITLE "Kategorie"
|
||||
|
@@ -62,7 +62,7 @@ BEGIN
|
||||
RTEXT "GPU:", -1, 20, 45, 70, 10
|
||||
RTEXT "Typ DAC:", -1, 20, 55, 70, 10
|
||||
RTEXT "Pami<6D><69>:", -1, 20, 65, 70, 10
|
||||
RTEXT "Bierz<EFBFBD>ca rozdzielczo<7A><6F>:", -1, 20, 75, 70, 10
|
||||
RTEXT "Bie<EFBFBD><EFBFBD>ca rozdzielczo<7A><6F>:", -1, 20, 75, 70, 10
|
||||
RTEXT "Monitor:", -1, 20, 85, 70, 10
|
||||
LTEXT "", IDC_STATIC_ADAPTER_ID, 95, 25, 130, 10
|
||||
LTEXT "", IDC_STATIC_ADAPTER_VENDOR, 95, 35, 130, 10
|
||||
@@ -188,7 +188,7 @@ BEGIN
|
||||
IDS_NETWORK_DIALOG "Sie<69>"
|
||||
IDS_HELP_DIALOG "Pomoc"
|
||||
IDS_FORMAT_MB "%I64uMB RAM"
|
||||
IDS_FORMAT_SWAP "%I64u MB used, %I64u MB available"
|
||||
IDS_FORMAT_SWAP "%I64u MB u<EFBFBD>ytych, %I64u MB dost<EFBFBD>pnych"
|
||||
IDS_FORMAT_UNIPROC "%s (%u CPU)"
|
||||
IDS_FORMAT_MPPROC "%s (%u CPUs)"
|
||||
IDS_VERSION_UNKNOWN "Wersja nieznana"
|
||||
|
@@ -158,7 +158,7 @@ BEGIN
|
||||
IDS_TOOLS_INFO_CMD "winver.exe"
|
||||
|
||||
IDS_TOOLS_REGEDIT_NAME "Edytor rejestru"
|
||||
IDS_TOOLS_REGEDIT_DESCR "Opens the Registry-Editor."
|
||||
IDS_TOOLS_REGEDIT_DESCR "Otwiera edytor rejestru."
|
||||
IDS_TOOLS_REGEDIT_CMD "regedit.exe"
|
||||
|
||||
IDS_TOOLS_SYSDM_NAME "W<>a<EFBFBD>ciwo<77>ci systemu"
|
||||
|
@@ -43,7 +43,7 @@ END
|
||||
|
||||
IDD_ABOUTBOX DIALOGEX 0, 0, 230, 75
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About"
|
||||
CAPTION "O programie"
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
ICON IDI_EVENTVWR,IDC_MYICON,14,9,21,20
|
||||
@@ -54,7 +54,7 @@ END
|
||||
|
||||
IDD_PROGRESSBOX DIALOGEX 0, 0, 230, 40
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER
|
||||
CAPTION "Wait.."
|
||||
CAPTION "Czekaj.."
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
CTEXT "<22>adowanie log<6F>w zdarze<7A>. Prosz<73> czeka<6B> ...",IDC_STATIC,0,15,230,8,SS_NOPREFIX
|
||||
@@ -63,7 +63,7 @@ END
|
||||
IDD_EVENTDETAILDIALOG DIALOGEX 0, 0, 276, 282
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_CONTEXTHELP
|
||||
CAPTION "Event Detail"
|
||||
CAPTION "Szczeg<EFBFBD><EFBFBD>y zdarzenia"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "&Zamknij",IDOK,12,258,50,14
|
||||
@@ -77,13 +77,13 @@ BEGIN
|
||||
LTEXT "Czas:",IDC_STATIC,14,27,36,8
|
||||
LTEXT "Statycznie",IDC_EVENTTIMESTATIC,56,27,72,8
|
||||
LTEXT "&U<>ytkownik:",IDC_STATIC,14,41,36,8
|
||||
LTEXT "Static",IDC_EVENTUSERSTATIC,56,41,72,8
|
||||
LTEXT "&Computer:",IDC_STATIC,14,54,36,8
|
||||
LTEXT "Statycznie",IDC_EVENTUSERSTATIC,56,41,72,8
|
||||
LTEXT "&Komputer:",IDC_STATIC,14,54,36,8
|
||||
LTEXT "Statycznie",IDC_EVENTCOMPUTERSTATIC,56,54,72,8
|
||||
LTEXT "Numer ID:",IDC_STATIC,133,15,36,8
|
||||
LTEXT "Statycznie",IDC_EVENTIDSTATIC,175,15,87,8
|
||||
LTEXT "<22>r<EFBFBD>d<EFBFBD>o:",IDC_STATIC,133,28,36,8
|
||||
LTEXT "Static",IDC_EVENTSOURCESTATIC,175,28,87,8
|
||||
LTEXT "Statycznie",IDC_EVENTSOURCESTATIC,175,28,87,8
|
||||
LTEXT "Typ:",IDC_STATIC,133,42,36,8
|
||||
LTEXT "Statycznie",IDC_EVENTTYPESTATIC,175,42,87,8
|
||||
LTEXT "Kategoria:",IDC_STATIC,133,55,36,8
|
||||
@@ -102,7 +102,7 @@ BEGIN
|
||||
IDC_EVENTLOG_WARNING_TYPE "Ostrze<7A>enie"
|
||||
IDC_EVENTLOG_INFORMATION_TYPE "Informacja"
|
||||
IDC_EVENTLOG_AUDIT_SUCCESS "Udany Audyt"
|
||||
IDC_EVENTLOG_AUDIT_FAILURE "Nieudany Audit"
|
||||
IDC_EVENTLOG_AUDIT_FAILURE "Nieudany Audyt"
|
||||
IDC_EVENTLOG_SUCCESS "Sukces"
|
||||
IDC_EVENTLOG_UNKNOWN_TYPE "Zdarzenie nieznane"
|
||||
END
|
||||
|
@@ -198,19 +198,12 @@ ReLoadGeneralPage(PINFO pInfo)
|
||||
|
||||
|
||||
static VOID
|
||||
GeneralOnInit(HWND hwnd,
|
||||
PINFO pInfo)
|
||||
GeneralOnInit(PINFO pInfo)
|
||||
{
|
||||
SetWindowLongPtrW(hwnd,
|
||||
GWLP_USERDATA,
|
||||
(LONG_PTR)pInfo);
|
||||
|
||||
pInfo->hGeneralPage = hwnd;
|
||||
|
||||
SetWindowPos(pInfo->hGeneralPage,
|
||||
NULL,
|
||||
2,
|
||||
22,
|
||||
13,
|
||||
110,
|
||||
0,
|
||||
0,
|
||||
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
||||
@@ -256,13 +249,14 @@ GeneralDlgProc(HWND hDlg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
PINFO pInfo = (PINFO)GetWindowLongPtrW(hDlg,
|
||||
PINFO pInfo = (PINFO)GetWindowLongPtrW(GetParent(hDlg),
|
||||
GWLP_USERDATA);
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
GeneralOnInit(hDlg, (PINFO)lParam);
|
||||
pInfo->hGeneralPage = hDlg;
|
||||
GeneralOnInit(pInfo);
|
||||
return TRUE;
|
||||
|
||||
case WM_COMMAND:
|
||||
@@ -746,23 +740,16 @@ ReLoadDisplayPage(PINFO pInfo)
|
||||
|
||||
|
||||
static VOID
|
||||
DisplayOnInit(HWND hwnd,
|
||||
PINFO pInfo)
|
||||
DisplayOnInit(PINFO pInfo)
|
||||
{
|
||||
DISPLAY_DEVICEW displayDevice;
|
||||
DWORD iDevNum = 0;
|
||||
BOOL GotDev = FALSE;
|
||||
|
||||
SetWindowLongPtrW(hwnd,
|
||||
GWLP_USERDATA,
|
||||
(LONG_PTR)pInfo);
|
||||
|
||||
pInfo->hDisplayPage = hwnd;
|
||||
|
||||
SetWindowPos(pInfo->hDisplayPage,
|
||||
NULL,
|
||||
2,
|
||||
22,
|
||||
13,
|
||||
110,
|
||||
0,
|
||||
0,
|
||||
SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
|
||||
@@ -836,13 +823,14 @@ DisplayDlgProc(HWND hDlg,
|
||||
WPARAM wParam,
|
||||
LPARAM lParam)
|
||||
{
|
||||
PINFO pInfo = (PINFO)GetWindowLongPtrW(hDlg,
|
||||
PINFO pInfo = (PINFO)GetWindowLongPtrW(GetParent(hDlg),
|
||||
GWLP_USERDATA);
|
||||
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
DisplayOnInit(hDlg, (PINFO)lParam);
|
||||
pInfo->hDisplayPage = hDlg;
|
||||
DisplayOnInit(pInfo);
|
||||
return TRUE;
|
||||
|
||||
case WM_DRAWITEM:
|
||||
@@ -986,11 +974,10 @@ OnMainCreate(HWND hwnd,
|
||||
pInfo->hTab = GetDlgItem(hwnd, IDC_TAB);
|
||||
if (pInfo->hTab)
|
||||
{
|
||||
if (CreateDialogParamW(hInst,
|
||||
MAKEINTRESOURCEW(IDD_GENERAL),
|
||||
pInfo->hTab,
|
||||
GeneralDlgProc,
|
||||
(LPARAM)pInfo))
|
||||
if (CreateDialogW(hInst,
|
||||
MAKEINTRESOURCEW(IDD_GENERAL),
|
||||
hwnd,
|
||||
(DLGPROC)GeneralDlgProc))
|
||||
{
|
||||
WCHAR str[256];
|
||||
ZeroMemory(&item, sizeof(TCITEM));
|
||||
@@ -1001,11 +988,10 @@ OnMainCreate(HWND hwnd,
|
||||
(void)TabCtrl_InsertItem(pInfo->hTab, 0, &item);
|
||||
}
|
||||
|
||||
if (CreateDialogParamW(hInst,
|
||||
MAKEINTRESOURCEW(IDD_DISPLAY),
|
||||
pInfo->hTab,
|
||||
DisplayDlgProc,
|
||||
(LPARAM)pInfo))
|
||||
if (CreateDialogW(hInst,
|
||||
MAKEINTRESOURCEW(IDD_DISPLAY),
|
||||
hwnd,
|
||||
(DLGPROC)DisplayDlgProc))
|
||||
{
|
||||
WCHAR str[256];
|
||||
ZeroMemory(&item, sizeof(TCITEM));
|
||||
|
@@ -64,13 +64,13 @@ BEGIN
|
||||
MENUITEM "Kadrowanie", IDM_IMAGECROP
|
||||
MENUITEM "Odwr<77>cenie kolor<6F>w\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
MENUITEM "Atrybuty...\tCtrl+E", IDM_IMAGEATTRIBUTES
|
||||
MENUITEM "Delete image\tCtrl+Shft+N", IDM_IMAGEDELETEIMAGE
|
||||
MENUITEM "Draw opaque", IDM_IMAGEDRAWOPAQUE
|
||||
MENUITEM "Wyczy<EFBFBD><EFBFBD> obraz\tCtrl+Shft+N", IDM_IMAGEDELETEIMAGE
|
||||
MENUITEM "Rysuj nieprzezroczyste", IDM_IMAGEDRAWOPAQUE
|
||||
END
|
||||
|
||||
POPUP "&Kolory"
|
||||
BEGIN
|
||||
MENUITEM "Edit palette...", IDM_COLORSEDITPALETTE
|
||||
MENUITEM "Edytuj kolory...", IDM_COLORSEDITPALETTE
|
||||
END
|
||||
|
||||
POPUP "&?"
|
||||
@@ -131,9 +131,9 @@ BEGIN
|
||||
LTEXT "Data:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Rozmiar:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Rozdzielczo<7A><6F>:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT6, 70, 5, 60, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT7, 70, 15, 60, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT8, 70, 25, 60, 10
|
||||
LTEXT "Niedost<EFBFBD>pny", IDD_ATTRIBUTESTEXT6, 70, 5, 60, 10
|
||||
LTEXT "Niedost<EFBFBD>pny", IDD_ATTRIBUTESTEXT7, 70, 15, 60, 10
|
||||
LTEXT "Niedost<EFBFBD>pny", IDD_ATTRIBUTESTEXT8, 70, 25, 60, 10
|
||||
GROUPBOX "Jednostki", IDD_ATTRIBUTESGROUP1, 6, 57, 139, 27
|
||||
AUTORADIOBUTTON "Cale", IDD_ATTRIBUTESRB1, 12, 69, 35, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 52, 69, 35, 10
|
||||
@@ -186,7 +186,7 @@ BEGIN
|
||||
IDS_TOOLTIP12, "Krzywa Beziera"
|
||||
IDS_TOOLTIP13, "Prostok<6F>t"
|
||||
IDS_TOOLTIP14, "Polygon"
|
||||
IDS_TOOLTIP15, "Ellipsa"
|
||||
IDS_TOOLTIP15, "Elipsa"
|
||||
IDS_TOOLTIP16, "Zaokr<6B>glony Prostok<6F>t"
|
||||
IDS_OPENFILTER, "Pliki Bitmapy (*.bmp;*.dib)\1*.bmp;*.dib\1Wszystkie pliki (*.*)\1*.*\1"
|
||||
IDS_SAVEFILTER, "Bitmapa 24 bit (*.bmp;*.dib)\1*.bmp;*.dib\1"
|
||||
|
@@ -10,7 +10,8 @@ IDS_USAGE, "
|
||||
-l\t\t\t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\
|
||||
-s\t\t\t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\
|
||||
-r\t\t\t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\
|
||||
-f\t\t\t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\
|
||||
\t\t\t<><74><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>\n\
|
||||
\t\t\t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
|
||||
-f\t\t\t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>\n\
|
||||
\t\t\t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\
|
||||
\t\t\t<><74><EFBFBD><EFBFBD> <20><> <20><> <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>\n\
|
||||
\t\t\t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
|
||||
END
|
||||
|
@@ -10,12 +10,21 @@
|
||||
// Print information about which commandline arguments the program accepts.
|
||||
static void PrintUsage() {
|
||||
LPTSTR lpUsage = NULL;
|
||||
DWORD errLength; // error message length
|
||||
LPTSTR resMsg; // for error message in OEM symbols
|
||||
|
||||
if( AllocAndLoadString( &lpUsage,
|
||||
GetModuleHandle(NULL),
|
||||
IDS_USAGE ) )
|
||||
{
|
||||
_putts( lpUsage );
|
||||
errLength = strlen(lpUsage) + 1;
|
||||
resMsg = (LPTSTR)LocalAlloc(LPTR, errLength * sizeof(TCHAR));
|
||||
CharToOemBuff(lpUsage, resMsg, errLength);
|
||||
|
||||
_putts( resMsg );
|
||||
|
||||
LocalFree(lpUsage);
|
||||
LocalFree(resMsg);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,20 +135,28 @@ static struct ExitOptions ParseCommandLineOptionsToExitOptions(struct CommandLin
|
||||
void DisplayLastError()
|
||||
{
|
||||
int errorCode = GetLastError();
|
||||
LPTSTR lpMsgBuf;
|
||||
LPTSTR lpMsgBuf = NULL;
|
||||
DWORD errLength; // error message length
|
||||
LPTSTR resMsg; // for error message in OEM symbols
|
||||
|
||||
// Display the error message to the user
|
||||
FormatMessage(
|
||||
errLength = FormatMessage(
|
||||
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL,
|
||||
errorCode,
|
||||
LANG_USER_DEFAULT,
|
||||
(LPTSTR) &lpMsgBuf,
|
||||
0,
|
||||
NULL);
|
||||
NULL) + 1;
|
||||
|
||||
_ftprintf(stderr, lpMsgBuf);
|
||||
resMsg = (LPTSTR)LocalAlloc(LPTR, errLength * sizeof(TCHAR));
|
||||
CharToOemBuff(lpMsgBuf, resMsg, errLength);
|
||||
|
||||
_ftprintf(stderr, resMsg);
|
||||
_ftprintf(stderr, _T("Error code: %d\n"), errorCode);
|
||||
|
||||
LocalFree(lpMsgBuf);
|
||||
LocalFree(resMsg);
|
||||
}
|
||||
|
||||
void EnableShutdownPrivileges()
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@@ -20,7 +20,7 @@ HKCU,"Control Panel\Desktop","PaintDesktopVersion",0x00010001,"0"
|
||||
HKCU,"Control Panel\Desktop","HungAppTimeout",0x00000002,"5000"
|
||||
HKCU,"Control Panel\Desktop","SCRNSAVE.EXE",0x00000000,""
|
||||
HKCU,"Control Panel\Desktop","WaitToKillAppTimeout",0x00000002,"20000"
|
||||
HKCU,"Control Panel\Desktop","Wallpaper",0x00000000,""
|
||||
HKCU,"Control Panel\Desktop","Wallpaper",0x00000000,"%SystemRoot%\Angelus_02_ROSWP.bmp"
|
||||
HKCU,"Control Panel\Desktop","FontSmoothing",2,"0"
|
||||
HKCU,"Control Panel\Desktop","DragFullWindows",2,"0"
|
||||
HKCU,"Control Panel\Desktop","SmoothScroll",3,00,00,00,00
|
||||
|
@@ -654,7 +654,18 @@ subsystems\win32\csrss\win32csr\win32csr.dll 1
|
||||
subsystems\ntvdm\ntvdm.exe 1
|
||||
subsystems\win32\win32k\win32k.sys 1
|
||||
|
||||
; Modules
|
||||
; Optional/proprietary files
|
||||
modules\optional\kvmnet.inf 6 optional
|
||||
modules\optional\kvmnet.sys 2 optional
|
||||
modules\optional\mfc42.dll 1 optional
|
||||
modules\optional\Systema.ttf 3 optional
|
||||
modules\optional\vmx_fb.dll 1 optional
|
||||
modules\optional\vmx_mode.dll 1 optional
|
||||
modules\optional\vmx_svga.inf 6 optional
|
||||
modules\optional\vmx_svga.sys 2 optional
|
||||
modules\optional\wine_gecko-0.9.1.cab 4 optional
|
||||
|
||||
; Rosapps
|
||||
modules\rosapps\applications\screensavers\cylfrac\cylfrac.scr 1 optional
|
||||
modules\rosapps\applications\screensavers\matrix\matrix.scr 1 optional
|
||||
modules\rosapps\applications\screensavers\blankscr\scrnsave.scr 1 optional
|
||||
@@ -705,6 +716,7 @@ modules\rosapps\applications\winfile\winfile.exe
|
||||
modules\rosapps\demos\maze\maze.exe 1 optional
|
||||
modules\rosapps\drivers\green\green.sys 2 optional
|
||||
|
||||
; Rostests
|
||||
modules\rostests\rosautotest\rosautotest.exe 1 optional
|
||||
modules\rostests\tests\pseh2\pseh2_test.exe 7 optional
|
||||
modules\rostests\winetests\advapi32\advapi32_winetest.exe 7 optional
|
||||
@@ -760,15 +772,3 @@ modules\rostests\winetests\wlanapi\wlanapi_winetest.exe 7 o
|
||||
modules\rostests\winetests\ws2_32\ws2_32_winetest.exe 7 optional
|
||||
|
||||
modules\wallpaper\Angelus_02_ROSWP.bmp 4 optional
|
||||
|
||||
; Native libraries
|
||||
modules\windows\mfc42.dll 1 optional
|
||||
modules\windows\vmx_fb.dll 1 optional
|
||||
modules\windows\vmx_mode.dll 1 optional
|
||||
modules\windows\vmx_svga.sys 2 optional
|
||||
modules\windows\vmx_svga.inf 6 optional
|
||||
modules\windows\kvmnet.sys 2 optional
|
||||
modules\windows\kvmnet.inf 6 optional
|
||||
|
||||
; Gecko
|
||||
modules\windows\wine_gecko-0.9.1.cab 4 optional
|
||||
|
@@ -148,5 +148,5 @@ BEGIN
|
||||
IDS_PROBELISTTITLE "Poni<6E>sze urz<72>dzenia s<> ju<6A> zainstalowane na tym komputerze"
|
||||
IDS_ADDNEWDEVICE "Dodaj nowe urz<72>dzenie sprz<72>towe"
|
||||
IDS_SELECTWAYTITLE "Kreator mo<6D>e pom<6F>c Tobie zainstalowa<77> inne urz<72>dzenie"
|
||||
IDS_HDTYPESTITLE "From the list below, select the type of hardware you are installing"
|
||||
IDS_HDTYPESTITLE "Wybierz z poni<6E>szej listy typ urz<72>dzenia, kt<6B>re chcesz zainstalowa<EFBFBD>"
|
||||
END
|
||||
|
@@ -111,7 +111,7 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUPWINDOW | WS_VISIBL
|
||||
CAPTION "Zapisz schemat jako..."
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Zapisz bierz<EFBFBD>cy schemat dzwi<77>kowy jako:", -1, 7, 7, 212, 9
|
||||
LTEXT "&Zapisz bie<EFBFBD><EFBFBD>cy schemat dzwi<77>kowy jako:", -1, 7, 7, 212, 9
|
||||
EDITTEXT 8960, 7, 17, 211, 14, ES_AUTOHSCROLL
|
||||
DEFPUSHBUTTON "OK", IDOK, 93, 36, 60, 14
|
||||
PUSHBUTTON "Anuluj", IDCANCEL, 157, 36, 60, 14
|
||||
@@ -191,38 +191,38 @@ CAPTION "Dzwi
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Opis ma by<62> tutaj.", 9506, 8, 4, 212, 24
|
||||
LTEXT "Low", 9473, 65, 31, 14, 8
|
||||
LTEXT "Ma<EFBFBD>a", 9473, 65, 31, 14, 8
|
||||
LTEXT "", 9472, 5, 31, 55, 8
|
||||
CONTROL "Slider1", 9475, "MSCTLS_TRACKBAR32", WS_TABSTOP | 0x00000401, 87, 29, 108, 17
|
||||
LTEXT "High", 9474, 202, 31, 17, 8
|
||||
LTEXT "Low", 9477, 65, 50, 14, 8
|
||||
LTEXT "Du<EFBFBD>a", 9474, 202, 31, 17, 8
|
||||
LTEXT "Ma<EFBFBD>a", 9477, 65, 50, 14, 8
|
||||
LTEXT "", 9476, 5, 50, 55, 8
|
||||
CONTROL "Slider1", 9479, "MSCTLS_TRACKBAR32", WS_TABSTOP | 0x00000401, 87, 48, 108, 17
|
||||
LTEXT "High", 9478, 202, 50, 17, 8
|
||||
LTEXT "Low", 9481, 65, 69, 14, 8
|
||||
LTEXT "Du<EFBFBD>a", 9478, 202, 50, 17, 8
|
||||
LTEXT "Ma<EFBFBD>a", 9481, 65, 69, 14, 8
|
||||
LTEXT "", 9480, 5, 69, 55, 8
|
||||
CONTROL "Slider1", 9483, "MSCTLS_TRACKBAR32", WS_TABSTOP | 0x00000401, 87, 67, 108, 17
|
||||
LTEXT "High", 9482, 202, 69, 17, 8
|
||||
LTEXT "Low", 9485, 65, 88, 14, 8
|
||||
LTEXT "Du<EFBFBD>a", 9482, 202, 69, 17, 8
|
||||
LTEXT "Ma<EFBFBD>a", 9485, 65, 88, 14, 8
|
||||
LTEXT "", 9484, 5, 88, 55, 8
|
||||
CONTROL "Slider1", 9487, "MSCTLS_TRACKBAR32", WS_TABSTOP | 0x00000401, 87, 86, 108, 17
|
||||
LTEXT "High", 9486, 202, 88, 17, 8
|
||||
LTEXT "Low", 9489, 65, 107, 14, 8
|
||||
LTEXT "Du<EFBFBD>a", 9486, 202, 88, 17, 8
|
||||
LTEXT "Ma<EFBFBD>a", 9489, 65, 107, 14, 8
|
||||
LTEXT "", 9488, 5, 107, 55, 8
|
||||
CONTROL "Slider1", 9491, "MSCTLS_TRACKBAR32", WS_TABSTOP | 0x00000401, 87, 105, 108, 17
|
||||
LTEXT "High", 9490, 202, 107, 17, 8
|
||||
LTEXT "Low", 9493, 65, 126, 14, 8
|
||||
LTEXT "Du<EFBFBD>a", 9490, 202, 107, 17, 8
|
||||
LTEXT "Ma<EFBFBD>a", 9493, 65, 126, 14, 8
|
||||
LTEXT "", 9492, 5, 126, 55, 8
|
||||
CONTROL "Slider1", 9495, "MSCTLS_TRACKBAR32", WS_TABSTOP | 0x00000401, 87, 124, 108, 17
|
||||
LTEXT "High", 9494, 202, 126, 17, 8
|
||||
LTEXT "Low", 9497, 65, 145, 14, 8
|
||||
LTEXT "Du<EFBFBD>a", 9494, 202, 126, 17, 8
|
||||
LTEXT "Ma<EFBFBD>a", 9497, 65, 145, 14, 8
|
||||
LTEXT "", 9496, 5, 145, 55, 8
|
||||
CONTROL "Slider1", 9499, "MSCTLS_TRACKBAR32", WS_TABSTOP | 0x00000401, 87, 143, 108, 17
|
||||
LTEXT "High", 9498, 202, 145, 17, 8
|
||||
LTEXT "Low", 9501, 65, 164, 14, 8
|
||||
LTEXT "Du<EFBFBD>a", 9498, 202, 145, 17, 8
|
||||
LTEXT "Ma<EFBFBD>a", 9501, 65, 164, 14, 8
|
||||
LTEXT "", 9500, 5, 164, 55, 8
|
||||
CONTROL "Slider1", 9503, "MSCTLS_TRACKBAR32", WS_TABSTOP | 0x00000401, 87, 162, 108, 17
|
||||
LTEXT "High", 9502, 202, 164, 17, 8
|
||||
LTEXT "Du<EFBFBD>a", 9502, 202, 164, 17, 8
|
||||
AUTOCHECKBOX "&Po<50><6F>cz wszystkie suwaki", 9504, 5, 185, 216, 9
|
||||
PUSHBUTTON "Odtw<74>rz &domy<6D>lne", 9505, 110, 199, 110, 14
|
||||
END
|
||||
@@ -258,12 +258,12 @@ BEGIN
|
||||
5835 "Wywo<77>anie Menu"
|
||||
5836 "Minimalizuj"
|
||||
5837 "Powiadomienie o nowej poczcie"
|
||||
5838 "Start Navigation"
|
||||
5838 "Rozpocz<EFBFBD>cie nawigacji"
|
||||
5839 "Uruchomienie programu"
|
||||
5840 "Zako<6B>czenie programu"
|
||||
5841 "Restore Down"
|
||||
5842 "Restore Up"
|
||||
5843 "Asterisk"
|
||||
5841 "Przywr<EFBFBD>cenie w d<><64>"
|
||||
5842 "Przywr<EFBFBD>cenie w g<>r<EFBFBD>"
|
||||
5843 "Gwiazdka"
|
||||
5844 "D<>wi<77>k domy<6D>lny"
|
||||
5845 "Wykrzyknik"
|
||||
5846 "Zamkni<6E>cie ReactOS"
|
||||
@@ -271,7 +271,7 @@ BEGIN
|
||||
5848 "Powiadomienie systemowe"
|
||||
5849 "Znak zapytania"
|
||||
5850 "Uruchomienie ReactOS"
|
||||
5851 "Start Menu"
|
||||
5851 "Menu Start"
|
||||
5852 "Wylogowanie z ReactOS"
|
||||
5853 "Logowanie do ReactOS"
|
||||
END
|
||||
|
@@ -4162,7 +4162,9 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
|
||||
ME_SendRequestResize(editor, TRUE);
|
||||
return 0;
|
||||
case WM_SETREDRAW:
|
||||
goto do_default;
|
||||
if (wParam)
|
||||
ME_RewrapRepaint(editor);
|
||||
return 0;
|
||||
case WM_SIZE:
|
||||
{
|
||||
RECT clientRect;
|
||||
|
@@ -756,6 +756,7 @@ CreateShortcuts(VOID)
|
||||
|
||||
/* Create desktop shortcuts */
|
||||
CreateShortcut(CSIDL_DESKTOP, NULL, IDS_SHORT_CMD, _T("%SystemRoot%\\system32\\cmd.exe"), IDS_CMT_CMD, TRUE);
|
||||
CreateShortcut(CSIDL_DESKTOP, NULL, IDS_SHORT_DOWNLOADER, _T("%SystemRoot%\\system32\\downloader.exe"), IDS_CMT_DOWNLOADER, TRUE);
|
||||
|
||||
/* Create program startmenu shortcuts */
|
||||
CreateShortcut(CSIDL_PROGRAMS, NULL, IDS_SHORT_EXPLORER, _T("%SystemRoot%\\explorer.exe"), IDS_CMT_EXPLORER, TRUE);
|
||||
|
@@ -222,7 +222,7 @@ BEGIN
|
||||
IDS_CMT_RDESKTOP "Uruchom Zdalny pulpit"
|
||||
IDS_CMT_EVENTVIEW "Uruchom Podgl<67>d Zdarze<7A>"
|
||||
IDS_CMT_MSCONFIG "Uruchom Narz<72>dzie konfiguracji systemu"
|
||||
IDS_CMT_PAINT "Launch Paint"
|
||||
IDS_CMT_PAINT "Uruchom Paint"
|
||||
END
|
||||
|
||||
|
||||
|
@@ -379,6 +379,9 @@ CreateEnvironmentBlock (LPVOID *lpEnvironment,
|
||||
L"USERPROFILE",
|
||||
Buffer,
|
||||
FALSE);
|
||||
|
||||
wcscat(Buffer, L"\\Application Data");
|
||||
SetUserEnvironmentVariable(lpEnvironment, L"APPDATA", Buffer, FALSE);
|
||||
}
|
||||
|
||||
/* FIXME: Set 'USERDOMAIN' variable */
|
||||
|
@@ -23,10 +23,6 @@
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#if defined(__MINGW32__) || defined (_MSC_VER)
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -52,6 +48,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(wininet);
|
||||
* Cookies are currently memory only.
|
||||
* Cookies are NOT THREAD SAFE
|
||||
* Cookies could use A LOT OF MEMORY. We need some kind of memory management here!
|
||||
* Cookies should care about the expiry time
|
||||
*/
|
||||
|
||||
typedef struct _cookie_domain cookie_domain;
|
||||
@@ -65,7 +62,7 @@ struct _cookie
|
||||
|
||||
LPWSTR lpCookieName;
|
||||
LPWSTR lpCookieData;
|
||||
FILETIME expiry;
|
||||
time_t expiry; /* FIXME: not used */
|
||||
};
|
||||
|
||||
struct _cookie_domain
|
||||
@@ -79,7 +76,7 @@ struct _cookie_domain
|
||||
|
||||
static struct list domain_list = LIST_INIT(domain_list);
|
||||
|
||||
static cookie *COOKIE_addCookie(cookie_domain *domain, LPCWSTR name, LPCWSTR data, FILETIME expiry);
|
||||
static cookie *COOKIE_addCookie(cookie_domain *domain, LPCWSTR name, LPCWSTR data);
|
||||
static cookie *COOKIE_findCookie(cookie_domain *domain, LPCWSTR lpszCookieName);
|
||||
static void COOKIE_deleteCookie(cookie *deadCookie, BOOL deleteDomain);
|
||||
static cookie_domain *COOKIE_addDomain(LPCWSTR domain, LPCWSTR path);
|
||||
@@ -87,14 +84,13 @@ static void COOKIE_deleteDomain(cookie_domain *deadDomain);
|
||||
|
||||
|
||||
/* adds a cookie to the domain */
|
||||
static cookie *COOKIE_addCookie(cookie_domain *domain, LPCWSTR name, LPCWSTR data, FILETIME expiry)
|
||||
static cookie *COOKIE_addCookie(cookie_domain *domain, LPCWSTR name, LPCWSTR data)
|
||||
{
|
||||
cookie *newCookie = HeapAlloc(GetProcessHeap(), 0, sizeof(cookie));
|
||||
|
||||
list_init(&newCookie->entry);
|
||||
newCookie->lpCookieName = NULL;
|
||||
newCookie->lpCookieData = NULL;
|
||||
newCookie->expiry = expiry;
|
||||
|
||||
if (name)
|
||||
{
|
||||
@@ -181,7 +177,6 @@ static cookie_domain *COOKIE_addDomain(LPCWSTR domain, LPCWSTR path)
|
||||
static BOOL COOKIE_crackUrlSimple(LPCWSTR lpszUrl, LPWSTR hostName, int hostNameLen, LPWSTR path, int pathLen)
|
||||
{
|
||||
URL_COMPONENTSW UrlComponents;
|
||||
BOOL rc;
|
||||
|
||||
UrlComponents.lpszExtraInfo = NULL;
|
||||
UrlComponents.lpszPassword = NULL;
|
||||
@@ -196,22 +191,7 @@ static BOOL COOKIE_crackUrlSimple(LPCWSTR lpszUrl, LPWSTR hostName, int hostName
|
||||
UrlComponents.dwHostNameLength = hostNameLen;
|
||||
UrlComponents.dwUrlPathLength = pathLen;
|
||||
|
||||
rc = InternetCrackUrlW(lpszUrl, 0, 0, &UrlComponents);
|
||||
|
||||
/* discard the webpage off the end of the path */
|
||||
if (pathLen > 0 && path[pathLen-1] != '/')
|
||||
{
|
||||
LPWSTR ptr;
|
||||
ptr = strrchrW(path,'/');
|
||||
if (ptr)
|
||||
*(++ptr) = 0;
|
||||
else
|
||||
{
|
||||
path[0] = '/';
|
||||
path[1] = 0;
|
||||
}
|
||||
}
|
||||
return rc;
|
||||
return InternetCrackUrlW(lpszUrl, 0, 0, &UrlComponents);
|
||||
}
|
||||
|
||||
/* match a domain. domain must match if the domain is not NULL. path must match if the path is not NULL */
|
||||
@@ -235,22 +215,11 @@ static BOOL COOKIE_matchDomain(LPCWSTR lpszCookieDomain, LPCWSTR lpszCookiePath,
|
||||
}
|
||||
if (lpszCookiePath)
|
||||
{
|
||||
INT len;
|
||||
TRACE("comparing paths: %s with %s\n", debugstr_w(lpszCookiePath), debugstr_w(searchDomain->lpCookiePath));
|
||||
/* paths match at the beginning. so a path of /foo would match
|
||||
* /foobar and /foo/bar
|
||||
*/
|
||||
if (!searchDomain->lpCookiePath)
|
||||
return FALSE;
|
||||
if (allow_partial)
|
||||
{
|
||||
len = lstrlenW(searchDomain->lpCookiePath);
|
||||
if (strncmpiW(searchDomain->lpCookiePath, lpszCookiePath, len)!=0)
|
||||
return FALSE;
|
||||
}
|
||||
else if (strcmpW(lpszCookiePath, searchDomain->lpCookiePath))
|
||||
if (strcmpW(lpszCookiePath, searchDomain->lpCookiePath))
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@@ -293,7 +262,6 @@ BOOL WINAPI InternetGetCookieW(LPCWSTR lpszUrl, LPCWSTR lpszCookieName,
|
||||
struct list * cursor;
|
||||
unsigned int cnt = 0, domain_count = 0, cookie_count = 0;
|
||||
WCHAR hostName[2048], path[2048];
|
||||
FILETIME tm;
|
||||
|
||||
TRACE("(%s, %s, %p, %p)\n", debugstr_w(lpszUrl),debugstr_w(lpszCookieName),
|
||||
lpCookieData, lpdwSize);
|
||||
@@ -308,12 +276,10 @@ BOOL WINAPI InternetGetCookieW(LPCWSTR lpszUrl, LPCWSTR lpszCookieName,
|
||||
ret = COOKIE_crackUrlSimple(lpszUrl, hostName, sizeof(hostName)/sizeof(hostName[0]), path, sizeof(path)/sizeof(path[0]));
|
||||
if (!ret || !hostName[0]) return FALSE;
|
||||
|
||||
GetSystemTimeAsFileTime(&tm);
|
||||
|
||||
LIST_FOR_EACH(cursor, &domain_list)
|
||||
{
|
||||
cookie_domain *cookiesDomain = LIST_ENTRY(cursor, cookie_domain, entry);
|
||||
if (COOKIE_matchDomain(hostName, path, cookiesDomain, TRUE))
|
||||
if (COOKIE_matchDomain(hostName, NULL /* FIXME: path */, cookiesDomain, TRUE))
|
||||
{
|
||||
struct list * cursor;
|
||||
domain_count++;
|
||||
@@ -322,14 +288,6 @@ BOOL WINAPI InternetGetCookieW(LPCWSTR lpszUrl, LPCWSTR lpszCookieName,
|
||||
LIST_FOR_EACH(cursor, &cookiesDomain->cookie_list)
|
||||
{
|
||||
cookie *thisCookie = LIST_ENTRY(cursor, cookie, entry);
|
||||
/* check for expiry */
|
||||
if ((thisCookie->expiry.dwLowDateTime != 0 || thisCookie->expiry.dwHighDateTime != 0) && CompareFileTime(&tm,&thisCookie->expiry) > 0)
|
||||
{
|
||||
TRACE("Found expired cookie. deleting\n");
|
||||
COOKIE_deleteCookie(thisCookie, FALSE);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (lpCookieData == NULL) /* return the size of the buffer required to lpdwSize */
|
||||
{
|
||||
unsigned int len;
|
||||
@@ -447,116 +405,27 @@ static BOOL set_cookie(LPCWSTR domain, LPCWSTR path, LPCWSTR cookie_name, LPCWST
|
||||
cookie_domain *thisCookieDomain = NULL;
|
||||
cookie *thisCookie;
|
||||
struct list *cursor;
|
||||
LPWSTR data, value;
|
||||
WCHAR *ptr;
|
||||
FILETIME expiry;
|
||||
BOOL expired = FALSE;
|
||||
|
||||
value = data = HeapAlloc(GetProcessHeap(), 0, (strlenW(cookie_data) + 1) * sizeof(WCHAR));
|
||||
strcpyW(data,cookie_data);
|
||||
memset(&expiry,0,sizeof(expiry));
|
||||
|
||||
/* lots of information can be parsed out of the cookie value */
|
||||
|
||||
ptr = data;
|
||||
for (;;)
|
||||
{
|
||||
static const WCHAR szDomain[] = {'d','o','m','a','i','n','=',0};
|
||||
static const WCHAR szPath[] = {'p','a','t','h','=',0};
|
||||
static const WCHAR szExpires[] = {'e','x','p','i','r','e','s','=',0};
|
||||
static const WCHAR szSecure[] = {'s','e','c','u','r','e',0};
|
||||
static const WCHAR szHttpOnly[] = {'h','t','t','p','o','n','l','y',0};
|
||||
|
||||
if (!(ptr = strchrW(ptr,';'))) break;
|
||||
*ptr++ = 0;
|
||||
|
||||
value = HeapAlloc(GetProcessHeap(), 0, (ptr - data) * sizeof(WCHAR));
|
||||
strcpyW(value, data);
|
||||
|
||||
while (*ptr == ' ') ptr++; /* whitespace */
|
||||
|
||||
if (strncmpiW(ptr, szDomain, 7) == 0)
|
||||
{
|
||||
ptr+=strlenW(szDomain);
|
||||
domain = ptr;
|
||||
TRACE("Parsing new domain %s\n",debugstr_w(domain));
|
||||
}
|
||||
else if (strncmpiW(ptr, szPath, 5) == 0)
|
||||
{
|
||||
ptr+=strlenW(szPath);
|
||||
path = ptr;
|
||||
TRACE("Parsing new path %s\n",debugstr_w(path));
|
||||
}
|
||||
else if (strncmpiW(ptr, szExpires, 8) == 0)
|
||||
{
|
||||
FILETIME ft;
|
||||
SYSTEMTIME st;
|
||||
FIXME("persistent cookies not handled (%s)\n",debugstr_w(ptr));
|
||||
ptr+=strlenW(szExpires);
|
||||
if (InternetTimeToSystemTimeW(ptr, &st, 0))
|
||||
{
|
||||
SystemTimeToFileTime(&st, &expiry);
|
||||
GetSystemTimeAsFileTime(&ft);
|
||||
|
||||
if (CompareFileTime(&ft,&expiry) > 0)
|
||||
{
|
||||
TRACE("Cookie already expired.\n");
|
||||
expired = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (strncmpiW(ptr, szSecure, 6) == 0)
|
||||
{
|
||||
FIXME("secure not handled (%s)\n",debugstr_w(ptr));
|
||||
ptr += strlenW(szSecure);
|
||||
}
|
||||
else if (strncmpiW(ptr, szHttpOnly, 8) == 0)
|
||||
{
|
||||
FIXME("httponly not handled (%s)\n",debugstr_w(ptr));
|
||||
ptr += strlenW(szHttpOnly);
|
||||
}
|
||||
else if (*ptr)
|
||||
{
|
||||
FIXME("Unknown additional option %s\n",debugstr_w(ptr));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
LIST_FOR_EACH(cursor, &domain_list)
|
||||
{
|
||||
thisCookieDomain = LIST_ENTRY(cursor, cookie_domain, entry);
|
||||
if (COOKIE_matchDomain(domain, path, thisCookieDomain, FALSE))
|
||||
if (COOKIE_matchDomain(domain, NULL /* FIXME: path */, thisCookieDomain, FALSE))
|
||||
break;
|
||||
thisCookieDomain = NULL;
|
||||
}
|
||||
|
||||
if (!thisCookieDomain)
|
||||
{
|
||||
if (!expired)
|
||||
thisCookieDomain = COOKIE_addDomain(domain, path);
|
||||
else
|
||||
{
|
||||
HeapFree(GetProcessHeap(),0,data);
|
||||
if (value != data) HeapFree(GetProcessHeap(), 0, value);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
thisCookieDomain = COOKIE_addDomain(domain, path);
|
||||
|
||||
if ((thisCookie = COOKIE_findCookie(thisCookieDomain, cookie_name)))
|
||||
COOKIE_deleteCookie(thisCookie, FALSE);
|
||||
|
||||
TRACE("setting cookie %s=%s for domain %s path %s\n", debugstr_w(cookie_name),
|
||||
debugstr_w(value), debugstr_w(thisCookieDomain->lpCookieDomain),debugstr_w(thisCookieDomain->lpCookiePath));
|
||||
TRACE("setting cookie %s=%s for domain %s\n", debugstr_w(cookie_name),
|
||||
debugstr_w(cookie_data), debugstr_w(thisCookieDomain->lpCookieDomain));
|
||||
|
||||
if (!expired && !COOKIE_addCookie(thisCookieDomain, cookie_name, value, expiry))
|
||||
{
|
||||
HeapFree(GetProcessHeap(),0,data);
|
||||
if (value != data) HeapFree(GetProcessHeap(), 0, value);
|
||||
if (!COOKIE_addCookie(thisCookieDomain, cookie_name, cookie_data))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
HeapFree(GetProcessHeap(),0,data);
|
||||
if (value != data) HeapFree(GetProcessHeap(), 0, value);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -606,7 +475,7 @@ BOOL WINAPI InternetSetCookieW(LPCWSTR lpszUrl, LPCWSTR lpszCookieName,
|
||||
* the cookie data in the form of name[=data].
|
||||
*/
|
||||
if (!(data = strchrW(cookie, '='))) data = cookie + len;
|
||||
else *data++ = 0;
|
||||
else data++;
|
||||
|
||||
ret = set_cookie(hostName, path, cookie, data);
|
||||
|
||||
@@ -823,28 +692,3 @@ BOOL WINAPI InternetSetPerSiteCookieDecisionW( LPCWSTR pchHostName, DWORD dwDeci
|
||||
FIXME("(%s, 0x%08x) stub\n", debugstr_w(pchHostName), dwDecision);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* IsDomainLegalCookieDomainW (WININET.@)
|
||||
*/
|
||||
BOOL WINAPI IsDomainLegalCookieDomainW( LPCWSTR s1, LPCWSTR s2 )
|
||||
{
|
||||
const WCHAR *p;
|
||||
|
||||
FIXME("(%s, %s)\n", debugstr_w(s1), debugstr_w(s2));
|
||||
|
||||
if (!s1 || !s2)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
if (s1[0] == '.' || !s1[0] || s2[0] == '.' || !s2[0])
|
||||
{
|
||||
SetLastError(ERROR_INVALID_NAME);
|
||||
return FALSE;
|
||||
}
|
||||
if (!(p = strchrW(s2, '.'))) return FALSE;
|
||||
if (strchrW(p + 1, '.') && !strcmpW(p + 1, s1)) return TRUE;
|
||||
else if (!strcmpW(s1, s2)) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
@@ -21,10 +21,6 @@
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#if defined(__MINGW32__) || defined (_MSC_VER)
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "windef.h"
|
||||
|
@@ -30,10 +30,6 @@
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#if defined(__MINGW32__) || defined (_MSC_VER)
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
@@ -46,9 +42,6 @@
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_IOCTL_H
|
||||
# include <sys/ioctl.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
#include <assert.h>
|
||||
|
||||
@@ -97,7 +90,7 @@ typedef struct
|
||||
BOOL bIsDirectory;
|
||||
LPWSTR lpszName;
|
||||
DWORD nSize;
|
||||
SYSTEMTIME tmLastModified;
|
||||
struct tm tmLastModified;
|
||||
unsigned short permissions;
|
||||
} FILEPROPERTIESW, *LPFILEPROPERTIESW;
|
||||
|
||||
@@ -206,6 +199,8 @@ static BOOL FTP_FtpGetCurrentDirectoryW(LPWININETFTPSESSIONW lpwfs, LPWSTR lpszC
|
||||
static BOOL FTP_FtpRenameFileW(LPWININETFTPSESSIONW lpwfs, LPCWSTR lpszSrc, LPCWSTR lpszDest);
|
||||
static BOOL FTP_FtpRemoveDirectoryW(LPWININETFTPSESSIONW lpwfs, LPCWSTR lpszDirectory);
|
||||
static BOOL FTP_FtpDeleteFileW(LPWININETFTPSESSIONW lpwfs, LPCWSTR lpszFileName);
|
||||
static HINTERNET FTP_FtpOpenFileW(LPWININETFTPSESSIONW lpwfs, LPCWSTR lpszFileName,
|
||||
DWORD fdwAccess, DWORD dwFlags, DWORD_PTR dwContext);
|
||||
static BOOL FTP_FtpGetFileW(LPWININETFTPSESSIONW lpwfs, LPCWSTR lpszRemoteFile, LPCWSTR lpszNewFile,
|
||||
BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags,
|
||||
DWORD_PTR dwContext);
|
||||
@@ -859,13 +854,13 @@ lend:
|
||||
|
||||
if (hFindNext)
|
||||
{
|
||||
iar.dwResult = (DWORD_PTR)hFindNext;
|
||||
iar.dwResult = (DWORD)hFindNext;
|
||||
iar.dwError = ERROR_SUCCESS;
|
||||
SendAsyncCallback(&lpwfs->hdr, lpwfs->hdr.dwContext, INTERNET_STATUS_HANDLE_CREATED,
|
||||
&iar, sizeof(INTERNET_ASYNC_RESULT));
|
||||
}
|
||||
|
||||
iar.dwResult = (DWORD_PTR)hFindNext;
|
||||
iar.dwResult = (DWORD)hFindNext;
|
||||
iar.dwError = hFindNext ? ERROR_SUCCESS : INTERNET_GetLastError();
|
||||
SendAsyncCallback(&lpwfs->hdr, lpwfs->hdr.dwContext, INTERNET_STATUS_REQUEST_COMPLETE,
|
||||
&iar, sizeof(INTERNET_ASYNC_RESULT));
|
||||
@@ -1076,6 +1071,118 @@ lend:
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* FtpOpenFileA (WININET.@)
|
||||
*
|
||||
* Open a remote file for writing or reading
|
||||
*
|
||||
* RETURNS
|
||||
* HINTERNET handle on success
|
||||
* NULL on failure
|
||||
*
|
||||
*/
|
||||
HINTERNET WINAPI FtpOpenFileA(HINTERNET hFtpSession,
|
||||
LPCSTR lpszFileName, DWORD fdwAccess, DWORD dwFlags,
|
||||
DWORD_PTR dwContext)
|
||||
{
|
||||
LPWSTR lpwzFileName;
|
||||
HINTERNET ret;
|
||||
|
||||
lpwzFileName = lpszFileName?WININET_strdup_AtoW(lpszFileName):NULL;
|
||||
ret = FtpOpenFileW(hFtpSession, lpwzFileName, fdwAccess, dwFlags, dwContext);
|
||||
HeapFree(GetProcessHeap(), 0, lpwzFileName);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static void AsyncFtpOpenFileProc(WORKREQUEST *workRequest)
|
||||
{
|
||||
struct WORKREQ_FTPOPENFILEW const *req = &workRequest->u.FtpOpenFileW;
|
||||
LPWININETFTPSESSIONW lpwfs = (LPWININETFTPSESSIONW) workRequest->hdr;
|
||||
|
||||
TRACE("%p\n", lpwfs);
|
||||
|
||||
FTP_FtpOpenFileW(lpwfs, req->lpszFilename,
|
||||
req->dwAccess, req->dwFlags, req->dwContext);
|
||||
HeapFree(GetProcessHeap(), 0, req->lpszFilename);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* FtpOpenFileW (WININET.@)
|
||||
*
|
||||
* Open a remote file for writing or reading
|
||||
*
|
||||
* RETURNS
|
||||
* HINTERNET handle on success
|
||||
* NULL on failure
|
||||
*
|
||||
*/
|
||||
HINTERNET WINAPI FtpOpenFileW(HINTERNET hFtpSession,
|
||||
LPCWSTR lpszFileName, DWORD fdwAccess, DWORD dwFlags,
|
||||
DWORD_PTR dwContext)
|
||||
{
|
||||
LPWININETFTPSESSIONW lpwfs;
|
||||
LPWININETAPPINFOW hIC = NULL;
|
||||
HINTERNET r = NULL;
|
||||
|
||||
TRACE("(%p,%s,0x%08x,0x%08x,0x%08lx)\n", hFtpSession,
|
||||
debugstr_w(lpszFileName), fdwAccess, dwFlags, dwContext);
|
||||
|
||||
lpwfs = (LPWININETFTPSESSIONW) WININET_GetObject( hFtpSession );
|
||||
if (!lpwfs)
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (WH_HFTPSESSION != lpwfs->hdr.htype)
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
|
||||
goto lend;
|
||||
}
|
||||
|
||||
if ((!lpszFileName) ||
|
||||
((fdwAccess != GENERIC_READ) && (fdwAccess != GENERIC_WRITE)) ||
|
||||
((dwFlags & FTP_CONDITION_MASK) > FTP_TRANSFER_TYPE_BINARY))
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INVALID_PARAMETER);
|
||||
goto lend;
|
||||
}
|
||||
|
||||
if (lpwfs->download_in_progress != NULL)
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_FTP_TRANSFER_IN_PROGRESS);
|
||||
goto lend;
|
||||
}
|
||||
|
||||
hIC = lpwfs->lpAppInfo;
|
||||
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
|
||||
{
|
||||
WORKREQUEST workRequest;
|
||||
struct WORKREQ_FTPOPENFILEW *req;
|
||||
|
||||
workRequest.asyncproc = AsyncFtpOpenFileProc;
|
||||
workRequest.hdr = WININET_AddRef( &lpwfs->hdr );
|
||||
req = &workRequest.u.FtpOpenFileW;
|
||||
req->lpszFilename = WININET_strdupW(lpszFileName);
|
||||
req->dwAccess = fdwAccess;
|
||||
req->dwFlags = dwFlags;
|
||||
req->dwContext = dwContext;
|
||||
|
||||
INTERNET_AsyncCall(&workRequest);
|
||||
r = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
r = FTP_FtpOpenFileW(lpwfs, lpszFileName, fdwAccess, dwFlags, dwContext);
|
||||
}
|
||||
|
||||
lend:
|
||||
WININET_Release( &lpwfs->hdr );
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* FTPFILE_Destroy(internal)
|
||||
@@ -1092,6 +1199,8 @@ static void FTPFILE_Destroy(WININETHANDLEHEADER *hdr)
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
WININET_Release(&lpwh->lpFtpSession->hdr);
|
||||
|
||||
if (!lpwh->session_deleted)
|
||||
lpwfs->download_in_progress = NULL;
|
||||
|
||||
@@ -1101,8 +1210,6 @@ static void FTPFILE_Destroy(WININETHANDLEHEADER *hdr)
|
||||
nResCode = FTP_ReceiveResponse(lpwfs, lpwfs->hdr.dwContext);
|
||||
if (nResCode > 0 && nResCode != 226) WARN("server reports failed transfer\n");
|
||||
|
||||
WININET_Release(&lpwh->lpFtpSession->hdr);
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, lpwh);
|
||||
}
|
||||
|
||||
@@ -1138,18 +1245,6 @@ static DWORD FTPFILE_ReadFile(WININETHANDLEHEADER *hdr, void *buffer, DWORD size
|
||||
return res>=0 ? ERROR_SUCCESS : INTERNET_ERROR_BASE; /* FIXME*/
|
||||
}
|
||||
|
||||
static DWORD FTPFILE_ReadFileExA(WININETHANDLEHEADER *hdr, INTERNET_BUFFERSA *buffers,
|
||||
DWORD flags, DWORD_PTR context)
|
||||
{
|
||||
return FTPFILE_ReadFile(hdr, buffers->lpvBuffer, buffers->dwBufferLength, &buffers->dwBufferLength);
|
||||
}
|
||||
|
||||
static DWORD FTPFILE_ReadFileExW(WININETHANDLEHEADER *hdr, INTERNET_BUFFERSW *buffers,
|
||||
DWORD flags, DWORD_PTR context)
|
||||
{
|
||||
return FTPFILE_ReadFile(hdr, buffers->lpvBuffer, buffers->dwBufferLength, &buffers->dwBufferLength);
|
||||
}
|
||||
|
||||
static BOOL FTPFILE_WriteFile(WININETHANDLEHEADER *hdr, const void *buffer, DWORD size, DWORD *written)
|
||||
{
|
||||
LPWININETFTPFILE lpwh = (LPWININETFTPFILE) hdr;
|
||||
@@ -1161,85 +1256,15 @@ static BOOL FTPFILE_WriteFile(WININETHANDLEHEADER *hdr, const void *buffer, DWOR
|
||||
return res >= 0;
|
||||
}
|
||||
|
||||
static void FTP_ReceiveRequestData(WININETFTPFILE *file, BOOL first_notif)
|
||||
{
|
||||
INTERNET_ASYNC_RESULT iar;
|
||||
BYTE buffer[4096];
|
||||
int available;
|
||||
|
||||
TRACE("%p\n", file);
|
||||
|
||||
available = recv(file->nDataSocket, buffer, sizeof(buffer), MSG_PEEK);
|
||||
|
||||
if(available != -1) {
|
||||
iar.dwResult = (DWORD_PTR)file->hdr.hInternet;
|
||||
iar.dwError = first_notif ? 0 : available;
|
||||
}else {
|
||||
iar.dwResult = 0;
|
||||
iar.dwError = INTERNET_GetLastError();
|
||||
}
|
||||
|
||||
INTERNET_SendCallback(&file->hdr, file->hdr.dwContext, INTERNET_STATUS_REQUEST_COMPLETE, &iar,
|
||||
sizeof(INTERNET_ASYNC_RESULT));
|
||||
}
|
||||
|
||||
static void FTPFILE_AsyncQueryDataAvailableProc(WORKREQUEST *workRequest)
|
||||
{
|
||||
WININETFTPFILE *file = (WININETFTPFILE*)workRequest->hdr;
|
||||
|
||||
FTP_ReceiveRequestData(file, FALSE);
|
||||
}
|
||||
|
||||
static DWORD FTPFILE_QueryDataAvailable(WININETHANDLEHEADER *hdr, DWORD *available, DWORD flags, DWORD_PTR ctx)
|
||||
{
|
||||
LPWININETFTPFILE file = (LPWININETFTPFILE) hdr;
|
||||
int retval, unread = 0;
|
||||
|
||||
TRACE("(%p %p %x %lx)\n", file, available, flags, ctx);
|
||||
|
||||
#ifdef FIONREAD
|
||||
retval = ioctlsocket(file->nDataSocket, FIONREAD, &unread);
|
||||
if (!retval)
|
||||
TRACE("%d bytes of queued, but unread data\n", unread);
|
||||
#else
|
||||
FIXME("FIONREAD not available\n");
|
||||
#endif
|
||||
|
||||
*available = unread;
|
||||
|
||||
if(!unread) {
|
||||
BYTE byte;
|
||||
|
||||
*available = 0;
|
||||
|
||||
retval = recv(file->nDataSocket, &byte, 1, MSG_PEEK);
|
||||
if(retval > 0) {
|
||||
WORKREQUEST workRequest;
|
||||
|
||||
*available = 0;
|
||||
workRequest.asyncproc = FTPFILE_AsyncQueryDataAvailableProc;
|
||||
workRequest.hdr = WININET_AddRef( &file->hdr );
|
||||
|
||||
INTERNET_AsyncCall(&workRequest);
|
||||
|
||||
return ERROR_IO_PENDING;
|
||||
}
|
||||
}
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
static const HANDLEHEADERVtbl FTPFILEVtbl = {
|
||||
FTPFILE_Destroy,
|
||||
NULL,
|
||||
FTPFILE_QueryOption,
|
||||
NULL,
|
||||
FTPFILE_ReadFile,
|
||||
FTPFILE_ReadFileExA,
|
||||
FTPFILE_ReadFileExW,
|
||||
NULL,
|
||||
FTPFILE_WriteFile,
|
||||
FTPFILE_QueryDataAvailable,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -1314,20 +1339,16 @@ HINTERNET FTP_FtpOpenFileW(LPWININETFTPSESSIONW lpwfs,
|
||||
|
||||
if (lpwh)
|
||||
{
|
||||
iar.dwResult = (DWORD_PTR)handle;
|
||||
iar.dwResult = (DWORD)handle;
|
||||
iar.dwError = ERROR_SUCCESS;
|
||||
SendAsyncCallback(&lpwfs->hdr, lpwfs->hdr.dwContext, INTERNET_STATUS_HANDLE_CREATED,
|
||||
&iar, sizeof(INTERNET_ASYNC_RESULT));
|
||||
}
|
||||
|
||||
if(bSuccess) {
|
||||
FTP_ReceiveRequestData(lpwh, TRUE);
|
||||
}else {
|
||||
iar.dwResult = 0;
|
||||
iar.dwError = INTERNET_GetLastError();
|
||||
SendAsyncCallback(&lpwfs->hdr, lpwfs->hdr.dwContext, INTERNET_STATUS_REQUEST_COMPLETE,
|
||||
&iar, sizeof(INTERNET_ASYNC_RESULT));
|
||||
}
|
||||
iar.dwResult = (DWORD)bSuccess;
|
||||
iar.dwError = bSuccess ? ERROR_SUCCESS : INTERNET_GetLastError();
|
||||
SendAsyncCallback(&lpwfs->hdr, lpwfs->hdr.dwContext, INTERNET_STATUS_REQUEST_COMPLETE,
|
||||
&iar, sizeof(INTERNET_ASYNC_RESULT));
|
||||
}
|
||||
|
||||
lend:
|
||||
@@ -1338,119 +1359,6 @@ lend:
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* FtpOpenFileA (WININET.@)
|
||||
*
|
||||
* Open a remote file for writing or reading
|
||||
*
|
||||
* RETURNS
|
||||
* HINTERNET handle on success
|
||||
* NULL on failure
|
||||
*
|
||||
*/
|
||||
HINTERNET WINAPI FtpOpenFileA(HINTERNET hFtpSession,
|
||||
LPCSTR lpszFileName, DWORD fdwAccess, DWORD dwFlags,
|
||||
DWORD_PTR dwContext)
|
||||
{
|
||||
LPWSTR lpwzFileName;
|
||||
HINTERNET ret;
|
||||
|
||||
lpwzFileName = lpszFileName?WININET_strdup_AtoW(lpszFileName):NULL;
|
||||
ret = FtpOpenFileW(hFtpSession, lpwzFileName, fdwAccess, dwFlags, dwContext);
|
||||
HeapFree(GetProcessHeap(), 0, lpwzFileName);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
static void AsyncFtpOpenFileProc(WORKREQUEST *workRequest)
|
||||
{
|
||||
struct WORKREQ_FTPOPENFILEW const *req = &workRequest->u.FtpOpenFileW;
|
||||
LPWININETFTPSESSIONW lpwfs = (LPWININETFTPSESSIONW) workRequest->hdr;
|
||||
|
||||
TRACE("%p\n", lpwfs);
|
||||
|
||||
FTP_FtpOpenFileW(lpwfs, req->lpszFilename,
|
||||
req->dwAccess, req->dwFlags, req->dwContext);
|
||||
HeapFree(GetProcessHeap(), 0, req->lpszFilename);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* FtpOpenFileW (WININET.@)
|
||||
*
|
||||
* Open a remote file for writing or reading
|
||||
*
|
||||
* RETURNS
|
||||
* HINTERNET handle on success
|
||||
* NULL on failure
|
||||
*
|
||||
*/
|
||||
HINTERNET WINAPI FtpOpenFileW(HINTERNET hFtpSession,
|
||||
LPCWSTR lpszFileName, DWORD fdwAccess, DWORD dwFlags,
|
||||
DWORD_PTR dwContext)
|
||||
{
|
||||
LPWININETFTPSESSIONW lpwfs;
|
||||
LPWININETAPPINFOW hIC = NULL;
|
||||
HINTERNET r = NULL;
|
||||
|
||||
TRACE("(%p,%s,0x%08x,0x%08x,0x%08lx)\n", hFtpSession,
|
||||
debugstr_w(lpszFileName), fdwAccess, dwFlags, dwContext);
|
||||
|
||||
lpwfs = (LPWININETFTPSESSIONW) WININET_GetObject( hFtpSession );
|
||||
if (!lpwfs)
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (WH_HFTPSESSION != lpwfs->hdr.htype)
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
|
||||
goto lend;
|
||||
}
|
||||
|
||||
if ((!lpszFileName) ||
|
||||
((fdwAccess != GENERIC_READ) && (fdwAccess != GENERIC_WRITE)) ||
|
||||
((dwFlags & FTP_CONDITION_MASK) > FTP_TRANSFER_TYPE_BINARY))
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INVALID_PARAMETER);
|
||||
goto lend;
|
||||
}
|
||||
|
||||
if (lpwfs->download_in_progress != NULL)
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_FTP_TRANSFER_IN_PROGRESS);
|
||||
goto lend;
|
||||
}
|
||||
|
||||
hIC = lpwfs->lpAppInfo;
|
||||
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
|
||||
{
|
||||
WORKREQUEST workRequest;
|
||||
struct WORKREQ_FTPOPENFILEW *req;
|
||||
|
||||
workRequest.asyncproc = AsyncFtpOpenFileProc;
|
||||
workRequest.hdr = WININET_AddRef( &lpwfs->hdr );
|
||||
req = &workRequest.u.FtpOpenFileW;
|
||||
req->lpszFilename = WININET_strdupW(lpszFileName);
|
||||
req->dwAccess = fdwAccess;
|
||||
req->dwFlags = dwFlags;
|
||||
req->dwContext = dwContext;
|
||||
|
||||
INTERNET_AsyncCall(&workRequest);
|
||||
r = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
r = FTP_FtpOpenFileW(lpwfs, lpszFileName, fdwAccess, dwFlags, dwContext);
|
||||
}
|
||||
|
||||
lend:
|
||||
WININET_Release( &lpwfs->hdr );
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* FtpGetFileA (WININET.@)
|
||||
*
|
||||
@@ -2348,7 +2256,7 @@ HINTERNET FTP_Connect(LPWININETAPPINFOW hIC, LPCWSTR lpszServerName,
|
||||
|
||||
assert( hIC->hdr.htype == WH_HINIT );
|
||||
|
||||
if ((!lpszUserName || !*lpszUserName) && lpszPassword && *lpszPassword)
|
||||
if (NULL == lpszUserName && NULL != lpszPassword)
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INVALID_PARAMETER);
|
||||
goto lerror;
|
||||
@@ -2394,7 +2302,7 @@ HINTERNET FTP_Connect(LPWININETAPPINFOW hIC, LPCWSTR lpszServerName,
|
||||
if(hIC->lpszProxyBypass)
|
||||
FIXME("Proxy bypass is ignored.\n");
|
||||
}
|
||||
if (!lpszUserName || !strlenW(lpszUserName)) {
|
||||
if ( !lpszUserName) {
|
||||
HKEY key;
|
||||
WCHAR szPassword[MAX_PATH];
|
||||
DWORD len = sizeof(szPassword);
|
||||
@@ -2428,7 +2336,7 @@ HINTERNET FTP_Connect(LPWININETAPPINFOW hIC, LPCWSTR lpszServerName,
|
||||
{
|
||||
INTERNET_ASYNC_RESULT iar;
|
||||
|
||||
iar.dwResult = (DWORD_PTR)handle;
|
||||
iar.dwResult = (DWORD)handle;
|
||||
iar.dwError = ERROR_SUCCESS;
|
||||
|
||||
SendAsyncCallback(&hIC->hdr, dwContext,
|
||||
@@ -2489,6 +2397,16 @@ lerror:
|
||||
handle = NULL;
|
||||
}
|
||||
|
||||
if (hIC->hdr.dwFlags & INTERNET_FLAG_ASYNC)
|
||||
{
|
||||
INTERNET_ASYNC_RESULT iar;
|
||||
|
||||
iar.dwResult = bSuccess ? (DWORD_PTR)lpwfs : 0;
|
||||
iar.dwError = bSuccess ? ERROR_SUCCESS : INTERNET_GetLastError();
|
||||
SendAsyncCallback(&hIC->hdr, dwContext, INTERNET_STATUS_REQUEST_COMPLETE,
|
||||
&iar, sizeof(INTERNET_ASYNC_RESULT));
|
||||
}
|
||||
|
||||
return handle;
|
||||
}
|
||||
|
||||
@@ -2819,7 +2737,7 @@ static BOOL FTP_InitListenSocket(LPWININETFTPSESSIONW lpwfs)
|
||||
lpwfs->lstnSocketAddress = lpwfs->socketAddress;
|
||||
|
||||
/* and get the system to assign us a port */
|
||||
lpwfs->lstnSocketAddress.sin_port = htons(0);
|
||||
lpwfs->lstnSocketAddress.sin_port = htons((u_short) 0);
|
||||
|
||||
if (bind(lpwfs->lstnSocket,(struct sockaddr *) &lpwfs->lstnSocketAddress, sizeof(struct sockaddr_in)) == -1)
|
||||
{
|
||||
@@ -3302,7 +3220,7 @@ static void FTPFINDNEXT_Destroy(WININETHANDLEHEADER *hdr)
|
||||
HeapFree(GetProcessHeap(), 0, lpwfn);
|
||||
}
|
||||
|
||||
static DWORD FTPFINDNEXT_FindNextFileProc(WININETFTPFINDNEXTW *find, LPVOID data)
|
||||
static DWORD WINAPI FTPFINDNEXT_FindNextFileProc(WININETFTPFINDNEXTW *find, LPVOID data)
|
||||
{
|
||||
WIN32_FIND_DATAW *find_data = data;
|
||||
DWORD res = ERROR_SUCCESS;
|
||||
@@ -3390,7 +3308,6 @@ static const HANDLEHEADERVtbl FTPFINDNEXTVtbl = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FTPFINDNEXT_FindNextFileW
|
||||
};
|
||||
|
||||
@@ -3465,7 +3382,9 @@ static BOOL FTP_ConvertFileProp(LPFILEPROPERTIESW lpafp, LPWIN32_FIND_DATAW lpFi
|
||||
|
||||
if (lpafp)
|
||||
{
|
||||
SystemTimeToFileTime( &lpafp->tmLastModified, &lpFindFileData->ftLastAccessTime );
|
||||
/* Convert 'Unix' time to Windows time */
|
||||
RtlSecondsSince1970ToTime(mktime(&lpafp->tmLastModified),
|
||||
(LARGE_INTEGER *) &(lpFindFileData->ftLastAccessTime));
|
||||
lpFindFileData->ftLastWriteTime = lpFindFileData->ftLastAccessTime;
|
||||
lpFindFileData->ftCreationTime = lpFindFileData->ftLastAccessTime;
|
||||
|
||||
@@ -3533,12 +3452,12 @@ static BOOL FTP_ParseNextFile(INT nSocket, LPCWSTR lpszSearchFile, LPFILEPROPERT
|
||||
lpfp->nSize = atol(pszToken);
|
||||
}
|
||||
|
||||
lpfp->tmLastModified.wSecond = 0;
|
||||
lpfp->tmLastModified.wMinute = 0;
|
||||
lpfp->tmLastModified.wHour = 0;
|
||||
lpfp->tmLastModified.wDay = 0;
|
||||
lpfp->tmLastModified.wMonth = 0;
|
||||
lpfp->tmLastModified.wYear = 0;
|
||||
lpfp->tmLastModified.tm_sec = 0;
|
||||
lpfp->tmLastModified.tm_min = 0;
|
||||
lpfp->tmLastModified.tm_hour = 0;
|
||||
lpfp->tmLastModified.tm_mday = 0;
|
||||
lpfp->tmLastModified.tm_mon = 0;
|
||||
lpfp->tmLastModified.tm_year = 0;
|
||||
|
||||
/* Determine month */
|
||||
pszToken = strtok(NULL, szSpace);
|
||||
@@ -3546,31 +3465,34 @@ static BOOL FTP_ParseNextFile(INT nSocket, LPCWSTR lpszSearchFile, LPFILEPROPERT
|
||||
if(strlen(pszToken) >= 3) {
|
||||
pszToken[3] = 0;
|
||||
if((pszTmp = StrStrIA(szMonths, pszToken)))
|
||||
lpfp->tmLastModified.wMonth = ((pszTmp - szMonths) / 3)+1;
|
||||
lpfp->tmLastModified.tm_mon = ((pszTmp - szMonths) / 3)+1;
|
||||
}
|
||||
/* Determine day */
|
||||
pszToken = strtok(NULL, szSpace);
|
||||
if(!pszToken) continue;
|
||||
lpfp->tmLastModified.wDay = atoi(pszToken);
|
||||
lpfp->tmLastModified.tm_mday = atoi(pszToken);
|
||||
/* Determine time or year */
|
||||
pszToken = strtok(NULL, szSpace);
|
||||
if(!pszToken) continue;
|
||||
if((pszTmp = strchr(pszToken, ':'))) {
|
||||
SYSTEMTIME curr_time;
|
||||
struct tm* apTM;
|
||||
time_t aTime;
|
||||
*pszTmp = 0;
|
||||
pszTmp++;
|
||||
lpfp->tmLastModified.wMinute = atoi(pszTmp);
|
||||
lpfp->tmLastModified.wHour = atoi(pszToken);
|
||||
GetLocalTime( &curr_time );
|
||||
lpfp->tmLastModified.wYear = curr_time.wYear;
|
||||
lpfp->tmLastModified.tm_min = atoi(pszTmp);
|
||||
lpfp->tmLastModified.tm_hour = atoi(pszToken);
|
||||
time(&aTime);
|
||||
apTM = localtime(&aTime);
|
||||
lpfp->tmLastModified.tm_year = apTM->tm_year;
|
||||
}
|
||||
else {
|
||||
lpfp->tmLastModified.wYear = atoi(pszToken);
|
||||
lpfp->tmLastModified.wHour = 12;
|
||||
lpfp->tmLastModified.tm_year = atoi(pszToken) - 1900;
|
||||
lpfp->tmLastModified.tm_hour = 12;
|
||||
}
|
||||
TRACE("Mod time: %02d:%02d:%02d %04d/%02d/%02d\n",
|
||||
lpfp->tmLastModified.wHour, lpfp->tmLastModified.wMinute, lpfp->tmLastModified.wSecond,
|
||||
lpfp->tmLastModified.wYear, lpfp->tmLastModified.wMonth, lpfp->tmLastModified.wDay);
|
||||
TRACE("Mod time: %02d:%02d:%02d %02d/%02d/%02d\n",
|
||||
lpfp->tmLastModified.tm_hour, lpfp->tmLastModified.tm_min, lpfp->tmLastModified.tm_sec,
|
||||
(lpfp->tmLastModified.tm_year >= 100) ? lpfp->tmLastModified.tm_year - 100 : lpfp->tmLastModified.tm_year,
|
||||
lpfp->tmLastModified.tm_mon, lpfp->tmLastModified.tm_mday);
|
||||
|
||||
pszToken = strtok(NULL, szSpace);
|
||||
if(!pszToken) continue;
|
||||
@@ -3583,31 +3505,32 @@ static BOOL FTP_ParseNextFile(INT nSocket, LPCWSTR lpszSearchFile, LPFILEPROPERT
|
||||
05-09-03 06:02PM 12656686 2003-04-21bgm_cmd_e.rgz
|
||||
*/
|
||||
else if(isdigit(pszToken[0]) && 8 == strlen(pszToken)) {
|
||||
int mon, mday, year, hour, min;
|
||||
lpfp->permissions = 0xFFFF; /* No idea, put full permission :-) */
|
||||
|
||||
sscanf(pszToken, "%d-%d-%d", &mon, &mday, &year);
|
||||
lpfp->tmLastModified.wDay = mday;
|
||||
lpfp->tmLastModified.wMonth = mon;
|
||||
lpfp->tmLastModified.wYear = year;
|
||||
sscanf(pszToken, "%d-%d-%d",
|
||||
&lpfp->tmLastModified.tm_mon,
|
||||
&lpfp->tmLastModified.tm_mday,
|
||||
&lpfp->tmLastModified.tm_year);
|
||||
|
||||
/* Hacky and bad Y2K protection :-) */
|
||||
if (lpfp->tmLastModified.wYear < 70) lpfp->tmLastModified.wYear += 2000;
|
||||
|
||||
if (lpfp->tmLastModified.tm_year < 70)
|
||||
lpfp->tmLastModified.tm_year += 100;
|
||||
|
||||
pszToken = strtok(NULL, szSpace);
|
||||
if(!pszToken) continue;
|
||||
sscanf(pszToken, "%d:%d", &hour, &min);
|
||||
lpfp->tmLastModified.wHour = hour;
|
||||
lpfp->tmLastModified.wMinute = min;
|
||||
sscanf(pszToken, "%d:%d",
|
||||
&lpfp->tmLastModified.tm_hour,
|
||||
&lpfp->tmLastModified.tm_min);
|
||||
if((pszToken[5] == 'P') && (pszToken[6] == 'M')) {
|
||||
lpfp->tmLastModified.wHour += 12;
|
||||
lpfp->tmLastModified.tm_hour += 12;
|
||||
}
|
||||
lpfp->tmLastModified.wSecond = 0;
|
||||
|
||||
TRACE("Mod time: %02d:%02d:%02d %04d/%02d/%02d\n",
|
||||
lpfp->tmLastModified.wHour, lpfp->tmLastModified.wMinute, lpfp->tmLastModified.wSecond,
|
||||
lpfp->tmLastModified.wYear, lpfp->tmLastModified.wMonth, lpfp->tmLastModified.wDay);
|
||||
lpfp->tmLastModified.tm_sec = 0;
|
||||
|
||||
TRACE("Mod time: %02d:%02d:%02d %02d/%02d/%02d\n",
|
||||
lpfp->tmLastModified.tm_hour, lpfp->tmLastModified.tm_min, lpfp->tmLastModified.tm_sec,
|
||||
(lpfp->tmLastModified.tm_year >= 100) ? lpfp->tmLastModified.tm_year - 100 : lpfp->tmLastModified.tm_year,
|
||||
lpfp->tmLastModified.tm_mon, lpfp->tmLastModified.tm_mday);
|
||||
|
||||
pszToken = strtok(NULL, szSpace);
|
||||
if(!pszToken) continue;
|
||||
if(!strcasecmp(pszToken, "<DIR>")) {
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -31,10 +31,6 @@
|
||||
|
||||
#define MAXHOSTNAME 100 /* from http.c */
|
||||
|
||||
#if defined(__MINGW32__) || defined (_MSC_VER)
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
@@ -117,7 +113,7 @@ HINTERNET WININET_AllocHandle( LPWININETHANDLEHEADER info )
|
||||
{
|
||||
num = HANDLE_CHUNK_SIZE;
|
||||
p = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof (*WININET_Handles)* num);
|
||||
sizeof (UINT)* num);
|
||||
if( !p )
|
||||
goto end;
|
||||
WININET_Handles = p;
|
||||
@@ -127,7 +123,7 @@ HINTERNET WININET_AllocHandle( LPWININETHANDLEHEADER info )
|
||||
{
|
||||
num = WININET_dwMaxHandles + HANDLE_CHUNK_SIZE;
|
||||
p = HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
WININET_Handles, sizeof (*WININET_Handles)* num);
|
||||
WININET_Handles, sizeof (UINT)* num);
|
||||
if( !p )
|
||||
goto end;
|
||||
WININET_Handles = p;
|
||||
@@ -186,8 +182,7 @@ BOOL WININET_Release( LPWININETHANDLEHEADER info )
|
||||
info->vtbl->CloseConnection( info );
|
||||
}
|
||||
/* Don't send a callback if this is a session handle created with InternetOpenUrl */
|
||||
if ((info->htype != WH_HHTTPSESSION && info->htype != WH_HFTPSESSION)
|
||||
|| !(info->dwInternalFlags & INET_OPENURL))
|
||||
if (info->htype != WH_HHTTPSESSION || !(info->dwInternalFlags & INET_OPENURL))
|
||||
{
|
||||
INTERNET_SendCallback(info, info->dwContext,
|
||||
INTERNET_STATUS_HANDLE_CLOSING, &info->hInternet,
|
||||
@@ -415,11 +410,8 @@ static BOOL INTERNET_ConfigureProxy( LPWININETAPPINFOW lpwai )
|
||||
TRACE("http proxy (from environment) = %s\n", debugstr_w(lpwai->lpszProxy));
|
||||
enabled = 1;
|
||||
}
|
||||
if (!enabled)
|
||||
{
|
||||
TRACE("Proxy is not enabled.\n");
|
||||
lpwai->dwAccessType = INTERNET_OPEN_TYPE_DIRECT;
|
||||
}
|
||||
if (!enabled) TRACE("Proxy is not enabled.\n");
|
||||
|
||||
RegCloseKey( key );
|
||||
return (enabled > 0);
|
||||
}
|
||||
@@ -467,8 +459,8 @@ static void dump_INTERNET_FLAGS(DWORD dwFlags)
|
||||
FE(INTERNET_FLAG_TRANSFER_BINARY)
|
||||
};
|
||||
#undef FE
|
||||
unsigned int i;
|
||||
|
||||
int i;
|
||||
|
||||
for (i = 0; i < (sizeof(flag) / sizeof(flag[0])); i++) {
|
||||
if (flag[i].val & dwFlags) {
|
||||
TRACE(" %s", flag[i].name);
|
||||
@@ -551,10 +543,8 @@ static DWORD APPINFO_QueryOption(WININETHANDLEHEADER *hdr, DWORD option, void *b
|
||||
if (ai->lpszProxyBypass)
|
||||
proxyBypassBytesRequired = (lstrlenW(ai->lpszProxyBypass) + 1) * sizeof(WCHAR);
|
||||
if (*size < sizeof(INTERNET_PROXY_INFOW) + proxyBytesRequired + proxyBypassBytesRequired)
|
||||
{
|
||||
*size = sizeof(INTERNET_PROXY_INFOW) + proxyBytesRequired + proxyBypassBytesRequired;
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
}
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
proxy = (LPWSTR)((LPBYTE)buffer + sizeof(INTERNET_PROXY_INFOW));
|
||||
proxy_bypass = (LPWSTR)((LPBYTE)buffer + sizeof(INTERNET_PROXY_INFOW) + proxyBytesRequired);
|
||||
|
||||
@@ -584,10 +574,8 @@ static DWORD APPINFO_QueryOption(WININETHANDLEHEADER *hdr, DWORD option, void *b
|
||||
proxyBypassBytesRequired = WideCharToMultiByte(CP_ACP, 0, ai->lpszProxyBypass, -1,
|
||||
NULL, 0, NULL, NULL);
|
||||
if (*size < sizeof(INTERNET_PROXY_INFOA) + proxyBytesRequired + proxyBypassBytesRequired)
|
||||
{
|
||||
*size = sizeof(INTERNET_PROXY_INFOA) + proxyBytesRequired + proxyBypassBytesRequired;
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
}
|
||||
|
||||
proxy = (LPSTR)((LPBYTE)buffer + sizeof(INTERNET_PROXY_INFOA));
|
||||
proxy_bypass = (LPSTR)((LPBYTE)buffer + sizeof(INTERNET_PROXY_INFOA) + proxyBytesRequired);
|
||||
|
||||
@@ -791,7 +779,7 @@ HINTERNET WINAPI InternetOpenA(LPCSTR lpszAgent, DWORD dwAccessType,
|
||||
BOOL WINAPI InternetGetLastResponseInfoA(LPDWORD lpdwError,
|
||||
LPSTR lpszBuffer, LPDWORD lpdwBufferLength)
|
||||
{
|
||||
LPWITHREADERROR lpwite = TlsGetValue(g_dwTlsErrIndex);
|
||||
LPWITHREADERROR lpwite = (LPWITHREADERROR)TlsGetValue(g_dwTlsErrIndex);
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
@@ -828,7 +816,7 @@ BOOL WINAPI InternetGetLastResponseInfoA(LPDWORD lpdwError,
|
||||
BOOL WINAPI InternetGetLastResponseInfoW(LPDWORD lpdwError,
|
||||
LPWSTR lpszBuffer, LPDWORD lpdwBufferLength)
|
||||
{
|
||||
LPWITHREADERROR lpwite = TlsGetValue(g_dwTlsErrIndex);
|
||||
LPWITHREADERROR lpwite = (LPWITHREADERROR)TlsGetValue(g_dwTlsErrIndex);
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
@@ -868,7 +856,7 @@ BOOL WINAPI InternetGetConnectedState(LPDWORD lpdwStatus, DWORD dwReserved)
|
||||
TRACE("(%p, 0x%08x)\n", lpdwStatus, dwReserved);
|
||||
|
||||
if (lpdwStatus) {
|
||||
WARN("always returning LAN connection.\n");
|
||||
FIXME("always returning LAN connection.\n");
|
||||
*lpdwStatus = INTERNET_CONNECTION_LAN;
|
||||
}
|
||||
return TRUE;
|
||||
@@ -912,7 +900,7 @@ BOOL WINAPI InternetGetConnectedStateExW(LPDWORD lpdwStatus, LPWSTR lpszConnecti
|
||||
return FALSE;
|
||||
|
||||
if (lpdwStatus) {
|
||||
WARN("always returning LAN connection.\n");
|
||||
FIXME("always returning LAN connection.\n");
|
||||
*lpdwStatus = INTERNET_CONNECTION_LAN;
|
||||
}
|
||||
return LoadStringW(WININET_hModule, IDS_LANCONNECTION, lpszConnectionName, dwNameLen);
|
||||
@@ -1825,8 +1813,8 @@ INTERNET_STATUS_CALLBACK WINAPI InternetSetStatusCallbackA(
|
||||
INTERNET_STATUS_CALLBACK retVal;
|
||||
LPWININETHANDLEHEADER lpwh;
|
||||
|
||||
TRACE("%p\n", hInternet);
|
||||
|
||||
TRACE("0x%08x\n", (ULONG)hInternet);
|
||||
|
||||
if (!(lpwh = WININET_GetObject(hInternet)))
|
||||
return INTERNET_INVALID_STATUS_CALLBACK;
|
||||
|
||||
@@ -1853,7 +1841,7 @@ INTERNET_STATUS_CALLBACK WINAPI InternetSetStatusCallbackW(
|
||||
INTERNET_STATUS_CALLBACK retVal;
|
||||
LPWININETHANDLEHEADER lpwh;
|
||||
|
||||
TRACE("%p\n", hInternet);
|
||||
TRACE("0x%08x\n", (ULONG)hInternet);
|
||||
|
||||
if (!(lpwh = WININET_GetObject(hInternet)))
|
||||
return INTERNET_INVALID_STATUS_CALLBACK;
|
||||
@@ -2006,40 +1994,33 @@ BOOL WINAPI InternetReadFileExA(HINTERNET hFile, LPINTERNET_BUFFERSA lpBuffersOu
|
||||
|
||||
/***********************************************************************
|
||||
* InternetReadFileExW (WININET.@)
|
||||
* SEE
|
||||
* InternetReadFileExA()
|
||||
*
|
||||
* Read data from an open internet file.
|
||||
*
|
||||
* PARAMS
|
||||
* hFile [I] Handle returned by InternetOpenUrl() or HttpOpenRequest().
|
||||
* lpBuffersOut [I/O] Buffer.
|
||||
* dwFlags [I] Flags.
|
||||
* dwContext [I] Context for callbacks.
|
||||
*
|
||||
* RETURNS
|
||||
* FALSE, last error is set to ERROR_CALL_NOT_IMPLEMENTED
|
||||
*
|
||||
* NOTES
|
||||
* Not implemented in Wine or native either (as of IE6 SP2).
|
||||
*
|
||||
*/
|
||||
BOOL WINAPI InternetReadFileExW(HINTERNET hFile, LPINTERNET_BUFFERSW lpBuffer,
|
||||
DWORD dwFlags, DWORD_PTR dwContext)
|
||||
{
|
||||
LPWININETHANDLEHEADER hdr;
|
||||
DWORD res = ERROR_INTERNET_INCORRECT_HANDLE_TYPE;
|
||||
ERR("(%p, %p, 0x%x, 0x%lx): not implemented in native\n", hFile, lpBuffer, dwFlags, dwContext);
|
||||
|
||||
TRACE("(%p %p 0x%x 0x%lx)\n", hFile, lpBuffer, dwFlags, dwContext);
|
||||
|
||||
hdr = WININET_GetObject(hFile);
|
||||
if (!hdr) {
|
||||
INTERNET_SetLastError(ERROR_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if(hdr->vtbl->ReadFileExW)
|
||||
res = hdr->vtbl->ReadFileExW(hdr, lpBuffer, dwFlags, dwContext);
|
||||
|
||||
WININET_Release(hdr);
|
||||
|
||||
TRACE("-- %s (%u, bytes read: %d)\n", res == ERROR_SUCCESS ? "TRUE": "FALSE",
|
||||
res, lpBuffer->dwBufferLength);
|
||||
|
||||
if(res != ERROR_SUCCESS)
|
||||
SetLastError(res);
|
||||
return res == ERROR_SUCCESS;
|
||||
INTERNET_SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
DWORD INET_QueryOption(DWORD option, void *buffer, DWORD *size, BOOL unicode)
|
||||
{
|
||||
static BOOL warn = TRUE;
|
||||
|
||||
switch(option) {
|
||||
case INTERNET_OPTION_REQUEST_FLAGS:
|
||||
TRACE("INTERNET_OPTION_REQUEST_FLAGS\n");
|
||||
@@ -2066,11 +2047,8 @@ DWORD INET_QueryOption(DWORD option, void *buffer, DWORD *size, BOOL unicode)
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
case INTERNET_OPTION_CONNECTED_STATE:
|
||||
FIXME("INTERNET_OPTION_CONNECTED_STATE: semi-stub\n");
|
||||
|
||||
if (warn) {
|
||||
FIXME("INTERNET_OPTION_CONNECTED_STATE: semi-stub\n");
|
||||
warn = FALSE;
|
||||
}
|
||||
if (*size < sizeof(ULONG))
|
||||
return ERROR_INSUFFICIENT_BUFFER;
|
||||
|
||||
@@ -2155,7 +2133,8 @@ DWORD INET_QueryOption(DWORD option, void *buffer, DWORD *size, BOOL unicode)
|
||||
case INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_TIME:
|
||||
case INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_URL:
|
||||
FIXME("Unhandled dwOption %d\n", option->dwOption);
|
||||
memset(&option->Value, 0, sizeof(option->Value));
|
||||
option->Value.dwValue = 0;
|
||||
res = ERROR_INVALID_PARAMETER;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -2277,14 +2256,9 @@ BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption,
|
||||
{
|
||||
case INTERNET_OPTION_CALLBACK:
|
||||
{
|
||||
if (!lpwhh)
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
|
||||
return FALSE;
|
||||
}
|
||||
WININET_Release(lpwhh);
|
||||
INTERNET_SetLastError(ERROR_INTERNET_OPTION_NOT_SETTABLE);
|
||||
return FALSE;
|
||||
INTERNET_STATUS_CALLBACK callback = *(INTERNET_STATUS_CALLBACK *)lpBuffer;
|
||||
ret = (set_status_callback(lpwhh, callback, TRUE) != INTERNET_INVALID_STATUS_CALLBACK);
|
||||
break;
|
||||
}
|
||||
case INTERNET_OPTION_HTTP_VERSION:
|
||||
{
|
||||
@@ -2368,35 +2342,8 @@ BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption,
|
||||
case INTERNET_OPTION_DISABLE_AUTODIAL:
|
||||
FIXME("Option INTERNET_OPTION_DISABLE_AUTODIAL; STUB\n");
|
||||
break;
|
||||
case INTERNET_OPTION_HTTP_DECODING:
|
||||
FIXME("INTERNET_OPTION_HTTP_DECODING; STUB\n");
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INVALID_OPTION);
|
||||
ret = FALSE;
|
||||
break;
|
||||
case INTERNET_OPTION_COOKIES_3RD_PARTY:
|
||||
FIXME("INTERNET_OPTION_COOKIES_3RD_PARTY; STUB\n");
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INVALID_OPTION);
|
||||
ret = FALSE;
|
||||
break;
|
||||
case INTERNET_OPTION_SEND_UTF8_SERVERNAME_TO_PROXY:
|
||||
FIXME("INTERNET_OPTION_SEND_UTF8_SERVERNAME_TO_PROXY; STUB\n");
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INVALID_OPTION);
|
||||
ret = FALSE;
|
||||
break;
|
||||
case INTERNET_OPTION_CODEPAGE_PATH:
|
||||
FIXME("INTERNET_OPTION_CODEPAGE_PATH; STUB\n");
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INVALID_OPTION);
|
||||
ret = FALSE;
|
||||
break;
|
||||
case INTERNET_OPTION_CODEPAGE_EXTRA:
|
||||
FIXME("INTERNET_OPTION_CODEPAGE_EXTRA; STUB\n");
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INVALID_OPTION);
|
||||
ret = FALSE;
|
||||
break;
|
||||
case INTERNET_OPTION_IDN:
|
||||
FIXME("INTERNET_OPTION_IDN; STUB\n");
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INVALID_OPTION);
|
||||
ret = FALSE;
|
||||
case 86:
|
||||
FIXME("86\n");
|
||||
break;
|
||||
default:
|
||||
FIXME("Option %d STUB\n",dwOption);
|
||||
@@ -2434,15 +2381,12 @@ BOOL WINAPI InternetSetOptionA(HINTERNET hInternet, DWORD dwOption,
|
||||
case INTERNET_OPTION_CALLBACK:
|
||||
{
|
||||
LPWININETHANDLEHEADER lpwh;
|
||||
INTERNET_STATUS_CALLBACK callback = *(INTERNET_STATUS_CALLBACK *)lpBuffer;
|
||||
|
||||
if (!(lpwh = WININET_GetObject(hInternet)))
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INTERNET_INCORRECT_HANDLE_TYPE);
|
||||
return FALSE;
|
||||
}
|
||||
if (!(lpwh = WININET_GetObject(hInternet))) return FALSE;
|
||||
r = (set_status_callback(lpwh, callback, FALSE) != INTERNET_INVALID_STATUS_CALLBACK);
|
||||
WININET_Release(lpwh);
|
||||
INTERNET_SetLastError(ERROR_INTERNET_OPTION_NOT_SETTABLE);
|
||||
return FALSE;
|
||||
return r;
|
||||
}
|
||||
case INTERNET_OPTION_PROXY:
|
||||
{
|
||||
@@ -2531,18 +2475,6 @@ BOOL WINAPI InternetTimeFromSystemTimeA( const SYSTEMTIME* time, DWORD format, L
|
||||
|
||||
TRACE( "%p 0x%08x %p 0x%08x\n", time, format, string, size );
|
||||
|
||||
if (!time || !string || format != INTERNET_RFC1123_FORMAT)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (size < INTERNET_RFC1123_BUFSIZE * sizeof(*string))
|
||||
{
|
||||
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ret = InternetTimeFromSystemTimeW( time, format, stringW, sizeof(stringW) );
|
||||
if (ret) WideCharToMultiByte( CP_ACP, 0, stringW, -1, string, size, NULL, NULL );
|
||||
|
||||
@@ -2560,17 +2492,10 @@ BOOL WINAPI InternetTimeFromSystemTimeW( const SYSTEMTIME* time, DWORD format, L
|
||||
|
||||
TRACE( "%p 0x%08x %p 0x%08x\n", time, format, string, size );
|
||||
|
||||
if (!time || !string || format != INTERNET_RFC1123_FORMAT)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
if (!time || !string) return FALSE;
|
||||
|
||||
if (size < INTERNET_RFC1123_BUFSIZE * sizeof(*string))
|
||||
{
|
||||
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
||||
if (format != INTERNET_RFC1123_FORMAT || size < INTERNET_RFC1123_BUFSIZE * sizeof(WCHAR))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
sprintfW( string, date,
|
||||
WININET_wkday[time->wDayOfWeek],
|
||||
@@ -2880,8 +2805,6 @@ static HINTERNET INTERNET_InternetOpenUrlW(LPWININETAPPINFOW hIC, LPCWSTR lpszUr
|
||||
else
|
||||
urlComponents.nPort = INTERNET_DEFAULT_HTTPS_PORT;
|
||||
}
|
||||
if (urlComponents.nScheme == INTERNET_SCHEME_HTTPS) dwFlags |= INTERNET_FLAG_SECURE;
|
||||
|
||||
/* FIXME: should use pointers, not handles, as handles are not thread-safe */
|
||||
client = HTTP_Connect(hIC, hostName, urlComponents.nPort,
|
||||
userName, password, dwFlags, dwContext, INET_OPENURL);
|
||||
@@ -3087,7 +3010,7 @@ static LPWITHREADERROR INTERNET_AllocThreadError(void)
|
||||
*/
|
||||
void INTERNET_SetLastError(DWORD dwError)
|
||||
{
|
||||
LPWITHREADERROR lpwite = TlsGetValue(g_dwTlsErrIndex);
|
||||
LPWITHREADERROR lpwite = (LPWITHREADERROR)TlsGetValue(g_dwTlsErrIndex);
|
||||
|
||||
if (!lpwite)
|
||||
lpwite = INTERNET_AllocThreadError();
|
||||
@@ -3108,7 +3031,7 @@ void INTERNET_SetLastError(DWORD dwError)
|
||||
*/
|
||||
DWORD INTERNET_GetLastError(void)
|
||||
{
|
||||
LPWITHREADERROR lpwite = TlsGetValue(g_dwTlsErrIndex);
|
||||
LPWITHREADERROR lpwite = (LPWITHREADERROR)TlsGetValue(g_dwTlsErrIndex);
|
||||
if (!lpwite) return 0;
|
||||
/* TlsGetValue clears last error, so set it again here */
|
||||
SetLastError(lpwite->dwError);
|
||||
@@ -3181,7 +3104,7 @@ BOOL INTERNET_AsyncCall(LPWORKREQUEST lpWorkRequest)
|
||||
*/
|
||||
LPSTR INTERNET_GetResponseBuffer(void)
|
||||
{
|
||||
LPWITHREADERROR lpwite = TlsGetValue(g_dwTlsErrIndex);
|
||||
LPWITHREADERROR lpwite = (LPWITHREADERROR)TlsGetValue(g_dwTlsErrIndex);
|
||||
if (!lpwite)
|
||||
lpwite = INTERNET_AllocThreadError();
|
||||
TRACE("\n");
|
||||
@@ -3528,9 +3451,6 @@ static BOOL calc_url_length(LPURL_COMPONENTSW lpUrlComponents,
|
||||
if (lpUrlComponents->lpszUrlPath)
|
||||
*lpdwUrlLength += URL_GET_COMP_LENGTH(lpUrlComponents, UrlPath);
|
||||
|
||||
if (lpUrlComponents->lpszExtraInfo)
|
||||
*lpdwUrlLength += URL_GET_COMP_LENGTH(lpUrlComponents, ExtraInfo);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -3779,6 +3699,7 @@ BOOL WINAPI InternetCreateUrlW(LPURL_COMPONENTSW lpUrlComponents, DWORD dwFlags,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (lpUrlComponents->lpszUrlPath)
|
||||
{
|
||||
dwLen = URL_GET_COMP_LENGTH(lpUrlComponents, UrlPath);
|
||||
@@ -3786,13 +3707,6 @@ BOOL WINAPI InternetCreateUrlW(LPURL_COMPONENTSW lpUrlComponents, DWORD dwFlags,
|
||||
lpszUrl += dwLen;
|
||||
}
|
||||
|
||||
if (lpUrlComponents->lpszExtraInfo)
|
||||
{
|
||||
dwLen = URL_GET_COMP_LENGTH(lpUrlComponents, ExtraInfo);
|
||||
memcpy(lpszUrl, lpUrlComponents->lpszExtraInfo, dwLen * sizeof(WCHAR));
|
||||
lpszUrl += dwLen;
|
||||
}
|
||||
|
||||
*lpszUrl = '\0';
|
||||
|
||||
return TRUE;
|
||||
@@ -3818,25 +3732,6 @@ DWORD WINAPI InternetConfirmZoneCrossingW( HWND hWnd, LPWSTR szUrlPrev, LPWSTR s
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* PrivacySetZonePreferenceW (WININET.@)
|
||||
*/
|
||||
DWORD WINAPI PrivacySetZonePreferenceW( DWORD zone, DWORD type, DWORD template, LPCWSTR preference )
|
||||
{
|
||||
FIXME( "%x %x %x %s: stub\n", zone, type, template, debugstr_w(preference) );
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* PrivacyGetZonePreferenceW (WININET.@)
|
||||
*/
|
||||
DWORD WINAPI PrivacyGetZonePreferenceW( DWORD zone, DWORD type, LPDWORD template,
|
||||
LPWSTR preference, LPDWORD length )
|
||||
{
|
||||
FIXME( "%x %x: stub\n", zone, type );
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD WINAPI InternetDialA( HWND hwndParent, LPSTR lpszConnectoid, DWORD dwFlags,
|
||||
DWORD_PTR* lpdwConnection, DWORD dwReserved )
|
||||
{
|
||||
|
@@ -42,17 +42,29 @@
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
#if !defined(__MINGW32__) && !defined(_MSC_VER)
|
||||
#if defined(__MINGW32__) || defined (_MSC_VER)
|
||||
#include "ws2tcpip.h"
|
||||
#ifndef MSG_WAITALL
|
||||
#define MSG_WAITALL 0
|
||||
#endif
|
||||
#else
|
||||
#define closesocket close
|
||||
#define ioctlsocket ioctl
|
||||
#endif /* __MINGW32__ */
|
||||
|
||||
/* ReactOS-specific definitions */
|
||||
#undef CP_UNIXCP
|
||||
#define CP_UNIXCP CP_THREAD_ACP
|
||||
|
||||
/* used for netconnection.c stuff */
|
||||
typedef struct
|
||||
{
|
||||
BOOL useSSL;
|
||||
int socketFD;
|
||||
void *ssl_s;
|
||||
char *peek_msg;
|
||||
char *peek_msg_mem;
|
||||
size_t peek_len;
|
||||
} WININET_NETCONNECTION;
|
||||
|
||||
static inline LPWSTR WININET_strdupW( LPCWSTR str )
|
||||
@@ -121,7 +133,6 @@ typedef struct {
|
||||
DWORD (*SetOption)(WININETHANDLEHEADER*,DWORD,void*,DWORD);
|
||||
DWORD (*ReadFile)(WININETHANDLEHEADER*,void*,DWORD,DWORD*);
|
||||
DWORD (*ReadFileExA)(WININETHANDLEHEADER*,INTERNET_BUFFERSA*,DWORD,DWORD_PTR);
|
||||
DWORD (*ReadFileExW)(WININETHANDLEHEADER*,INTERNET_BUFFERSW*,DWORD,DWORD_PTR);
|
||||
BOOL (*WriteFile)(WININETHANDLEHEADER*,const void*,DWORD,DWORD*);
|
||||
DWORD (*QueryDataAvailable)(WININETHANDLEHEADER*,DWORD*,DWORD,DWORD_PTR);
|
||||
DWORD (*FindNextFileW)(WININETHANDLEHEADER*,void*);
|
||||
@@ -195,18 +206,12 @@ typedef struct
|
||||
LPWSTR lpszStatusText;
|
||||
DWORD dwContentLength; /* total number of bytes to be read */
|
||||
DWORD dwContentRead; /* bytes of the content read so far */
|
||||
DWORD dwBytesToWrite;
|
||||
DWORD dwBytesWritten;
|
||||
HTTPHEADERW *pCustHeaders;
|
||||
DWORD nCustHeaders;
|
||||
HANDLE hCacheFile;
|
||||
LPWSTR lpszCacheFile;
|
||||
struct HttpAuthInfo *pAuthInfo;
|
||||
struct HttpAuthInfo *pProxyAuthInfo;
|
||||
BOOL read_chunked; /* are we reading in chunked mode? */
|
||||
DWORD read_pos; /* current read position in read_buf */
|
||||
DWORD read_size; /* valid data size in read_buf */
|
||||
char read_buf[4096]; /* buffer for already read but not returned data */
|
||||
} WININETHTTPREQW, *LPWININETHTTPREQW;
|
||||
|
||||
|
||||
@@ -292,12 +297,6 @@ struct WORKREQ_HTTPSENDREQUESTW
|
||||
BOOL bEndRequest;
|
||||
};
|
||||
|
||||
struct WORKREQ_HTTPENDREQUESTW
|
||||
{
|
||||
DWORD dwFlags;
|
||||
DWORD_PTR dwContext;
|
||||
};
|
||||
|
||||
struct WORKREQ_SENDCALLBACK
|
||||
{
|
||||
DWORD_PTR dwContext;
|
||||
@@ -321,11 +320,6 @@ struct WORKREQ_INTERNETREADFILEEXA
|
||||
LPINTERNET_BUFFERSA lpBuffersOut;
|
||||
};
|
||||
|
||||
struct WORKREQ_INTERNETREADFILEEXW
|
||||
{
|
||||
LPINTERNET_BUFFERSW lpBuffersOut;
|
||||
};
|
||||
|
||||
typedef struct WORKREQ
|
||||
{
|
||||
void (*asyncproc)(struct WORKREQ*);
|
||||
@@ -344,11 +338,9 @@ typedef struct WORKREQ
|
||||
struct WORKREQ_FTPRENAMEFILEW FtpRenameFileW;
|
||||
struct WORKREQ_FTPFINDNEXTW FtpFindNextW;
|
||||
struct WORKREQ_HTTPSENDREQUESTW HttpSendRequestW;
|
||||
struct WORKREQ_HTTPENDREQUESTW HttpEndRequestW;
|
||||
struct WORKREQ_SENDCALLBACK SendCallback;
|
||||
struct WORKREQ_INTERNETOPENURLW InternetOpenUrlW;
|
||||
struct WORKREQ_INTERNETOPENURLW InternetOpenUrlW;
|
||||
struct WORKREQ_INTERNETREADFILEEXA InternetReadFileExA;
|
||||
struct WORKREQ_INTERNETREADFILEEXW InternetReadFileExW;
|
||||
} u;
|
||||
|
||||
} WORKREQUEST, *LPWORKREQUEST;
|
||||
@@ -389,6 +381,7 @@ INTERNETAPI HINTERNET WINAPI HTTP_HttpOpenRequestW(LPWININETHTTPSESSIONW lpwhs,
|
||||
LPCWSTR lpszVerb, LPCWSTR lpszObjectName, LPCWSTR lpszVersion,
|
||||
LPCWSTR lpszReferrer , LPCWSTR *lpszAcceptTypes,
|
||||
DWORD dwFlags, DWORD_PTR dwContext);
|
||||
BOOL HTTP_FinishedReading(LPWININETHTTPREQW lpwhr);
|
||||
|
||||
VOID SendAsyncCallback(LPWININETHANDLEHEADER hdr, DWORD_PTR dwContext,
|
||||
DWORD dwInternetStatus, LPVOID lpvStatusInfo,
|
||||
@@ -398,6 +391,8 @@ VOID INTERNET_SendCallback(LPWININETHANDLEHEADER hdr, DWORD_PTR dwContext,
|
||||
DWORD dwInternetStatus, LPVOID lpvStatusInfo,
|
||||
DWORD dwStatusInfoLength);
|
||||
|
||||
LPHTTPHEADERW HTTP_GetHeader(LPWININETHTTPREQW lpwhr, LPCWSTR header);
|
||||
|
||||
BOOL NETCON_connected(WININET_NETCONNECTION *connection);
|
||||
BOOL NETCON_init(WININET_NETCONNECTION *connnection, BOOL useSSL);
|
||||
BOOL NETCON_create(WININET_NETCONNECTION *connection, int domain,
|
||||
@@ -411,6 +406,7 @@ BOOL NETCON_send(WININET_NETCONNECTION *connection, const void *msg, size_t len,
|
||||
BOOL NETCON_recv(WININET_NETCONNECTION *connection, void *buf, size_t len, int flags,
|
||||
int *recvd /* out */);
|
||||
BOOL NETCON_query_data_available(WININET_NETCONNECTION *connection, DWORD *available);
|
||||
BOOL NETCON_getNextLine(WININET_NETCONNECTION *connection, LPSTR lpszBuffer, LPDWORD dwBuffer);
|
||||
LPCVOID NETCON_GetCert(WININET_NETCONNECTION *connection);
|
||||
DWORD NETCON_set_timeout(WININET_NETCONNECTION *connection, BOOL send, int value);
|
||||
|
||||
|
@@ -23,10 +23,6 @@
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#if defined(__MINGW32__) || defined (_MSC_VER)
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#ifdef HAVE_POLL_H
|
||||
#include <poll.h>
|
||||
@@ -37,12 +33,10 @@
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_FILIO_H
|
||||
# include <sys/filio.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
@@ -61,6 +55,9 @@
|
||||
#undef FAR
|
||||
#undef DSA
|
||||
#endif
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
@@ -118,18 +115,17 @@ MAKE_FUNCPTR(SSL_connect);
|
||||
MAKE_FUNCPTR(SSL_shutdown);
|
||||
MAKE_FUNCPTR(SSL_write);
|
||||
MAKE_FUNCPTR(SSL_read);
|
||||
MAKE_FUNCPTR(SSL_pending);
|
||||
MAKE_FUNCPTR(SSL_get_verify_result);
|
||||
MAKE_FUNCPTR(SSL_get_peer_certificate);
|
||||
MAKE_FUNCPTR(SSL_CTX_get_timeout);
|
||||
MAKE_FUNCPTR(SSL_CTX_set_timeout);
|
||||
MAKE_FUNCPTR(SSL_CTX_set_default_verify_paths);
|
||||
MAKE_FUNCPTR(i2d_X509);
|
||||
|
||||
/* OpenSSL's libcrypto functions that we use */
|
||||
MAKE_FUNCPTR(BIO_new_fp);
|
||||
MAKE_FUNCPTR(ERR_get_error);
|
||||
MAKE_FUNCPTR(ERR_error_string);
|
||||
MAKE_FUNCPTR(i2d_X509);
|
||||
#undef MAKE_FUNCPTR
|
||||
|
||||
#endif
|
||||
@@ -182,12 +178,12 @@ BOOL NETCON_init(WININET_NETCONNECTION *connection, BOOL useSSL)
|
||||
DYNSSL(SSL_shutdown);
|
||||
DYNSSL(SSL_write);
|
||||
DYNSSL(SSL_read);
|
||||
DYNSSL(SSL_pending);
|
||||
DYNSSL(SSL_get_verify_result);
|
||||
DYNSSL(SSL_get_peer_certificate);
|
||||
DYNSSL(SSL_CTX_get_timeout);
|
||||
DYNSSL(SSL_CTX_set_timeout);
|
||||
DYNSSL(SSL_CTX_set_default_verify_paths);
|
||||
DYNSSL(i2d_X509);
|
||||
#undef DYNSSL
|
||||
|
||||
#define DYNCRYPTO(x) \
|
||||
@@ -201,7 +197,6 @@ BOOL NETCON_init(WININET_NETCONNECTION *connection, BOOL useSSL)
|
||||
DYNCRYPTO(BIO_new_fp);
|
||||
DYNCRYPTO(ERR_get_error);
|
||||
DYNCRYPTO(ERR_error_string);
|
||||
DYNCRYPTO(i2d_X509);
|
||||
#undef DYNCRYPTO
|
||||
|
||||
pSSL_library_init();
|
||||
@@ -209,6 +204,8 @@ BOOL NETCON_init(WININET_NETCONNECTION *connection, BOOL useSSL)
|
||||
pBIO_new_fp(stderr, BIO_NOCLOSE); /* FIXME: should use winedebug stuff */
|
||||
|
||||
meth = pSSLv23_method();
|
||||
connection->peek_msg = NULL;
|
||||
connection->peek_msg_mem = NULL;
|
||||
#else
|
||||
FIXME("can't use SSL, not compiled in.\n");
|
||||
INTERNET_SetLastError(ERROR_INTERNET_SECURITY_CHANNEL_ERROR);
|
||||
@@ -329,6 +326,11 @@ BOOL NETCON_close(WININET_NETCONNECTION *connection)
|
||||
#ifdef SONAME_LIBSSL
|
||||
if (connection->useSSL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(),0,connection->peek_msg_mem);
|
||||
connection->peek_msg = NULL;
|
||||
connection->peek_msg_mem = NULL;
|
||||
connection->peek_len = 0;
|
||||
|
||||
pSSL_shutdown(connection->ssl_s);
|
||||
pSSL_free(connection->ssl_s);
|
||||
connection->ssl_s = NULL;
|
||||
@@ -536,8 +538,55 @@ BOOL NETCON_recv(WININET_NETCONNECTION *connection, void *buf, size_t len, int f
|
||||
else
|
||||
{
|
||||
#ifdef SONAME_LIBSSL
|
||||
*recvd = pSSL_read(connection->ssl_s, buf, len);
|
||||
return *recvd > 0 || !len;
|
||||
if (flags & ~(MSG_PEEK|MSG_WAITALL))
|
||||
FIXME("SSL_read does not support the following flag: %08x\n", flags);
|
||||
|
||||
/* this ugly hack is all for MSG_PEEK. eww gross */
|
||||
if (flags & MSG_PEEK && !connection->peek_msg)
|
||||
{
|
||||
connection->peek_msg = connection->peek_msg_mem = HeapAlloc(GetProcessHeap(), 0, (sizeof(char) * len) + 1);
|
||||
}
|
||||
else if (flags & MSG_PEEK && connection->peek_msg)
|
||||
{
|
||||
if (len < connection->peek_len)
|
||||
FIXME("buffer isn't big enough. Do the expect us to wrap?\n");
|
||||
*recvd = min(len, connection->peek_len);
|
||||
memcpy(buf, connection->peek_msg, *recvd);
|
||||
return TRUE;
|
||||
}
|
||||
else if (connection->peek_msg)
|
||||
{
|
||||
*recvd = min(len, connection->peek_len);
|
||||
memcpy(buf, connection->peek_msg, *recvd);
|
||||
connection->peek_len -= *recvd;
|
||||
connection->peek_msg += *recvd;
|
||||
if (connection->peek_len == 0)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, connection->peek_msg_mem);
|
||||
connection->peek_msg_mem = NULL;
|
||||
connection->peek_msg = NULL;
|
||||
}
|
||||
/* check if we got enough data from the peek buffer */
|
||||
if (!(flags & MSG_WAITALL) || (*recvd == len))
|
||||
return TRUE;
|
||||
/* otherwise, fall through */
|
||||
}
|
||||
*recvd += pSSL_read(connection->ssl_s, (char*)buf + *recvd, len - *recvd);
|
||||
if (flags & MSG_PEEK) /* must copy stuff into buffer */
|
||||
{
|
||||
connection->peek_len = *recvd;
|
||||
if (!*recvd)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, connection->peek_msg_mem);
|
||||
connection->peek_msg_mem = NULL;
|
||||
connection->peek_msg = NULL;
|
||||
}
|
||||
else
|
||||
memcpy(connection->peek_msg, buf, *recvd);
|
||||
}
|
||||
if (*recvd < 1 && len)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
@@ -555,9 +604,13 @@ BOOL NETCON_query_data_available(WININET_NETCONNECTION *connection, DWORD *avail
|
||||
if (!NETCON_connected(connection))
|
||||
return FALSE;
|
||||
|
||||
#ifdef SONAME_LIBSSL
|
||||
if (connection->peek_msg) *available = connection->peek_len;
|
||||
#endif
|
||||
|
||||
#ifdef FIONREAD
|
||||
if (!connection->useSSL)
|
||||
{
|
||||
#ifdef FIONREAD
|
||||
int unread;
|
||||
int retval = ioctlsocket(connection->socketFD, FIONREAD, &unread);
|
||||
if (!retval)
|
||||
@@ -565,17 +618,115 @@ BOOL NETCON_query_data_available(WININET_NETCONNECTION *connection, DWORD *avail
|
||||
TRACE("%d bytes of queued, but unread data\n", unread);
|
||||
*available += unread;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* NETCON_getNextLine
|
||||
*/
|
||||
BOOL NETCON_getNextLine(WININET_NETCONNECTION *connection, LPSTR lpszBuffer, LPDWORD dwBuffer)
|
||||
{
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
if (!NETCON_connected(connection)) return FALSE;
|
||||
|
||||
if (!connection->useSSL)
|
||||
{
|
||||
struct timeval tv;
|
||||
fd_set infd;
|
||||
BOOL bSuccess = FALSE;
|
||||
DWORD nRecv = 0;
|
||||
|
||||
FD_ZERO(&infd);
|
||||
FD_SET(connection->socketFD, &infd);
|
||||
tv.tv_sec=RESPONSE_TIMEOUT;
|
||||
tv.tv_usec=0;
|
||||
|
||||
while (nRecv < *dwBuffer)
|
||||
{
|
||||
if (select(connection->socketFD+1,&infd,NULL,NULL,&tv) > 0)
|
||||
{
|
||||
if (recv(connection->socketFD, &lpszBuffer[nRecv], 1, 0) <= 0)
|
||||
{
|
||||
INTERNET_SetLastError(sock_get_error(errno));
|
||||
goto lend;
|
||||
}
|
||||
|
||||
if (lpszBuffer[nRecv] == '\n')
|
||||
{
|
||||
bSuccess = TRUE;
|
||||
break;
|
||||
}
|
||||
if (lpszBuffer[nRecv] != '\r')
|
||||
nRecv++;
|
||||
}
|
||||
else
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_INTERNET_TIMEOUT);
|
||||
goto lend;
|
||||
}
|
||||
}
|
||||
|
||||
lend: /* FIXME: don't use labels */
|
||||
if (bSuccess)
|
||||
{
|
||||
lpszBuffer[nRecv++] = '\0';
|
||||
*dwBuffer = nRecv;
|
||||
TRACE(":%u %s\n", nRecv, lpszBuffer);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef SONAME_LIBSSL
|
||||
*available = pSSL_pending(connection->ssl_s);
|
||||
long prev_timeout;
|
||||
DWORD nRecv = 0;
|
||||
BOOL success = TRUE;
|
||||
|
||||
prev_timeout = pSSL_CTX_get_timeout(ctx);
|
||||
pSSL_CTX_set_timeout(ctx, RESPONSE_TIMEOUT);
|
||||
|
||||
while (nRecv < *dwBuffer)
|
||||
{
|
||||
int recv = 1;
|
||||
if (!NETCON_recv(connection, &lpszBuffer[nRecv], 1, 0, &recv))
|
||||
{
|
||||
INTERNET_SetLastError(ERROR_CONNECTION_ABORTED);
|
||||
success = FALSE;
|
||||
}
|
||||
|
||||
if (lpszBuffer[nRecv] == '\n')
|
||||
{
|
||||
success = TRUE;
|
||||
break;
|
||||
}
|
||||
if (lpszBuffer[nRecv] != '\r')
|
||||
nRecv++;
|
||||
}
|
||||
|
||||
pSSL_CTX_set_timeout(ctx, prev_timeout);
|
||||
if (success)
|
||||
{
|
||||
lpszBuffer[nRecv++] = '\0';
|
||||
*dwBuffer = nRecv;
|
||||
TRACE("_SSL:%u %s\n", nRecv, lpszBuffer);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
LPCVOID NETCON_GetCert(WININET_NETCONNECTION *connection)
|
||||
{
|
||||
#ifdef SONAME_LIBSSL
|
||||
@@ -637,7 +788,7 @@ DWORD NETCON_set_timeout(WININET_NETCONNECTION *connection, BOOL send, int value
|
||||
tv.tv_usec = (value % 1000) * 1000;
|
||||
|
||||
result = setsockopt(connection->socketFD, SOL_SOCKET,
|
||||
send ? SO_SNDTIMEO : SO_RCVTIMEO, (void*)&tv,
|
||||
send ? SO_SNDTIMEO : SO_RCVTIMEO, &tv,
|
||||
sizeof(tv));
|
||||
|
||||
if (result == -1)
|
||||
|
@@ -692,7 +692,6 @@ static LPURLCACHE_HEADER URLCacheContainer_LockIndex(URLCACHECONTAINER * pContai
|
||||
* of the memory mapped file */
|
||||
if (pHeader->dwFileSize != pContainer->file_size)
|
||||
{
|
||||
UnmapViewOfFile( pHeader );
|
||||
URLCacheContainer_CloseIndex(pContainer);
|
||||
error = URLCacheContainer_OpenIndex(pContainer);
|
||||
if (error != ERROR_SUCCESS)
|
||||
@@ -3624,26 +3623,10 @@ BOOL WINAPI IsUrlCacheEntryExpiredW( LPCWSTR url, DWORD dwFlags, FILETIME* pftLa
|
||||
/***********************************************************************
|
||||
* GetDiskInfoA (WININET.@)
|
||||
*/
|
||||
BOOL WINAPI GetDiskInfoA(PCSTR path, PDWORD cluster_size, PDWORDLONG free, PDWORDLONG total)
|
||||
DWORD WINAPI GetDiskInfoA(void *p0, void *p1, void *p2, void *p3)
|
||||
{
|
||||
BOOL ret;
|
||||
ULARGE_INTEGER bytes_free, bytes_total;
|
||||
|
||||
TRACE("(%s, %p, %p, %p)\n", debugstr_a(path), cluster_size, free, total);
|
||||
|
||||
if (!path)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((ret = GetDiskFreeSpaceExA(path, NULL, &bytes_total, &bytes_free)))
|
||||
{
|
||||
if (cluster_size) *cluster_size = 1;
|
||||
if (free) *free = bytes_free.QuadPart;
|
||||
if (total) *total = bytes_total.QuadPart;
|
||||
}
|
||||
return ret;
|
||||
FIXME("(%p, %p, %p, %p)\n", p0, p1, p2, p3);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
@@ -3654,12 +3637,3 @@ DWORD WINAPI RegisterUrlCacheNotification(LPVOID a, DWORD b, DWORD c, DWORD d, D
|
||||
FIXME("(%p %x %x %x %x %x)\n", a, b, c, d, e, f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* IncrementUrlCacheHeaderData (WININET.@)
|
||||
*/
|
||||
BOOL WINAPI IncrementUrlCacheHeaderData(DWORD index, LPDWORD data)
|
||||
{
|
||||
FIXME("(%u, %p)\n", index, data);
|
||||
return FALSE;
|
||||
}
|
||||
|
@@ -25,10 +25,6 @@
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#if defined(__MINGW32__) || defined (_MSC_VER)
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -44,8 +40,6 @@
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(wininet);
|
||||
|
||||
#ifndef HAVE_GETADDRINFO
|
||||
|
||||
/* critical section to protect non-reentrant gethostbyname() */
|
||||
static CRITICAL_SECTION cs_gethostbyname;
|
||||
static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||
@@ -56,8 +50,6 @@ static CRITICAL_SECTION_DEBUG critsect_debug =
|
||||
};
|
||||
static CRITICAL_SECTION cs_gethostbyname = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||
|
||||
#endif
|
||||
|
||||
#define TIME_STRING_LEN 30
|
||||
|
||||
time_t ConvertTimeString(LPCWSTR asctime)
|
||||
@@ -150,12 +142,7 @@ BOOL GetAddress(LPCWSTR lpszServerName, INTERNET_PORT nServerPort,
|
||||
WCHAR *found;
|
||||
char *name;
|
||||
int len, sz;
|
||||
#ifdef HAVE_GETADDRINFO
|
||||
struct addrinfo *res, hints;
|
||||
int ret;
|
||||
#else
|
||||
struct hostent *phe;
|
||||
#endif
|
||||
|
||||
TRACE("%s\n", debugstr_w(lpszServerName));
|
||||
|
||||
@@ -171,45 +158,27 @@ BOOL GetAddress(LPCWSTR lpszServerName, INTERNET_PORT nServerPort,
|
||||
len = strlenW(lpszServerName);
|
||||
|
||||
sz = WideCharToMultiByte( CP_UNIXCP, 0, lpszServerName, len, NULL, 0, NULL, NULL );
|
||||
if (!(name = HeapAlloc( GetProcessHeap(), 0, sz + 1 ))) return FALSE;
|
||||
name = HeapAlloc(GetProcessHeap(), 0, sz+1);
|
||||
WideCharToMultiByte( CP_UNIXCP, 0, lpszServerName, len, name, sz, NULL, NULL );
|
||||
name[sz] = 0;
|
||||
|
||||
#ifdef HAVE_GETADDRINFO
|
||||
memset( &hints, 0, sizeof(struct addrinfo) );
|
||||
hints.ai_family = AF_INET;
|
||||
|
||||
ret = getaddrinfo( name, NULL, &hints, &res );
|
||||
HeapFree( GetProcessHeap(), 0, name );
|
||||
if (ret != 0)
|
||||
{
|
||||
TRACE("failed to get address of %s (%s)\n", debugstr_w(lpszServerName), gai_strerror(ret));
|
||||
return FALSE;
|
||||
}
|
||||
memset( psa, 0, sizeof(struct sockaddr_in) );
|
||||
memcpy( &psa->sin_addr, &((struct sockaddr_in *)res->ai_addr)->sin_addr, sizeof(struct in_addr) );
|
||||
psa->sin_family = res->ai_family;
|
||||
psa->sin_port = htons(nServerPort);
|
||||
|
||||
freeaddrinfo( res );
|
||||
#else
|
||||
EnterCriticalSection( &cs_gethostbyname );
|
||||
phe = gethostbyname(name);
|
||||
HeapFree( GetProcessHeap(), 0, name );
|
||||
|
||||
if (NULL == phe)
|
||||
{
|
||||
TRACE("failed to get address of %s (%d)\n", debugstr_w(lpszServerName), h_errno);
|
||||
TRACE("Failed to get hostname: (%s)\n", debugstr_w(lpszServerName) );
|
||||
LeaveCriticalSection( &cs_gethostbyname );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
memset(psa,0,sizeof(struct sockaddr_in));
|
||||
memcpy((char *)&psa->sin_addr, phe->h_addr, phe->h_length);
|
||||
psa->sin_family = phe->h_addrtype;
|
||||
psa->sin_port = htons(nServerPort);
|
||||
|
||||
LeaveCriticalSection( &cs_gethostbyname );
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@@ -18,7 +18,6 @@
|
||||
<library>secur32</library>
|
||||
<library>crypt32</library>
|
||||
<library>ws2_32</library>
|
||||
<library>pseh</library>
|
||||
<file>cookie.c</file>
|
||||
<file>dialogs.c</file>
|
||||
<file>ftp.c</file>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
101 stub -noname DoConnectoidsExist
|
||||
102 stdcall -noname GetDiskInfoA(str ptr ptr ptr)
|
||||
102 stub -noname GetDiskInfoA
|
||||
103 stub -noname PerformOperationOverUrlCacheA
|
||||
104 stub -noname HttpCheckDavComplianceA
|
||||
105 stub -noname HttpCheckDavComplianceW
|
||||
@@ -9,7 +9,7 @@
|
||||
111 stub -noname ExportCookieFileW
|
||||
112 stub -noname IsProfilesEnabled
|
||||
116 stub -noname IsDomainlegalCookieDomainA
|
||||
117 stdcall -noname IsDomainLegalCookieDomainW(wstr wstr)
|
||||
117 stub -noname IsDomainLegalCookieDomainW
|
||||
118 stub -noname FindP3PPolicySymbol
|
||||
120 stub -noname MapResourceToPolicy
|
||||
121 stub -noname GetP3PPolicy
|
||||
@@ -109,7 +109,7 @@
|
||||
@ stdcall HttpSendRequestExA(long ptr ptr long long)
|
||||
@ stdcall HttpSendRequestExW(long ptr ptr long long)
|
||||
@ stdcall HttpSendRequestW(ptr wstr long ptr long)
|
||||
@ stdcall IncrementUrlCacheHeaderData(long ptr)
|
||||
@ stub IncrementUrlCacheHeaderData
|
||||
@ stub InternetAlgIdToStringA
|
||||
@ stub InternetAlgIdToStringW
|
||||
@ stdcall InternetAttemptConnect(long)
|
||||
@@ -213,10 +213,10 @@
|
||||
@ stdcall IsUrlCacheEntryExpiredW(wstr long ptr)
|
||||
@ stub LoadUrlCacheContent
|
||||
@ stub ParseX509EncodedCertificateForListBoxEntry
|
||||
@ stdcall PrivacyGetZonePreferenceW(long long ptr ptr ptr)
|
||||
@ stdcall PrivacySetZonePreferenceW(long long long wstr)
|
||||
@ stub PrivacyGetZonePreferenceW # (long long ptr ptr ptr)
|
||||
@ stub PrivacySetZonePreferenceW # (long long long wstr)
|
||||
@ stdcall ReadUrlCacheEntryStream(ptr long ptr ptr long)
|
||||
@ stdcall RegisterUrlCacheNotification(ptr long long long long long)
|
||||
@ stub RegisterUrlCacheNotification
|
||||
@ stdcall ResumeSuspendedDownload(long long)
|
||||
@ stdcall RetrieveUrlCacheEntryFileA(str ptr ptr long)
|
||||
@ stdcall RetrieveUrlCacheEntryFileW(wstr ptr ptr long)
|
||||
|
@@ -557,31 +557,44 @@ BUSMASTER_CONTROLLER_INFORMATION const BusMasterAdapters[] = {
|
||||
PCI_DEV_HW_SPEC_BM( 2651, 8086, 0x00, ATA_SA150, "Intel ICH6" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2652, 8086, 0x00, ATA_SA150, "Intel ICH6" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2653, 8086, 0x00, ATA_SA150, "Intel ICH6M" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 27df, 8086, 0x00, ATA_UDMA5, "Intel ICH7" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c0, 8086, 0x00, ATA_SA300, "Intel ICH7" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c0, 8086, 0x00, ATA_UDMA5, "Intel ICH7" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c1, 8086, 0x00, ATA_SA300, "Intel ICH7" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c3, 8086, 0x00, ATA_SA300, "Intel ICH7" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c4, 8086, 0x00, ATA_SA300, "Intel ICH7M" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c5, 8086, 0x00, ATA_SA300, "Intel ICH7M" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c6, 8086, 0x00, ATA_SA300, "Intel ICH7M" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c4, 8086, 0x00, ATA_UDMA5, "Intel ICH7M" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c5, 8086, 0x00, ATA_SA150, "Intel ICH7M" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 27c6, 8086, 0x00, ATA_SA150, "Intel ICH7M" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 27df, 8086, 0x00, ATA_UDMA5, "Intel ICH7" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 269e, 8086, 0x00, ATA_UDMA5, "Intel 63XXESB2" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2680, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2681, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2682, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2683, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2820, 8086, 0x00, ATA_SA300, "Intel ICH8" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2820, 8086, 0x00, ATA_UDMA5, "Intel ICH8" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2821, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2822, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2824, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2825, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
// PCI_DEV_HW_SPEC_BM( 2828, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2825, 8086, 0x00, ATA_UDMA5, "Intel ICH8" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2828, 8086, 0x00, ATA_UDMA5, "Intel ICH8M" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2829, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 282a, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
// PCI_DEV_HW_SPEC_BM( 2850, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA ),
|
||||
PCI_DEV_HW_SPEC_BM( 2920, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2926, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2923, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2850, 8086, 0x00, ATA_UDMA5, "Intel ICH8M" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2920, 8086, 0x00, ATA_UDMA5, "Intel ICH9R/DO/DH", 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2921, 8086, 0x00, ATA_UDMA5, "Intel ICH9" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2922, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2923, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 2926, 8086, 0x00, ATA_UDMA5, "Intel ICH9" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2928, 8086, 0x00, ATA_UDMA5, "Intel ICH9M/M-E" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 2929, 8086, 0x00, ATA_SA300, "Intel ICH9M/M-E" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 292d, 8086, 0x00, ATA_UDMA5, "Intel ICH9M/M-E" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 3a00, 8086, 0x00, ATA_UDMA5, "Intel ICH10" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 3a02, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 3a03, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 3a06, 8086, 0x00, ATA_UDMA5, "Intel ICH10" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 3a20, 8086, 0x00, ATA_UDMA5, "Intel ICH10" , 0 ),
|
||||
PCI_DEV_HW_SPEC_BM( 3a22, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 3a23, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
|
||||
PCI_DEV_HW_SPEC_BM( 3a26, 8086, 0x00, ATA_UDMA5, "Intel ICH10" , 0 ),
|
||||
|
||||
// PCI_DEV_HW_SPEC_BM( 3200, 8086, 0x00, ATA_SA150, "Intel 31244" , UNIATA_SATA ),
|
||||
/*
|
||||
PCI_DEV_HW_SPEC_BM( 5040, 11ab, 0x00, ATA_SA150, "Marvell 88SX5040" , UNIATA_SATA ),
|
||||
|
@@ -18,13 +18,13 @@
|
||||
#define __VERSION_H
|
||||
|
||||
#define KERNEL_VERSION_MAJOR 0
|
||||
#define KERNEL_VERSION_MINOR 4
|
||||
#define KERNEL_VERSION_PATCH_LEVEL 0
|
||||
#define KERNEL_VERSION_MINOR 3
|
||||
#define KERNEL_VERSION_PATCH_LEVEL 10
|
||||
|
||||
#define COPYRIGHT_YEAR "2009"
|
||||
|
||||
/* KERNEL_VERSION_BUILD_TYPE is L"SVN", L"RC1", L"RC2" or L"" (for the release) */
|
||||
#define KERNEL_VERSION_BUILD_TYPE L"SVN"
|
||||
#define KERNEL_VERSION_BUILD_TYPE L""
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -22,11 +22,4 @@
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
</directory>
|
||||
<directory name="windows">
|
||||
<xi:include href="windows/directory.rbuild">
|
||||
<xi:fallback>
|
||||
<xi:include href="empty.rbuild" />
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
</directory>
|
||||
</group>
|
||||
|
@@ -16,8 +16,7 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
/* $Id$
|
||||
*
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* PURPOSE: GDI Internal Objects
|
||||
|
Reference in New Issue
Block a user