diff --git a/mozilla/htmlparser/tests/logparse/InputFiles.txt b/mozilla/htmlparser/tests/logparse/InputFiles.txt
new file mode 100644
index 00000000000..464d5d4caeb
--- /dev/null
+++ b/mozilla/htmlparser/tests/logparse/InputFiles.txt
@@ -0,0 +1,15 @@
+15204.html
+35806.html
+40809_CR.html
+40809_LF.html
+47535.html
+54845.html
+58455.html
+badscript.html
+bigscript.html
+bigtxt.html
+comments.html
+nulltest.html
+option.html
+title.html
+plaintxt.txt
\ No newline at end of file
diff --git a/mozilla/htmlparser/tests/logparse/TestParser.cpp b/mozilla/htmlparser/tests/logparse/TestParser.cpp
new file mode 100644
index 00000000000..b931377c2f1
--- /dev/null
+++ b/mozilla/htmlparser/tests/logparse/TestParser.cpp
@@ -0,0 +1,147 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Netscape Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is Mozilla Communicator client code.
+ *
+ * The Initial Developer of the Original Code is Netscape Communications
+ * Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ */
+#include "nsIComponentManager.h"
+#include "nsParserCIID.h"
+#include "nsIParser.h"
+#include "nsILoggingSink.h"
+#include "CNavDTD.h"
+#include "nsIInputStream.h"
+#include "prprf.h"
+#include
+
+
+#ifdef XP_PC
+#define PARSER_DLL "gkparser.dll"
+#endif
+#ifdef XP_MAC
+#endif
+#if defined(XP_UNIX) || defined(XP_BEOS)
+#define PARSER_DLL "libhtmlpars"MOZ_DLL_SUFFIX
+#endif
+
+// Class IID's
+static NS_DEFINE_IID(kParserCID, NS_PARSER_IID);
+static NS_DEFINE_IID(kLoggingSinkCID, NS_LOGGING_SINK_CID);
+
+// Interface IID's
+static NS_DEFINE_IID(kIParserIID, NS_IPARSER_IID);
+static NS_DEFINE_IID(kILoggingSinkIID, NS_ILOGGING_SINK_IID);
+
+//----------------------------------------------------------------------
+
+static void SetupRegistry()
+{
+ nsComponentManager::RegisterComponentLib(kParserCID, NULL, NULL, PARSER_DLL, PR_FALSE, PR_FALSE);
+ nsComponentManager::RegisterComponentLib(kLoggingSinkCID, NULL, NULL, PARSER_DLL,PR_FALSE,PR_FALSE);
+}
+
+//----------------------------------------------------------------------
+
+nsresult ParseData(char* anInputStream,char* anOutputStream) {
+ nsresult result=NS_OK;
+
+ if(anInputStream && anOutputStream) {
+ PRFileDesc* in=PR_Open(anInputStream, PR_RDONLY, 777);
+
+ if (!in) {
+ return NS_ERROR_FAILURE;
+ }
+
+ nsString stream;
+ char buffer[1024];
+ PRBool done=PR_FALSE;
+ PRInt32 length=0;
+
+ while(!done) {
+ length = PR_Read(in, buffer, sizeof(buffer));
+ if (length>0) {
+ stream.AppendWithConversion(buffer,length);
+ }
+ else {
+ done=PR_TRUE;
+ }
+ }
+
+ PR_Close(in);
+
+ // Create a parser
+ nsCOMPtr parser;
+ result = nsComponentManager::CreateInstance(kParserCID,nsnull,kIParserIID,getter_AddRefs(parser));
+ if (NS_SUCCEEDED(result)) {
+ // Create a sink
+ nsCOMPtr sink;
+ result = nsComponentManager::CreateInstance(kLoggingSinkCID,nsnull,kILoggingSinkIID,getter_AddRefs(sink));
+ if (NS_SUCCEEDED(result)) {
+ // Create a dtd
+ nsCOMPtr dtd;
+ result=NS_NewNavHTMLDTD(getter_AddRefs(dtd));
+ if(NS_SUCCEEDED(result)) {
+ // Parse the document, having the sink write the data to fp
+ PRFileDesc* out;
+ out = PR_Open(anOutputStream, PR_CREATE_FILE|PR_WRONLY, 777);
+
+ //fstream out(anOutputStream,ios::out);
+
+ if (!out) {
+ return NS_ERROR_FAILURE;
+ }
+
+ sink->SetOutputStream(out);
+ parser->RegisterDTD(dtd);
+ parser->SetContentSink(sink);
+ result = parser->Parse(stream, 0, NS_ConvertASCIItoUCS2("text/html"), PR_FALSE, PR_TRUE);
+
+ PR_Close(out);
+ }
+ else {
+ cout << "Unable to create a dtd (" << result << ")" < " << endl;
+ return -1;
+ }
+
+ int result=0;
+
+ //SetupRegistry();
+
+ ParseData(argv[1],argv[2]);
+
+ return result;
+}
diff --git a/mozilla/htmlparser/tests/logparse/TestParser.pl b/mozilla/htmlparser/tests/logparse/TestParser.pl
new file mode 100644
index 00000000000..5dffcc9dadf
--- /dev/null
+++ b/mozilla/htmlparser/tests/logparse/TestParser.pl
@@ -0,0 +1,35 @@
+#! /usr/bin/perl
+
+ use Cwd;
+
+ $path=`cd`;
+ $path=~m/:/;
+
+ $drive=$`;
+
+ die "\nUsage: perl TestParser.pl [-b|-v|-c] \n"
+ if(@ARGV < 2 || @ARGV > 2);
+
+ open(FILE_LIST,$ARGV[1]) || die "\nCannot open $ARGV[1]\n";
+
+ if($ARGV[0] eq "-b" || $ARGV[0] eq "-v") {
+ $ARGV[0]=~s/-//g; # create file extension for the output
+
+ foreach $input() {
+ @output=split(/\./,$input);
+ system("$drive://mozilla//dist//WIN32_D.obj//bin//TestParser.exe $input $output[0].$ARGV[0]");
+ }
+ }
+ elsif($ARGV[0] eq "-c") {
+ # use windows "fc" to compare files!!!
+ foreach $input() {
+ @output=split(/\./,$input);
+ system("fc $output[0].b $output[0].v");
+ }
+ }
+ else {
+ print "\n\"$ARGV[0]\" unknown....\n";
+ print "\nUsage: perl TestParser.pl [-b|-v|-c] \n\n";
+ }
+
+ close(FILE_LIST);
diff --git a/mozilla/parser/htmlparser/tests/logparse/InputFiles.txt b/mozilla/parser/htmlparser/tests/logparse/InputFiles.txt
new file mode 100644
index 00000000000..464d5d4caeb
--- /dev/null
+++ b/mozilla/parser/htmlparser/tests/logparse/InputFiles.txt
@@ -0,0 +1,15 @@
+15204.html
+35806.html
+40809_CR.html
+40809_LF.html
+47535.html
+54845.html
+58455.html
+badscript.html
+bigscript.html
+bigtxt.html
+comments.html
+nulltest.html
+option.html
+title.html
+plaintxt.txt
\ No newline at end of file
diff --git a/mozilla/parser/htmlparser/tests/logparse/TestParser.cpp b/mozilla/parser/htmlparser/tests/logparse/TestParser.cpp
new file mode 100644
index 00000000000..b931377c2f1
--- /dev/null
+++ b/mozilla/parser/htmlparser/tests/logparse/TestParser.cpp
@@ -0,0 +1,147 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Netscape Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is Mozilla Communicator client code.
+ *
+ * The Initial Developer of the Original Code is Netscape Communications
+ * Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s):
+ */
+#include "nsIComponentManager.h"
+#include "nsParserCIID.h"
+#include "nsIParser.h"
+#include "nsILoggingSink.h"
+#include "CNavDTD.h"
+#include "nsIInputStream.h"
+#include "prprf.h"
+#include
+
+
+#ifdef XP_PC
+#define PARSER_DLL "gkparser.dll"
+#endif
+#ifdef XP_MAC
+#endif
+#if defined(XP_UNIX) || defined(XP_BEOS)
+#define PARSER_DLL "libhtmlpars"MOZ_DLL_SUFFIX
+#endif
+
+// Class IID's
+static NS_DEFINE_IID(kParserCID, NS_PARSER_IID);
+static NS_DEFINE_IID(kLoggingSinkCID, NS_LOGGING_SINK_CID);
+
+// Interface IID's
+static NS_DEFINE_IID(kIParserIID, NS_IPARSER_IID);
+static NS_DEFINE_IID(kILoggingSinkIID, NS_ILOGGING_SINK_IID);
+
+//----------------------------------------------------------------------
+
+static void SetupRegistry()
+{
+ nsComponentManager::RegisterComponentLib(kParserCID, NULL, NULL, PARSER_DLL, PR_FALSE, PR_FALSE);
+ nsComponentManager::RegisterComponentLib(kLoggingSinkCID, NULL, NULL, PARSER_DLL,PR_FALSE,PR_FALSE);
+}
+
+//----------------------------------------------------------------------
+
+nsresult ParseData(char* anInputStream,char* anOutputStream) {
+ nsresult result=NS_OK;
+
+ if(anInputStream && anOutputStream) {
+ PRFileDesc* in=PR_Open(anInputStream, PR_RDONLY, 777);
+
+ if (!in) {
+ return NS_ERROR_FAILURE;
+ }
+
+ nsString stream;
+ char buffer[1024];
+ PRBool done=PR_FALSE;
+ PRInt32 length=0;
+
+ while(!done) {
+ length = PR_Read(in, buffer, sizeof(buffer));
+ if (length>0) {
+ stream.AppendWithConversion(buffer,length);
+ }
+ else {
+ done=PR_TRUE;
+ }
+ }
+
+ PR_Close(in);
+
+ // Create a parser
+ nsCOMPtr parser;
+ result = nsComponentManager::CreateInstance(kParserCID,nsnull,kIParserIID,getter_AddRefs(parser));
+ if (NS_SUCCEEDED(result)) {
+ // Create a sink
+ nsCOMPtr sink;
+ result = nsComponentManager::CreateInstance(kLoggingSinkCID,nsnull,kILoggingSinkIID,getter_AddRefs(sink));
+ if (NS_SUCCEEDED(result)) {
+ // Create a dtd
+ nsCOMPtr dtd;
+ result=NS_NewNavHTMLDTD(getter_AddRefs(dtd));
+ if(NS_SUCCEEDED(result)) {
+ // Parse the document, having the sink write the data to fp
+ PRFileDesc* out;
+ out = PR_Open(anOutputStream, PR_CREATE_FILE|PR_WRONLY, 777);
+
+ //fstream out(anOutputStream,ios::out);
+
+ if (!out) {
+ return NS_ERROR_FAILURE;
+ }
+
+ sink->SetOutputStream(out);
+ parser->RegisterDTD(dtd);
+ parser->SetContentSink(sink);
+ result = parser->Parse(stream, 0, NS_ConvertASCIItoUCS2("text/html"), PR_FALSE, PR_TRUE);
+
+ PR_Close(out);
+ }
+ else {
+ cout << "Unable to create a dtd (" << result << ")" < " << endl;
+ return -1;
+ }
+
+ int result=0;
+
+ //SetupRegistry();
+
+ ParseData(argv[1],argv[2]);
+
+ return result;
+}
diff --git a/mozilla/parser/htmlparser/tests/logparse/TestParser.pl b/mozilla/parser/htmlparser/tests/logparse/TestParser.pl
new file mode 100644
index 00000000000..5dffcc9dadf
--- /dev/null
+++ b/mozilla/parser/htmlparser/tests/logparse/TestParser.pl
@@ -0,0 +1,35 @@
+#! /usr/bin/perl
+
+ use Cwd;
+
+ $path=`cd`;
+ $path=~m/:/;
+
+ $drive=$`;
+
+ die "\nUsage: perl TestParser.pl [-b|-v|-c] \n"
+ if(@ARGV < 2 || @ARGV > 2);
+
+ open(FILE_LIST,$ARGV[1]) || die "\nCannot open $ARGV[1]\n";
+
+ if($ARGV[0] eq "-b" || $ARGV[0] eq "-v") {
+ $ARGV[0]=~s/-//g; # create file extension for the output
+
+ foreach $input() {
+ @output=split(/\./,$input);
+ system("$drive://mozilla//dist//WIN32_D.obj//bin//TestParser.exe $input $output[0].$ARGV[0]");
+ }
+ }
+ elsif($ARGV[0] eq "-c") {
+ # use windows "fc" to compare files!!!
+ foreach $input() {
+ @output=split(/\./,$input);
+ system("fc $output[0].b $output[0].v");
+ }
+ }
+ else {
+ print "\n\"$ARGV[0]\" unknown....\n";
+ print "\nUsage: perl TestParser.pl [-b|-v|-c] \n\n";
+ }
+
+ close(FILE_LIST);