From 7be55ffa061c026e35e2d6a0effe1161ddb0d41f Mon Sep 17 00:00:00 2001 From: tpearson Date: Sat, 31 Jul 2010 19:53:50 +0000 Subject: Trinity Qt initial conversion git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1157655 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- libkmime/kmime_header_parsing.cpp | 190 +++++++++++++++++++------------------- 1 file changed, 95 insertions(+), 95 deletions(-) (limited to 'libkmime/kmime_header_parsing.cpp') diff --git a/libkmime/kmime_header_parsing.cpp b/libkmime/kmime_header_parsing.cpp index 1b67cee2b..9222ff914 100644 --- a/libkmime/kmime_header_parsing.cpp +++ b/libkmime/kmime_header_parsing.cpp @@ -39,10 +39,10 @@ #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include // for isdigit #include @@ -54,9 +54,9 @@ namespace KMime { namespace Types { - QString AddrSpec::asString() const { + TQString AddrSpec::asString() const { bool needsQuotes = false; - QString result; + TQString result; result.reserve( localPart.length() + domain.length() + 1 ); for ( unsigned int i = 0 ; i < localPart.length() ; ++i ) { const char ch = localPart[i].latin1(); @@ -81,7 +81,7 @@ namespace HeaderParsing { // parse the encoded-word (scursor points to after the initial '=') bool parseEncodedWord( const char* & scursor, const char * const send, - QString & result, QCString & language ) { + TQString & result, TQCString & language ) { // make sure the caller already did a bit of the work. assert( *(scursor-1) == '=' ); @@ -121,10 +121,10 @@ bool parseEncodedWord( const char* & scursor, const char * const send, // extract the language information, if any (if languageStart is 0, // language will be null, too): - QCString maybeLanguage( languageStart, scursor - languageStart + 1 /*for NUL*/); + TQCString maybeLanguage( languageStart, scursor - languageStart + 1 /*for NUL*/); // extract charset information (keep in mind: the size given to the // ctor is one off due to the \0 terminator): - QCString maybeCharset( charsetStart, ( languageStart ? languageStart : scursor + 1 ) - charsetStart ); + TQCString maybeCharset( charsetStart, ( languageStart ? languageStart : scursor + 1 ) - charsetStart ); // // STEP 2: @@ -148,7 +148,7 @@ bool parseEncodedWord( const char* & scursor, const char * const send, } // extract the encoding information: - QCString maybeEncoding( encodingStart, scursor - encodingStart + 1 ); + TQCString maybeEncoding( encodingStart, scursor - encodingStart + 1 ); kdDebug() << "parseEncodedWord: found charset == \"" << maybeCharset @@ -220,9 +220,9 @@ bool parseEncodedWord( const char* & scursor, const char * const send, // allocate a temporary buffer to store the 8bit text: int encodedTextLength = encodedTextEnd - encodedTextStart; - QByteArray buffer( codec->maxDecodedSizeFor( encodedTextLength ) ); - QByteArray::Iterator bit = buffer.begin(); - QByteArray::ConstIterator bend = buffer.end(); + TQByteArray buffer( codec->maxDecodedSizeFor( encodedTextLength ) ); + TQByteArray::Iterator bit = buffer.begin(); + TQByteArray::ConstIterator bend = buffer.end(); // // STEP 5: @@ -251,12 +251,12 @@ static inline void eatWhiteSpace( const char* & scursor, const char * const send } bool parseAtom( const char * & scursor, const char * const send, - QString & result, bool allow8Bit ) + TQString & result, bool allow8Bit ) { QPair maybeResult; if ( parseAtom( scursor, send, maybeResult, allow8Bit ) ) { - result += QString::fromLatin1( maybeResult.first, maybeResult.second ); + result += TQString::fromLatin1( maybeResult.first, maybeResult.second ); return true; } @@ -291,12 +291,12 @@ bool parseAtom( const char * & scursor, const char * const send, } bool parseToken( const char * & scursor, const char * const send, - QString & result, bool allow8Bit ) + TQString & result, bool allow8Bit ) { QPair maybeResult; if ( parseToken( scursor, send, maybeResult, allow8Bit ) ) { - result += QString::fromLatin1( maybeResult.first, maybeResult.second ); + result += TQString::fromLatin1( maybeResult.first, maybeResult.second ); return true; } @@ -343,7 +343,7 @@ bool parseToken( const char * & scursor, const char * const send, // - doesn't handle quoted CRLF bool parseGenericQuotedString( const char* & scursor, const char * const send, - QString & result, bool isCRLF, + TQString & result, bool isCRLF, const char openChar, const char closeChar ) { char ch; @@ -369,7 +369,7 @@ bool parseGenericQuotedString( const char* & scursor, const char * const send, // misses "\" CRLF LWSP-char handling, see rfc822, 3.4.5 READ_ch_OR_FAIL; KMIME_WARN_IF_8BIT(ch); - result += QChar(ch); + result += TQChar(ch); break; case '\r': // ### @@ -383,7 +383,7 @@ bool parseGenericQuotedString( const char* & scursor, const char * const send, if ( ch != '\n' ) { // CR on it's own... KMIME_WARN_LONE(CR); - result += QChar('\r'); + result += TQChar('\r'); scursor--; // points to after the '\r' again } else { // CRLF encountered. @@ -393,7 +393,7 @@ bool parseGenericQuotedString( const char* & scursor, const char * const send, // correct folding; // position cursor behind the CRLF WSP (unfolding) // and add the WSP to the result - result += QChar(ch); + result += TQChar(ch); } else { // this is the "shouldn't happen"-case. There is a CRLF // inside a quoted-string without it being part of FWS. @@ -419,11 +419,11 @@ bool parseGenericQuotedString( const char* & scursor, const char * const send, if ( !isCRLF && ( ch == ' ' || ch == '\t' ) ) { // folding // correct folding - result += QChar(ch); + result += TQChar(ch); } else { // non-folding KMIME_WARN_LONE(LF); - result += QChar('\n'); + result += TQChar('\n'); // pos is decremented, so's we need not duplicate the whole // switch here. ch could've been everything (incl. <">, "\"). scursor--; @@ -431,7 +431,7 @@ bool parseGenericQuotedString( const char* & scursor, const char * const send, break; default: KMIME_WARN_IF_8BIT(ch); - result += QChar(ch); + result += TQChar(ch); } } @@ -443,17 +443,17 @@ bool parseGenericQuotedString( const char* & scursor, const char * const send, // - doesn't handle encoded-word inside comments. bool parseComment( const char* & scursor, const char * const send, - QString & result, bool isCRLF, bool reallySave ) + TQString & result, bool isCRLF, bool reallySave ) { int commentNestingDepth = 1; const char * afterLastClosingParenPos = 0; - QString maybeCmnt; + TQString maybeCmnt; const char * oldscursor = scursor; assert( *(scursor-1) == '(' ); while ( commentNestingDepth ) { - QString cmntPart; + TQString cmntPart; if ( parseGenericQuotedString( scursor, send, cmntPart, isCRLF, '(', ')' ) ) { assert( *(scursor-1) == ')' || *(scursor-1) == '(' ); // see the kdoc for above function for the possible conditions @@ -465,8 +465,8 @@ bool parseComment( const char* & scursor, const char * const send, result += maybeCmnt; result += cmntPart; if ( commentNestingDepth > 1 ) // don't add the outermost ')'... - result += QChar(')'); - maybeCmnt = QString::null; + result += TQChar(')'); + maybeCmnt = TQString::null; } afterLastClosingParenPos = scursor; --commentNestingDepth; @@ -476,7 +476,7 @@ bool parseComment( const char* & scursor, const char * const send, // don't add to "result" yet, because we might find that we // are already outside the (broken) comment... maybeCmnt += cmntPart; - maybeCmnt += QChar('('); + maybeCmnt += TQChar('('); } ++commentNestingDepth; break; @@ -499,11 +499,11 @@ bool parseComment( const char* & scursor, const char * const send, // known issues: none. bool parsePhrase( const char* & scursor, const char * const send, - QString & result, bool isCRLF ) + TQString & result, bool isCRLF ) { enum { None, Phrase, Atom, EncodedWord, QuotedString } found = None; - QString tmp; - QCString lang; + TQString tmp; + TQCString lang; const char * successfullyParsed = 0; // only used by the encoded-word branch const char * oldscursor; @@ -527,7 +527,7 @@ bool parsePhrase( const char* & scursor, const char * const send, } break; case '"': // quoted-string - tmp = QString::null; + tmp = TQString::null; if ( parseGenericQuotedString( scursor, send, tmp, isCRLF, '"', '"' ) ) { successfullyParsed = scursor; assert( *(scursor-1) == '"' ); @@ -540,7 +540,7 @@ bool parsePhrase( const char* & scursor, const char * const send, case EncodedWord: case QuotedString: found = Phrase; - result += QChar(' '); // rfc822, 3.4.4 + result += TQChar(' '); // rfc822, 3.4.4 break; default: assert( 0 ); @@ -554,7 +554,7 @@ bool parsePhrase( const char* & scursor, const char * const send, if ( found == None ) { return false; } else { - result += QChar(' '); // rfc822, 3.4.4 + result += TQChar(' '); // rfc822, 3.4.4 result += tmp; return true; } @@ -562,7 +562,7 @@ bool parsePhrase( const char* & scursor, const char * const send, break; case '(': // comment // parse it, but ignore content: - tmp = QString::null; + tmp = TQString::null; if ( parseComment( scursor, send, tmp, isCRLF, false /*don't bother with the content*/ ) ) { successfullyParsed = scursor; @@ -577,7 +577,7 @@ bool parsePhrase( const char* & scursor, const char * const send, } break; case '=': // encoded-word - tmp = QString::null; + tmp = TQString::null; oldscursor = scursor; lang = 0; if ( parseEncodedWord( scursor, send, tmp, lang ) ) { @@ -591,7 +591,7 @@ bool parsePhrase( const char* & scursor, const char * const send, case Atom: case QuotedString: if ( !lastWasEncodedWord ) - result += QChar(' '); // rfc822, 3.4.4 + result += TQChar(' '); // rfc822, 3.4.4 found = Phrase; break; default: assert( 0 ); @@ -605,7 +605,7 @@ bool parsePhrase( const char* & scursor, const char * const send, // fall though... default: //atom - tmp = QString::null; + tmp = TQString::null; scursor--; if ( parseAtom( scursor, send, tmp, true /* allow 8bit */ ) ) { successfullyParsed = scursor; @@ -618,7 +618,7 @@ bool parsePhrase( const char* & scursor, const char * const send, case EncodedWord: case QuotedString: found = Phrase; - result += QChar(' '); // rfc822, 3.4.4 + result += TQChar(' '); // rfc822, 3.4.4 break; default: assert( 0 ); @@ -642,12 +642,12 @@ bool parsePhrase( const char* & scursor, const char * const send, bool parseDotAtom( const char* & scursor, const char * const send, - QString & result, bool isCRLF ) + TQString & result, bool isCRLF ) { // always points to just after the last atom parsed: const char * successfullyParsed; - QString tmp; + TQString tmp; if ( !parseAtom( scursor, send, tmp, false /* no 8bit */ ) ) return false; result += tmp; @@ -671,13 +671,13 @@ bool parseDotAtom( const char* & scursor, const char * const send, } // try to parse the next atom: - QString maybeAtom; + TQString maybeAtom; if ( !parseAtom( scursor, send, maybeAtom, false /*no 8bit*/ ) ) { scursor = successfullyParsed; return true; } - result += QChar('.'); + result += TQChar('.'); result += maybeAtom; successfullyParsed = scursor; } @@ -688,7 +688,7 @@ bool parseDotAtom( const char* & scursor, const char * const send, void eatCFWS( const char* & scursor, const char * const send, bool isCRLF ) { - QString dummy; + TQString dummy; while ( scursor != send ) { const char * oldscursor = scursor; @@ -717,7 +717,7 @@ void eatCFWS( const char* & scursor, const char * const send, bool isCRLF ) { } bool parseDomain( const char* & scursor, const char * const send, - QString & result, bool isCRLF ) { + TQString & result, bool isCRLF ) { eatCFWS( scursor, send, isCRLF ); if ( scursor == send ) return false; @@ -729,7 +729,7 @@ bool parseDomain( const char* & scursor, const char * const send, if ( *scursor == '[' ) { // domain-literal: - QString maybeDomainLiteral; + TQString maybeDomainLiteral; // eat '[': scursor++; while ( parseGenericQuotedString( scursor, send, maybeDomainLiteral, @@ -748,7 +748,7 @@ bool parseDomain( const char* & scursor, const char * const send, // we hit openChar in parseGenericQuotedString. // include it in maybeDomainLiteral and keep on parsing: if ( *(scursor-1) == '[' ) { - maybeDomainLiteral += QChar('['); + maybeDomainLiteral += TQChar('['); continue; } // OK, real end of domain-literal: @@ -757,7 +757,7 @@ bool parseDomain( const char* & scursor, const char * const send, } } else { // dot-atom: - QString maybeDotAtom; + TQString maybeDotAtom; if ( parseDotAtom( scursor, send, maybeDotAtom, isCRLF ) ) { result = maybeDotAtom; return true; @@ -767,7 +767,7 @@ bool parseDomain( const char* & scursor, const char * const send, } bool parseObsRoute( const char* & scursor, const char* const send, - QStringList & result, bool isCRLF, bool save ) { + TQStringList & result, bool isCRLF, bool save ) { while ( scursor != send ) { eatCFWS( scursor, send, isCRLF ); if ( scursor == send ) return false; @@ -775,14 +775,14 @@ bool parseObsRoute( const char* & scursor, const char* const send, // empty entry: if ( *scursor == ',' ) { scursor++; - if ( save ) result.append( QString::null ); + if ( save ) result.append( TQString::null ); continue; } // empty entry ending the list: if ( *scursor == ':' ) { scursor++; - if ( save ) result.append( QString::null ); + if ( save ) result.append( TQString::null ); return true; } @@ -792,7 +792,7 @@ bool parseObsRoute( const char* & scursor, const char* const send, else scursor++; - QString maybeDomain; + TQString maybeDomain; if ( !parseDomain( scursor, send, maybeDomain, isCRLF ) ) return false; if ( save ) result.append( maybeDomain ); @@ -816,8 +816,8 @@ bool parseAddrSpec( const char* & scursor, const char * const send, // this is equivalent to: // local-part := word *("." word) - QString maybeLocalPart; - QString tmp; + TQString maybeLocalPart; + TQString tmp; while ( scursor != send ) { // first, eat any whitespace @@ -826,7 +826,7 @@ bool parseAddrSpec( const char* & scursor, const char * const send, char ch = *scursor++; switch ( ch ) { case '.': // dot - maybeLocalPart += QChar('.'); + maybeLocalPart += TQChar('.'); break; case '@': @@ -834,7 +834,7 @@ bool parseAddrSpec( const char* & scursor, const char * const send, break; case '"': // quoted-string - tmp = QString::null; + tmp = TQString::null; if ( parseGenericQuotedString( scursor, send, tmp, isCRLF, '"', '"' ) ) maybeLocalPart += tmp; else @@ -843,7 +843,7 @@ bool parseAddrSpec( const char* & scursor, const char * const send, default: // atom scursor--; // re-set scursor to point to ch again - tmp = QString::null; + tmp = TQString::null; if ( parseAtom( scursor, send, tmp, false /* no 8bit */ ) ) maybeLocalPart += tmp; else @@ -864,7 +864,7 @@ SAW_AT_SIGN: assert( *(scursor-1) == '@' ); - QString maybeDomain; + TQString maybeDomain; if ( !parseDomain( scursor, send, maybeDomain, isCRLF ) ) return false; @@ -888,7 +888,7 @@ bool parseAngleAddr( const char* & scursor, const char * const send, if ( *scursor == '@' || *scursor == ',' ) { // obs-route: parse, but ignore: KMIME_WARN << "obsolete source route found! ignoring." << endl; - QStringList dummy; + TQStringList dummy; if ( !parseObsRoute( scursor, send, dummy, isCRLF, false /* don't save */ ) ) return false; @@ -926,17 +926,17 @@ bool parseMailbox( const char* & scursor, const char * const send, // first, try if it's a vanilla addr-spec: const char * oldscursor = scursor; if ( parseAddrSpec( scursor, send, maybeAddrSpec, isCRLF ) ) { - result.displayName = QString::null; + result.displayName = TQString::null; result.addrSpec = maybeAddrSpec; return true; } scursor = oldscursor; // second, see if there's a display-name: - QString maybeDisplayName; + TQString maybeDisplayName; if ( !parsePhrase( scursor, send, maybeDisplayName, isCRLF ) ) { // failed: reset cursor, note absent display-name - maybeDisplayName = QString::null; + maybeDisplayName = TQString::null; scursor = oldscursor; } else { // succeeded: eat CFWS @@ -974,7 +974,7 @@ bool parseGroup( const char* & scursor, const char * const send, if ( scursor == send ) return false; // get display-name: - QString maybeDisplayName; + TQString maybeDisplayName; if ( !parsePhrase( scursor, send, maybeDisplayName, isCRLF ) ) return false; @@ -1025,7 +1025,7 @@ bool parseAddress( const char* & scursor, const char * const send, const char * oldscursor = scursor; if ( parseMailbox( scursor, send, maybeMailbox, isCRLF ) ) { // yes, it is: - result.displayName = QString::null; + result.displayName = TQString::null; result.mailboxList.append( maybeMailbox ); return true; } @@ -1065,19 +1065,19 @@ bool parseAddressList( const char* & scursor, const char * const send, } -static QString asterisk = QString::fromLatin1("*0*",1); -static QString asteriskZero = QString::fromLatin1("*0*",2); -//static QString asteriskZeroAsterisk = QString::fromLatin1("*0*",3); +static TQString asterisk = TQString::fromLatin1("*0*",1); +static TQString asteriskZero = TQString::fromLatin1("*0*",2); +//static TQString asteriskZeroAsterisk = TQString::fromLatin1("*0*",3); bool parseParameter( const char* & scursor, const char * const send, - QPair & result, bool isCRLF ) { + QPair & result, bool isCRLF ) { // parameter = regular-parameter / extended-parameter // regular-parameter = regular-parameter-name "=" value // extended-parameter = // value = token / quoted-string // // note that rfc2231 handling is out of the scope of this function. - // Therefore we return the attribute as QString and the value as + // Therefore we return the attribute as TQString and the value as // (start,length) tupel if we see that the value is encoded // (trailing asterisk), for parseParameterList to decode... @@ -1087,7 +1087,7 @@ bool parseParameter( const char* & scursor, const char * const send, // // parse the parameter name: // - QString maybeAttribute; + TQString maybeAttribute; if ( !parseToken( scursor, send, maybeAttribute, false /* no 8bit */ ) ) return false; @@ -1147,7 +1147,7 @@ bool parseParameter( const char* & scursor, const char * const send, bool parseRawParameterList( const char* & scursor, const char * const send, - QMap & result, + TQMap & result, bool isCRLF ) { // we use parseParameter() consecutively to obtain a map of raw // attributes to raw values. "Raw" here means that we don't do @@ -1166,7 +1166,7 @@ bool parseRawParameterList( const char* & scursor, const char * const send, // empty list entry: ignore. if ( *scursor == ';' ) { scursor++; continue; } - QPair maybeParameter; + QPair maybeParameter; if ( !parseParameter( scursor, send, maybeParameter, isCRLF ) ) { // we need to do a bit of work if the attribute is not // NULL. These are the cases marked with "needs further @@ -1199,8 +1199,8 @@ bool parseRawParameterList( const char* & scursor, const char * const send, static void decodeRFC2231Value( Codec* & rfc2231Codec, - QTextCodec* & textcodec, - bool isContinuation, QString & value, + TQTextCodec* & textcodec, + bool isContinuation, TQString & value, QPair & source ) { // @@ -1223,11 +1223,11 @@ static void decodeRFC2231Value( Codec* & rfc2231Codec, // take the whole value to be in latin-1: KMIME_WARN << "No charset in extended-initial-value. " "Assuming \"iso-8859-1\"." << endl; - value += QString::fromLatin1( decBegin, source.second ); + value += TQString::fromLatin1( decBegin, source.second ); return; } - QCString charset( decBegin, decCursor - decBegin + 1 ); + TQCString charset( decBegin, decCursor - decBegin + 1 ); const char * oldDecCursor = ++decCursor; // find the second single quote (we ignore the language tag): @@ -1263,7 +1263,7 @@ static void decodeRFC2231Value( Codec* & rfc2231Codec, } if ( !textcodec ) { - value += QString::fromLatin1( decCursor, decEnd - decCursor ); + value += TQString::fromLatin1( decCursor, decEnd - decCursor ); return; } @@ -1274,9 +1274,9 @@ static void decodeRFC2231Value( Codec* & rfc2231Codec, // do the decoding: // - QByteArray buffer( rfc2231Codec->maxDecodedSizeFor( decEnd - decCursor ) ); - QByteArray::Iterator bit = buffer.begin(); - QByteArray::ConstIterator bend = buffer.end(); + TQByteArray buffer( rfc2231Codec->maxDecodedSizeFor( decEnd - decCursor ) ); + TQByteArray::Iterator bit = buffer.begin(); + TQByteArray::ConstIterator bend = buffer.end(); if ( !dec->decode( decCursor, decEnd, bit, bend ) ) KMIME_WARN << rfc2231Codec->name() @@ -1295,9 +1295,9 @@ static void decodeRFC2231Value( Codec* & rfc2231Codec, // exceeds 10 (other-sections then becomes *xy, ie. two digits) bool parseParameterList( const char* & scursor, const char * const send, - QMap & result, bool isCRLF ) { + TQMap & result, bool isCRLF ) { // parse the list into raw attribute-value pairs: - QMap rawParameterList; + TQMap rawParameterList; if (!parseRawParameterList( scursor, send, rawParameterList, isCRLF ) ) return false; @@ -1305,16 +1305,16 @@ bool parseParameterList( const char* & scursor, const char * const send, // decode rfc 2231 continuations and alternate charset encoding: - // NOTE: this code assumes that what QMapIterator delivers is sorted + // NOTE: this code assumes that what TQMapIterator delivers is sorted // by the key! Codec * rfc2231Codec = 0; - QTextCodec * textcodec = 0; - QString attribute; - QString value; + TQTextCodec * textcodec = 0; + TQString attribute; + TQString value; enum Modes { NoMode = 0x0, Continued = 0x1, Encoded = 0x2 } mode; - QMapIterator it, end = rawParameterList.end(); + TQMapIterator it, end = rawParameterList.end(); for ( it = rawParameterList.begin() ; it != end ; ++it ) { if ( attribute.isNull() || !it.key().startsWith( attribute ) ) { @@ -1325,7 +1325,7 @@ bool parseParameterList( const char* & scursor, const char * const send, // store the last attribute/value pair in the result map now: if ( !attribute.isNull() ) result.insert( attribute, value ); // and extract the information from the new raw attribute: - value = QString::null; + value = TQString::null; attribute = it.key(); mode = NoMode; // is the value encoded? @@ -1348,7 +1348,7 @@ bool parseParameterList( const char* & scursor, const char * const send, } else { // not encoded. if ( (*it).qpair.first ) - value += QString::fromLatin1( (*it).qpair.first, (*it).qpair.second ); + value += TQString::fromLatin1( (*it).qpair.first, (*it).qpair.second ); else value += (*it).qstring; } @@ -1361,14 +1361,14 @@ bool parseParameterList( const char* & scursor, const char * const send, // save result already: result.insert( attribute, value ); // force begin of a new attribute: - attribute = QString::null; + attribute = TQString::null; } } else /* it.key().startsWith( attribute ) */ { // // continuation // - // ignore the section and trust QMap to have sorted the keys: + // ignore the section and trust TQMap to have sorted the keys: if ( it.key().endsWith( asterisk ) ) { // encoded decodeRFC2231Value( rfc2231Codec, textcodec, @@ -1377,7 +1377,7 @@ bool parseParameterList( const char* & scursor, const char * const send, } else { // not encoded if ( (*it).qpair.first ) - value += QString::fromLatin1( (*it).qpair.first, (*it).qpair.second ); + value += TQString::fromLatin1( (*it).qpair.first, (*it).qpair.second ); else value += (*it).qstring; } @@ -1504,7 +1504,7 @@ static bool parseAlphaNumericTimeZone( const char* & scursor, } // don't choke just because we don't happen to know the time zone - KMIME_WARN_UNKNOWN(time zone,QCString( maybeTimeZone.first, maybeTimeZone.second+1 )); + KMIME_WARN_UNKNOWN(time zone,TQCString( maybeTimeZone.first, maybeTimeZone.second+1 )); secsEastOfGMT = 0; timeZoneKnown = false; return true; -- cgit v1.2.1