Thomas Mullaly : urlmon: Partially implemented IUri_GetHost.
Alexandre Julliard
julliard at winehq.org
Fri Jul 23 10:05:43 CDT 2010
Module: wine
Branch: master
Commit: cfc0f97d93ccac3fa11c574978a3d1ff69581d61
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cfc0f97d93ccac3fa11c574978a3d1ff69581d61
Author: Thomas Mullaly <thomas.mullaly at gmail.com>
Date: Thu Jun 24 16:24:48 2010 -0400
urlmon: Partially implemented IUri_GetHost.
---
dlls/urlmon/tests/uri.c | 14 +++++++-------
dlls/urlmon/uri.c | 37 ++++++++++++++++++++++++++++++-------
2 files changed, 37 insertions(+), 14 deletions(-)
diff --git a/dlls/urlmon/tests/uri.c b/dlls/urlmon/tests/uri.c
index 217654c..46b2d64 100644
--- a/dlls/urlmon/tests/uri.c
+++ b/dlls/urlmon/tests/uri.c
@@ -329,7 +329,7 @@ static const uri_properties uri_tests[] = {
{"",S_FALSE,TRUE},
{".txt",S_OK,TRUE},
{"",S_FALSE,TRUE},
- {"127.0.0.1",S_OK,TRUE},
+ {"127.0.0.1",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"/test%20dir/test.txt",S_OK,TRUE},
{"/test%20dir/test.txt",S_OK,TRUE},
@@ -1233,7 +1233,7 @@ static const uri_properties uri_tests[] = {
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
- {"127.0.0.100",S_OK,TRUE},
+ {"127.0.0.100",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"/",S_OK,TRUE},
{"/",S_OK,TRUE},
@@ -1263,7 +1263,7 @@ static const uri_properties uri_tests[] = {
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
- {"127.0.0.0",S_OK,TRUE},
+ {"127.0.0.0",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"/",S_OK,TRUE},
{"/",S_OK,TRUE},
@@ -1293,7 +1293,7 @@ static const uri_properties uri_tests[] = {
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
- {"0.1.226.64",S_OK,TRUE},
+ {"0.1.226.64",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"/",S_OK,TRUE},
{"/",S_OK,TRUE},
@@ -1323,7 +1323,7 @@ static const uri_properties uri_tests[] = {
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
- {"255.255.255.255",S_OK,TRUE},
+ {"255.255.255.255",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"/",S_OK,TRUE},
{"/",S_OK,TRUE},
@@ -1383,7 +1383,7 @@ static const uri_properties uri_tests[] = {
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
- {"4294967295",S_OK,TRUE},
+ {"4294967295",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"/",S_OK,TRUE},
{"/",S_OK,TRUE},
@@ -1413,7 +1413,7 @@ static const uri_properties uri_tests[] = {
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
{"",S_FALSE,TRUE},
- {"127.001",S_OK,TRUE},
+ {"127.001",S_OK,FALSE},
{"",S_FALSE,FALSE},
{"/",S_OK,TRUE},
{"/",S_OK,TRUE},
diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c
index 060b92e..82f48a0 100644
--- a/dlls/urlmon/uri.c
+++ b/dlls/urlmon/uri.c
@@ -1241,6 +1241,22 @@ static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BST
}
switch(uriProp) {
+ case Uri_PROPERTY_HOST:
+ if(This->host_start > -1) {
+ *pbstrProperty = SysAllocStringLen(This->canon_uri+This->host_start, This->host_len);
+ hres = S_OK;
+ } else {
+ /* Canonicalizing/parsing the host of a URI is only partially
+ * implemented, so return E_NOTIMPL for now.
+ */
+ FIXME("(%p)->(%d %p %x) Partially implemented\n", This, uriProp, pbstrProperty, dwFlags);
+ return E_NOTIMPL;
+ }
+
+ if(!(*pbstrProperty))
+ hres = E_OUTOFMEMORY;
+
+ break;
case Uri_PROPERTY_PASSWORD:
if(This->userinfo_split > -1) {
*pbstrProperty = SysAllocStringLen(
@@ -1338,6 +1354,18 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D
}
switch(uriProp) {
+ case Uri_PROPERTY_HOST:
+ if(This->host_start == -1) {
+ /* Canonicalizing/parsing the host of a URI is only partially
+ * implemented, so return E_NOTIMPL for now.
+ */
+ FIXME("(%p)->(%d %p %x) Partially implemented\n", This, uriProp, pcchProperty, dwFlags);
+ return E_NOTIMPL;
+ }
+
+ *pcchProperty = This->host_len;
+ hres = (This->host_start > -1) ? S_OK : S_FALSE;
+ break;
case Uri_PROPERTY_PASSWORD:
*pcchProperty = (This->userinfo_split > -1) ? This->userinfo_len-This->userinfo_split-1 : 0;
hres = (This->userinfo_split > -1) ? S_OK : S_FALSE;
@@ -1483,13 +1511,8 @@ static HRESULT WINAPI Uri_GetFragment(IUri *iface, BSTR *pstrFragment)
static HRESULT WINAPI Uri_GetHost(IUri *iface, BSTR *pstrHost)
{
- Uri *This = URI_THIS(iface);
- FIXME("(%p)->(%p)\n", This, pstrHost);
-
- if(!pstrHost)
- return E_POINTER;
-
- return E_NOTIMPL;
+ TRACE("(%p)->(%p)\n", iface, pstrHost);
+ return Uri_GetPropertyBSTR(iface, Uri_PROPERTY_HOST, pstrHost, 0);
}
static HRESULT WINAPI Uri_GetPassword(IUri *iface, BSTR *pstrPassword)
More information about the wine-cvs
mailing list