User:Vlam6
Contents
About Me
- Name: Vincent Lam.
- Program: Bachelor of Software Development.
Contacts
- E-Mail: vlam6@learn.senecac.on.ca
- IRC: vince on #seneca
- Open Source WebBlog: http://vlam6.wordpress.com
Open Source Projects
Automated Localization Build Tool
- we are in currently working on our 0.2 release and are anticipating completion of the release by the end of october. We plan to start the 0.3 release in November.
Release 0.1
Release 0.2
Release 0.3
Contributions
Desktop Social Networking Integration
Desktop Social Networking Integration,
- Research on SQLite Client
- Found a SQLite Client
- Setup the client
- Tested the client
- Tried to get his code to compile
Full-Text History Search Extension
Full-Text History Search extension
- Research on how to create an extension
- Research on CVS Editor
- Found an free CVS Editor
- Research on History Search
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>