private static bool IsUUEncodeBegin(byte[] data, int line, int nextNL) { var mimeString = new MimeString(data, line, nextNL - line); if (mimeString.Length < 13 || !mimeString.HasPrefixEq(UUBegin, 0, 6)) return false; var index = 6; while (index < 10 && (48 <= mimeString[index] && 55 >= mimeString[index])) ++index; return index != 6 && 32 == mimeString[index]; }
private static bool IsUUEncodeEnd(byte[] data, int line, int nextNL) { var mimeString = new MimeString(data, line, nextNL - line); return mimeString.Length >= 3 && mimeString.HasPrefixEq(UUEnd, 0, 3); }
private bool IsQuotingRequired(MimeString mimeStr, bool allowUTF8) { var writeState = WriteState.Begin; var mimeString = new MimeString(WordBreakBytes, 0, WordBreakBytes.Length); int offset; int count; var data = mimeStr.GetData(out offset, out count); while (count != 0) { switch (writeState) { case WriteState.Begin: var characterCount = 0; var endOf = MimeScan.FindEndOf(MimeScan.Token.Atom, data, offset, count, out characterCount, allowUTF8); if (endOf == 0) { if (count <= 3 || offset != 0 || !mimeString.HasPrefixEq(data, 0, 3)) return true; offset += 3; count -= 3; writeState = WriteState.Begin; continue; } offset += endOf; count -= endOf; writeState = WriteState.Atom; continue; case WriteState.Atom: if ((count < 2 || data[offset] != 32) && (count < 1 || data[offset] != 46)) return true; ++offset; --count; writeState = WriteState.Begin; continue; default: continue; } } return false; }