[PATCH] wininet: Add support for FormatMessage

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Thu Mar 29 04:30:08 CDT 2018


Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
 dlls/wininet/Makefile.in      |  3 ++
 dlls/wininet/tests/internet.c | 60 ++++++++++++++++++++++++++++++++
 dlls/wininet/winineterror.mc  | 81 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 144 insertions(+)
 create mode 100644 dlls/wininet/winineterror.mc

diff --git a/dlls/wininet/Makefile.in b/dlls/wininet/Makefile.in
index be69ea53b0..6789c9d336 100644
--- a/dlls/wininet/Makefile.in
+++ b/dlls/wininet/Makefile.in
@@ -17,3 +17,6 @@ C_SRCS = \
 	utility.c
 
 RC_SRCS = wininet.rc
+
+MC_SRCS = \
+	winineterror.mc
diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c
index dd15a4b8a0..123a1becfd 100644
--- a/dlls/wininet/tests/internet.c
+++ b/dlls/wininet/tests/internet.c
@@ -1797,6 +1797,65 @@ todo_wine
     ok(!buffer[0], "Expected 0 bytes, got %u\n", lstrlenW(buffer));
 }
 
+static void test_format_message(HMODULE hdll)
+{
+    DWORD ret;
+    CHAR out[0x100] = {0};
+
+    /* These messages come from wininet and not the system. */
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM , NULL, ERROR_INTERNET_TIMEOUT,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret == 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_TIMEOUT,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_INTERNAL_ERROR,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_INVALID_URL,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_UNRECOGNIZED_SCHEME,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_NAME_NOT_RESOLVED,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_INVALID_OPERATION,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0 || broken(!ret) /* XP, w2k3 */, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_OPERATION_CANCELLED,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_ITEM_NOT_FOUND,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_CANNOT_CONNECT,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_CONNECTION_ABORTED,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_SEC_CERT_DATE_INVALID,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+
+    ret = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE, hdll, ERROR_INTERNET_SEC_CERT_CN_INVALID,
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), out, sizeof(out)/sizeof(CHAR), NULL);
+    ok(ret != 0, "FormatMessageA returned %d\n", ret);
+}
+
 /* ############################### */
 
 START_TEST(internet)
@@ -1863,4 +1922,5 @@ START_TEST(internet)
 
     test_InternetSetOption();
     test_end_browser_session();
+    test_format_message(hdll);
 }
diff --git a/dlls/wininet/winineterror.mc b/dlls/wininet/winineterror.mc
new file mode 100644
index 0000000000..703a4dd30e
--- /dev/null
+++ b/dlls/wininet/winineterror.mc
@@ -0,0 +1,81 @@
+;
+; Copyright 2018 Alsitair Leslie-Hughes
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2.1 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+;
+
+LanguageNames=(ENU=0x409:winerr)
+
+MessageId=12002
+SymbolicName=ERROR_INTERNET_TIMEOUT
+Language=ENU
+The request has timed out.
+.
+MessageId=12004
+SymbolicName=ERROR_INTERNET_INTERNAL_ERROR
+Language=ENU
+An internal error has occurred.
+.
+MessageId=12005
+SymbolicName=ERROR_INTERNET_INVALID_URL
+Language=ENU
+The URL is invalid.
+.
+MessageId=12006
+SymbolicName=ERROR_INTERNET_UNRECOGNIZED_SCHEME
+Language=ENU
+The URL scheme could not be recognized or is not supported.
+.
+MessageId=12007
+SymbolicName=ERROR_INTERNET_NAME_NOT_RESOLVED
+Language=ENU
+The server name could not be resolved.
+.
+MessageId=12016
+SymbolicName=ERROR_INTERNET_INVALID_OPERATION
+Language=ENU
+The requested operation is invalid.
+.
+MessageId=12017
+SymbolicName=ERROR_INTERNET_OPERATION_CANCELLED
+Language=ENU
+The operation was canceled, usually because the handle on which the request was operating was closed before the operation completed.
+.
+MessageId=12028
+SymbolicName=ERROR_INTERNET_ITEM_NOT_FOUND
+Language=ENU
+The requested item could not be located.
+.
+MessageId=12029
+SymbolicName=ERROR_INTERNET_CANNOT_CONNECT
+Language=ENU
+The attempt to connect to the server failed.
+.
+MessageId=12030
+SymbolicName=ERROR_INTERNET_CONNECTION_ABORTED
+Language=ENU
+The connection with the server has been terminated.
+.
+MessageId=12037
+SymbolicName=ERROR_INTERNET_SEC_CERT_DATE_INVALID
+Language=ENU
+SSL certificate date that was received from the server is bad. The certificate is expired.
+.
+MessageId=12038
+SymbolicName=ERROR_INTERNET_SEC_CERT_CN_INVALID
+Language=ENU
+SSL certificate common name (host name field) is incorrect.
+.
+
-- 
2.16.2




More information about the wine-devel mailing list