Jacek Caban : urlmon: Added text/html filter.

Alexandre Julliard julliard at wine.codeweavers.com
Wed May 31 05:31:32 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 796cf1713d2c9cb5778ff05fe1035da2e62703a7
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=796cf1713d2c9cb5778ff05fe1035da2e62703a7

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue May 30 20:06:02 2006 +0200

urlmon: Added text/html filter.

---

 dlls/urlmon/tests/misc.c  |   18 +++++++++++++++++-
 dlls/urlmon/urlmon_main.c |   23 ++++++++++++++++++++++-
 2 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/dlls/urlmon/tests/misc.c b/dlls/urlmon/tests/misc.c
index 0a1da4a..cbd5a4a 100644
--- a/dlls/urlmon/tests/misc.c
+++ b/dlls/urlmon/tests/misc.c
@@ -350,6 +350,14 @@ static BYTE data3[] = {0,0,0};
 static BYTE data4[] = {'t','e','s',0xfa,'t',' ','d','a','t','a','\n',0,0};
 static BYTE data5[] = {0xa,0xa,0xa,'x',32,'x',0};
 static BYTE data6[] = {0xfa,0xfa,0xfa,0xfa,'\n','\r','\t','x','x','x',1};
+static BYTE data7[] = "<html>blahblah";
+static BYTE data8[] = {'t','e','s',0xfa,'t',' ','<','h','t','m','l','>','d','a','t','a','\n',0,0};
+static BYTE data9[] = {'t','e',0,'s',0xfa,'t',' ','<','h','t','m','l','>','d','a','t','a','\n',0,0};
+static BYTE data10[] = "<HtmL>blahblah";
+static BYTE data11[] = "blah<HTML>blahblah";
+static BYTE data12[] = "blah<HTMLblahblah";
+static BYTE data13[] = "blahHTML>blahblah";
+static BYTE data14[] = "blah<HTMblahblah";
 
 static const struct {
     BYTE *data;
@@ -361,7 +369,15 @@ static const struct {
     {data3, sizeof(data3), mimeAppOctetStream},
     {data4, sizeof(data4), mimeAppOctetStream},
     {data5, sizeof(data5), mimeTextPlain},
-    {data6, sizeof(data6), mimeTextPlain}
+    {data6, sizeof(data6), mimeTextPlain},
+    {data7, sizeof(data7), mimeTextHtml},
+    {data8, sizeof(data8), mimeTextHtml},
+    {data9, sizeof(data9), mimeTextHtml},
+    {data10, sizeof(data10), mimeTextHtml},
+    {data11, sizeof(data11), mimeTextHtml},
+    {data12, sizeof(data12), mimeTextHtml},
+    {data13, sizeof(data13), mimeTextPlain},
+    {data14, sizeof(data14), mimeTextPlain}
 };
 
 static void test_FindMimeFromData(void)
diff --git a/dlls/urlmon/urlmon_main.c b/dlls/urlmon/urlmon_main.c
index 1c6bde5..b121a3c 100644
--- a/dlls/urlmon/urlmon_main.c
+++ b/dlls/urlmon/urlmon_main.c
@@ -28,7 +28,6 @@ #include "winreg.h"
 
 #define NO_SHLWAPI_REG
 #include "shlwapi.h"
-
 #include "wine/debug.h"
 #include "wine/unicode.h"
 
@@ -397,6 +396,26 @@ void WINAPI ReleaseBindInfo(BINDINFO* pb
  *
  * Determines the Multipurpose Internet Mail Extensions (MIME) type from the data provided.
  */
+static BOOL text_html_filter(LPVOID buf, DWORD size)
+{
+    const char *b = buf;
+    int i;
+
+    if(size < 5)
+        return FALSE;
+
+    for(i=0; i < size-5; i++) {
+        if(b[i] == '<'
+           && (b[i+1] == 'h' || b[i+1] == 'H')
+           && (b[i+2] == 't' || b[i+2] == 'T')
+           && (b[i+3] == 'm' || b[i+3] == 'M')
+           && (b[i+4] == 'l' || b[i+4] == 'L'))
+            return TRUE;
+    }
+
+    return FALSE;
+}
+
 static BOOL text_plain_filter(LPVOID buf, DWORD size)
 {
     UCHAR *ptr;
@@ -448,6 +467,7 @@ HRESULT WINAPI FindMimeFromData(LPBC pBC
         LPCWSTR ret = NULL;
         int i = 0;
 
+        static const WCHAR wszTextHtml[] = {'t','e','x','t','/','h','t','m','l',0};
         static const WCHAR wszTextPlain[] = {'t','e','x','t','/','p','l','a','i','n','\0'};
         static const WCHAR wszAppOctetStream[] = {'a','p','p','l','i','c','a','t','i','o','n','/',
             'o','c','t','e','t','-','s','t','r','e','a','m','\0'};
@@ -456,6 +476,7 @@ HRESULT WINAPI FindMimeFromData(LPBC pBC
             LPCWSTR mime;
             BOOL (*filter)(LPVOID,DWORD);
         } mime_filters[] = {
+            {wszTextHtml,       text_html_filter},
             {wszTextPlain,      text_plain_filter},
             {wszAppOctetStream, application_octet_stream_filter}
         };




More information about the wine-cvs mailing list