Vlam6
Joined 15 January 2007
About Me
Name: Vincent Lam. Program: Bachelor of Software Development.
Contacts
- E-Mail: vlam6@learn.senecac.on.ca
- IRC: vince
Open Source WebBlog
FSOSS Report
Lab
Thunderbird Fix
? labpatch.txt ? objdir-tbird-debug ? security/nss/cmd/shlibsign/NONE ? security/nss/cmd/shlibsign/mangle/NONE ? security/nss/lib/ckfw/builtins/NONE ? security/nss/lib/ckfw/capi/NONE ? security/nss/lib/freebl/NONE ? security/nss/lib/nss/NONE ? security/nss/lib/smime/NONE ? security/nss/lib/softoken/NONE ? security/nss/lib/softoken/legacydb/NONE ? security/nss/lib/ssl/NONE Index: netwerk/streamconv/converters/mozTXTToHTMLConv.cpp =================================================================== RCS file: /cvsroot/mozilla/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp,v retrieving revision 1.85 diff -u -8 -p -r1.85 mozTXTToHTMLConv.cpp --- netwerk/streamconv/converters/mozTXTToHTMLConv.cpp 11 Mar 2007 00:17:00 -0000 1.85 +++ netwerk/streamconv/converters/mozTXTToHTMLConv.cpp 11 Nov 2007 23:37:50 -0000 @@ -1,42 +1,42 @@ /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** - * + * * The "License" shall be the Mozilla Public License Version 1.1, except * Sections 6.2 and 11, but with the addition of the below defined Section 14. * You may obtain a copy of the Mozilla Public License Version 1.1 at * <http://www.mozilla.org/MPL/>. The contents of this file are subject to the * License; you may not use this file except in compliance with the License. - * + * * Section 14: MISCELLANEOUS. * This License represents the complete agreement concerning subject matter * hereof. If any provision of this License is held to be unenforceable, such * provision shall be reformed only to the extent necessary to make it * enforceable. This License shall be governed by German law provisions. Any * litigation relating to this License shall be subject to German jurisdiction. - * + * * Once Covered Code has been published under a particular version of the * License, You may always continue to use it under the terms of that version. + The Initial Developer and no one else has the right to modify the terms * applicable to Covered Code created under this License. * (End of Section 14) - * + * * 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 the Mozilla Text to HTML converter code. - * + * * The Initial Developer of the Original Code is * Ben Bucksch <http://www.bucksch.org>. * Portions created by Ben Bucksch are Copyright * (C) 1999, 2000 Ben Bucksch. All Rights Reserved. - * + * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to @@ -69,17 +69,17 @@ const PRFloat64 growthRate = 1.2; // 0xA0's and a single ending space, so need to treat 0xA0's as spaces. // 0xA0 is the Latin1/Unicode character for "non-breaking space (nbsp)" // Also recognize the Japanese ideographic space 0x3000 as a space. static inline PRBool IsSpace(const PRUnichar aChar) { return (nsCRT::IsAsciiSpace(aChar) || aChar == 0xA0 || aChar == 0x3000); } -// Escape Char will take ch, escape it and append the result to +// Escape Char will take ch, escape it and append the result to // aStringToAppendTo void mozTXTToHTMLConv::EscapeChar(const PRUnichar ch, nsString& aStringToAppendTo) { switch (ch) { case '<': aStringToAppendTo.AppendLiteral("<"); @@ -94,17 +94,17 @@ mozTXTToHTMLConv::EscapeChar(const PRUni aStringToAppendTo += ch; } return; } // EscapeStr takes the passed in string and // escapes it IN PLACE. -void +void mozTXTToHTMLConv::EscapeStr(nsString& aInString) { // the replace substring routines // don't seem to work if you have a character // in the in string that is also in the replacement // string! =( //aInString.ReplaceSubstring("&", "&"); //aInString.ReplaceSubstring("<", "<"); @@ -129,17 +129,17 @@ mozTXTToHTMLConv::EscapeStr(nsString& aI i += 5; // skip past the integers we just added break; default: i++; } } } -void +void mozTXTToHTMLConv::UnescapeStr(const PRUnichar * aInString, PRInt32 aStartPos, PRInt32 aLength, nsString& aOutString) { const PRUnichar * subString = nsnull; for (PRUint32 i = aStartPos; PRInt32(i) - aStartPos < aLength;) { PRInt32 remainingChars = i - aStartPos; if (aInString[i] == '&') { @@ -169,44 +169,44 @@ mozTXTToHTMLConv::UnescapeStr(const PRUn { aOutString += aInString[i]; i++; } } } void -mozTXTToHTMLConv::CompleteAbbreviatedURL(const PRUnichar * aInString, PRInt32 aInLength, +mozTXTToHTMLConv::CompleteAbbreviatedURL(const PRUnichar * aInString, PRInt32 aInLength, const PRUint32 pos, nsString& aOutString) { NS_ASSERTION(pos < aInLength, "bad args to CompleteAbbreviatedURL, see bug #190851"); if (pos >= aInLength) return; if (aInString[pos] == '@') { // only pre-pend a mailto url if the string contains a .domain in it.. //i.e. we want to linkify johndoe@foo.com but not "let's meet @8pm" nsDependentString inString(aInString, aInLength); - if (inString.FindChar('.', pos) != kNotFound) // if we have a '.' after the @ sign.... + if (inString.FindChar('.', pos) != kNotFound && (inString.Find("..", 0) == kNotFound)) { // if we have a '.' after the @ sign.... and make sure there is no double '.' anywhere { aOutString.AssignLiteral("mailto:"); aOutString += aInString; } } else if (aInString[pos] == '.') { if (ItMatchesDelimited(aInString, aInLength, NS_LITERAL_STRING("www.").get(), 4, LT_IGNORE, LT_IGNORE)) { aOutString.AssignLiteral("http://"); aOutString += aInString; } else if (ItMatchesDelimited(aInString,aInLength, NS_LITERAL_STRING("ftp.").get(), 4, LT_IGNORE, LT_IGNORE)) - { + { aOutString.AssignLiteral("ftp://"); aOutString += aInString; } } } PRBool mozTXTToHTMLConv::FindURLStart(const PRUnichar * aInString, PRInt32 aInLength, @@ -360,17 +360,17 @@ mozTXTToHTMLConv::FindURLEnd(const PRUni return PR_FALSE; } default: return PR_FALSE; } //switch } void -mozTXTToHTMLConv::CalculateURLBoundaries(const PRUnichar * aInString, PRInt32 aInStringLength, +mozTXTToHTMLConv::CalculateURLBoundaries(const PRUnichar * aInString, PRInt32 aInStringLength, const PRUint32 pos, const PRUint32 whathasbeendone, const modetype check, const PRUint32 start, const PRUint32 end, nsString& txtURL, nsString& desc, PRInt32& replaceBefore, PRInt32& replaceAfter) { PRUint32 descstart = start; switch(check) { @@ -385,17 +385,17 @@ mozTXTToHTMLConv::CalculateURLBoundaries descstart = start - 1; desc.Append(&aInString[descstart], end - descstart + 2); // include brackets replaceAfter = end - pos + 1; } break; case freetext: case abbreviated: { descstart = start; - desc.Append(&aInString[descstart], end - start + 1); // don't include brackets + desc.Append(&aInString[descstart], end - start + 1); // don't include brackets replaceAfter = end - pos; } break; default: break; } //switch EscapeStr(desc); txtURL.Append(&aInString[start], end - start + 1); @@ -414,17 +414,17 @@ PRBool mozTXTToHTMLConv::ShouldLinkify(c return PR_FALSE; nsCAutoString scheme; nsresult rv = mIOService->ExtractScheme(aURL, scheme); if(NS_FAILED(rv)) return PR_FALSE; // Get the handler for this scheme. - nsCOMPtr<nsIProtocolHandler> handler; + nsCOMPtr<nsIProtocolHandler> handler; rv = mIOService->GetProtocolHandler(scheme.get(), getter_AddRefs(handler)); if(NS_FAILED(rv)) return PR_FALSE; // Is it an external protocol handler? If not, linkify it. nsCOMPtr<nsIExternalProtocolHandler> externalHandler = do_QueryInterface(handler, &rv); if (!externalHandler) return PR_TRUE; // handler is built-in, linkify it! @@ -440,17 +440,17 @@ mozTXTToHTMLConv::CheckURLAndCreateHTML( const nsString& txtURL, const nsString& desc, const modetype mode, nsString& outputHTML) { // Create *uri from txtURL nsCOMPtr<nsIURI> uri; nsresult rv = NS_OK; if (!mIOService) mIOService = do_GetService(kIOServiceCID, &rv); - + if (NS_FAILED(rv) || !mIOService) return PR_FALSE; // See if the url should be linkified. NS_ConvertUTF16toUTF8 utf8URL(txtURL); if (!ShouldLinkify(utf8URL)) return PR_FALSE; @@ -639,17 +639,17 @@ mozTXTToHTMLConv::ItMatchesDelimited(con nsCaseInsensitiveStringComparator()) ) return PR_FALSE; return PR_TRUE; } PRUint32 -mozTXTToHTMLConv::NumberOfMatches(const PRUnichar * aInString, PRInt32 aInStringLength, +mozTXTToHTMLConv::NumberOfMatches(const PRUnichar * aInString, PRInt32 aInStringLength, const PRUnichar* rep, PRInt32 aRepLen, LIMTYPE before, LIMTYPE after) { PRUint32 result = 0; for (PRInt32 i = 0; i < aInStringLength; i++) { const PRUnichar * indexIntoString = &aInString[i]; if (ItMatchesDelimited(indexIntoString, aInStringLength - i, rep, aRepLen, before, after)) @@ -658,17 +658,17 @@ mozTXTToHTMLConv::NumberOfMatches(const return result; } // NOTE: the converted html for the phrase is appended to aOutString // tagHTML and attributeHTML are plain ASCII (literal strings, in fact) PRBool mozTXTToHTMLConv::StructPhraseHit(const PRUnichar * aInString, PRInt32 aInStringLength, PRBool col0, - const PRUnichar* tagTXT, PRInt32 aTagTXTLen, + const PRUnichar* tagTXT, PRInt32 aTagTXTLen, const char* tagHTML, const char* attributeHTML, nsString& aOutString, PRUint32& openTags) { /* We're searching for the following pattern: LT_DELIMITER - "*" - ALPHA - [ some text (maybe more "*"-pairs) - ALPHA ] "*" - LT_DELIMITER. <strong> is only inserted, if existance of a pair could be verified We use the first opening/closing tag, if we can choose */ @@ -679,19 +679,19 @@ mozTXTToHTMLConv::StructPhraseHit(const { newOffset = &aInString[1]; newLength = aInStringLength - 1; } // opening tag if ( - ItMatchesDelimited(aInString, aInStringLength, tagTXT, aTagTXTLen, + ItMatchesDelimited(aInString, aInStringLength, tagTXT, aTagTXTLen, (col0 ? LT_IGNORE : LT_DELIMITER), LT_ALPHA) // is opening tag - && NumberOfMatches(newOffset, newLength, tagTXT, aTagTXTLen, + && NumberOfMatches(newOffset, newLength, tagTXT, aTagTXTLen, LT_ALPHA, LT_DELIMITER) // remaining closing tags > openTags ) { openTags++; aOutString.AppendLiteral("<"); aOutString.AppendASCII(tagHTML); aOutString.Append(PRUnichar(' ')); @@ -723,17 +723,17 @@ PRBool mozTXTToHTMLConv::SmilyHit(const PRUnichar * aInString, PRInt32 aLength, PRBool col0, const char* tagTXT, const char* imageName, nsString& outputHTML, PRInt32& glyphTextLen) { if ( !aInString || !tagTXT || !imageName ) return PR_FALSE; PRInt32 tagLen = nsCRT::strlen(tagTXT); - + PRUint32 delim = (col0 ? 0 : 1) + tagLen; if ( (col0 || IsSpace(aInString[0])) && ( aLength <= PRInt32(delim) || @@ -746,47 +746,47 @@ mozTXTToHTMLConv::SmilyHit(const PRUnich aInString[delim] == ';' || aInString[delim] == '8' || aInString[delim] == '>' || aInString[delim] == '!' || aInString[delim] == '?' ) && IsSpace(aInString[delim + 1]) ) - && ItMatchesDelimited(aInString, aLength, NS_ConvertASCIItoUTF16(tagTXT).get(), tagLen, + && ItMatchesDelimited(aInString, aLength, NS_ConvertASCIItoUTF16(tagTXT).get(), tagLen, col0 ? LT_IGNORE : LT_DELIMITER, LT_IGNORE) // Note: tests at different pos for LT_IGNORE and LT_DELIMITER ) { if (!col0) { outputHTML.Truncate(); outputHTML.Append(PRUnichar(' ')); } outputHTML.AppendLiteral("<span class=\""); // <span class=" AppendASCIItoUTF16(imageName, outputHTML); // e.g. smiley-frown - outputHTML.AppendLiteral("\" title=\""); // " title=" + outputHTML.AppendLiteral("\" title=\""); // " title=" AppendASCIItoUTF16(tagTXT, outputHTML); // smiley tooltip - outputHTML.AppendLiteral("\"><span>"); // "><span> - AppendASCIItoUTF16(tagTXT, outputHTML); // original text + outputHTML.AppendLiteral("\"><span>"); // "><span> + AppendASCIItoUTF16(tagTXT, outputHTML); // original text outputHTML.AppendLiteral("</span></span>"); // </span></span> glyphTextLen = (col0 ? 0 : 1) + tagLen; return PR_TRUE; } return PR_FALSE; } // the glyph is appended to aOutputString instead of the original string... PRBool mozTXTToHTMLConv::GlyphHit(const PRUnichar * aInString, PRInt32 aInLength, PRBool col0, nsString& aOutputString, PRInt32& glyphTextLen) { - PRUnichar text0 = aInString[0]; + PRUnichar text0 = aInString[0]; PRUnichar text1 = aInString[1]; PRUnichar firstChar = (col0 ? text0 : text1); // temporary variable used to store the glyph html text nsAutoString outputHTML; PRBool bTestSmilie; PRBool bArg; int i; @@ -813,116 +813,116 @@ mozTXTToHTMLConv::GlyphHit(const PRUnich bTestSmilie = PR_TRUE; bArg = PR_FALSE; } if ( bTestSmilie && ( SmilyHit(aInString, aInLength, bArg, ":-)", "moz-smiley-s1", // smile outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":)", "moz-smiley-s1", // smile outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":-D", "moz-smiley-s5", // laughing outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":-(", "moz-smiley-s2", // frown outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":(", "moz-smiley-s2", // frown outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":-[", "moz-smiley-s6", // embarassed outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ";-)", "moz-smiley-s3", // wink outputHTML, glyphTextLen) || SmilyHit(aInString, aInLength, col0, ";)", "moz-smiley-s3", // wink outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":-\\", "moz-smiley-s7", // undecided outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":-P", "moz-smiley-s4", // tongue outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ";-P", "moz-smiley-s4", // tongue - outputHTML, glyphTextLen) || - + outputHTML, glyphTextLen) || + SmilyHit(aInString, aInLength, bArg, "=-O", "moz-smiley-s8", // surprise outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":-*", "moz-smiley-s9", // kiss outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ">:o", "moz-smiley-s10", // yell outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ">:-o", "moz-smiley-s10", // yell outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, "8-)", "moz-smiley-s11", // cool outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":-$", "moz-smiley-s12", // money outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":-!", "moz-smiley-s13", // foot outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, "O:-)", "moz-smiley-s14", // innocent outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":'(", "moz-smiley-s15", // cry outputHTML, glyphTextLen) || - + SmilyHit(aInString, aInLength, bArg, ":-X", "moz-smiley-s16", // sealed - outputHTML, glyphTextLen) + outputHTML, glyphTextLen) ) ) { aOutputString.Append(outputHTML); return PR_TRUE; } i++; } @@ -949,37 +949,37 @@ mozTXTToHTMLConv::GlyphHit(const PRUnich aOutputString.AppendLiteral("±"); glyphTextLen = 3; return PR_TRUE; } } // x^2 => x<sup>2</sup>, also handle powers x^-2, x^0.5 // implement regular expression /[\dA-Za-z\)\]}]\^-?\d+(\.\d+)*[^\dA-Za-z]/ - if + if ( text1 == '^' - && + && ( - nsCRT::IsAsciiDigit(text0) || nsCRT::IsAsciiAlpha(text0) || + nsCRT::IsAsciiDigit(text0) || nsCRT::IsAsciiAlpha(text0) || text0 == ')' || text0 == ']' || text0 == '}' ) && ( 2 < aInLength && nsCRT::IsAsciiDigit(aInString[2]) || 3 < aInLength && aInString[2] == '-' && nsCRT::IsAsciiDigit(aInString[3]) ) ) { // Find first non-digit PRInt32 delimPos = 3; // skip "^" and first digit (or '-') for (; delimPos < aInLength && ( - nsCRT::IsAsciiDigit(aInString[delimPos]) || + nsCRT::IsAsciiDigit(aInString[delimPos]) || aInString[delimPos] == '.' && delimPos + 1 < aInLength && nsCRT::IsAsciiDigit(aInString[delimPos + 1]) ); delimPos++) ; if (delimPos < aInLength && nsCRT::IsAsciiAlpha(aInString[delimPos])) { @@ -1016,17 +1016,17 @@ mozTXTToHTMLConv::GlyphHit(const PRUnich /*************************************************************************** Library-internal Interface ****************************************************************************/ mozTXTToHTMLConv::mozTXTToHTMLConv() { } -mozTXTToHTMLConv::~mozTXTToHTMLConv() +mozTXTToHTMLConv::~mozTXTToHTMLConv() { } NS_IMPL_ISUPPORTS1(mozTXTToHTMLConv, mozITXTToHTMLConv) PRInt32 mozTXTToHTMLConv::CiteLevelTXT(const PRUnichar *line, PRUint32& logLineStart) @@ -1214,17 +1214,17 @@ mozTXTToHTMLConv::ScanTXT(const PRUnicha i++; break; } } } void mozTXTToHTMLConv::ScanHTML(nsString& aInString, PRUint32 whattodo, nsString &aOutString) -{ +{ // some common variables we were recalculating // every time inside the for loop... PRInt32 lengthOfInString = aInString.Length(); const PRUnichar * uniBuffer = aInString.get(); #ifdef DEBUG_BenB_Perf PRTime parsing_start = PR_IntervalNow(); #endif @@ -1269,18 +1269,18 @@ mozTXTToHTMLConv::ScanHTML(nsString& aIn aOutString.Append(&uniBuffer[start], PRUint32(i) - start); } else { PRUint32 start = PRUint32(i); i = aInString.FindChar('<', i); if (i == kNotFound) i = lengthOfInString; - - nsString tempString; + + nsString tempString; tempString.SetCapacity(PRUint32((PRUint32(i) - start) * growthRate)); UnescapeStr(uniBuffer, start, PRUint32(i) - start, tempString); ScanTXT(tempString.get(), tempString.Length(), whattodo, aOutString); } } #ifdef DEBUG_BenB_Perf printf("ScanHTML time: %d ms\n", PR_IntervalToMilliseconds(PR_IntervalNow() - parsing_start));
IRC Commands
- /join #channel <join chann>
- username: ping <get people attention>
- username: pong
- /query username <start a private chat>
- /join #meeting10 <new room>
- /me <emote>