Exemplo n.º 1
0
 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];
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 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;
 }