The CRLFDOT filter is useful for data I/O in such protocols as POP3 and SMTP.
In encode mode, this filter replaces each LF ('\n' or ASCII 10) character by CRLF ("\r\n", ASCII 13 10), and "byte-stuffs" the output by producing an additional '.' in front of any '.' appearing at the beginning of a line in input. Upon end of input, it outputs additional ".\r\n", if the last output character was '\n', or "\r\n.\r\n" otherwise.
If created with the -n option, it preserves each CRLF input sequence untranslated, thereby "normalizing" the output (hence the option name).
When decoding, the reverse is performed: each CRLF is replaced by a single LF byte, and additional dots are removed from beginning of lines. A single dot on a line by itself marks the end of the stream and causes the filter to return EOF.