"crypto/x509/pkix": {"L4", "CRYPTO-MATH"},
// Simple net+crypto-aware packages.
- "mime/multipart": {"L4", "OS", "mime", "crypto/rand", "net/textproto"},
+ "mime/multipart": {"L4", "OS", "mime", "crypto/rand", "net/textproto", "mime/internal/quotedprintable"},
"net/smtp": {"L4", "CRYPTO", "NET", "crypto/tls"},
// HTTP, kingpin of dependencies.
// 2. it will pass through a '\r' or '\n' not preceded by '=', consistent
// with other broken QP encoders & decoders.
-package multipart
+package quotedprintable
import (
"bufio"
line []byte // to be consumed before more of br
}
-func newQuotedPrintableReader(r io.Reader) io.Reader {
+func NewReader(r io.Reader) io.Reader {
return &qpReader{
br: bufio.NewReader(r),
}
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package multipart
+package quotedprintable
import (
"bufio"
}
for _, tt := range tests {
var buf bytes.Buffer
- _, err := io.Copy(&buf, newQuotedPrintableReader(strings.NewReader(tt.in)))
+ _, err := io.Copy(&buf, NewReader(strings.NewReader(tt.in)))
if got := buf.String(); got != tt.want {
t.Errorf("for %q, got %q; want %q", tt.in, got, tt.want)
}
return
}
buf.Reset()
- _, err := io.Copy(&buf, newQuotedPrintableReader(strings.NewReader(s)))
+ _, err := io.Copy(&buf, NewReader(strings.NewReader(s)))
if err != nil {
errStr := err.Error()
if strings.Contains(errStr, "invalid bytes after =:") {
"io"
"io/ioutil"
"mime"
+ "mime/internal/quotedprintable"
"net/textproto"
)
const cte = "Content-Transfer-Encoding"
if bp.Header.Get(cte) == "quoted-printable" {
bp.Header.Del(cte)
- bp.r = newQuotedPrintableReader(bp.r)
+ bp.r = quotedprintable.NewReader(bp.r)
}
return bp, nil
}