NAME
SMIME_crlf_copy
—
buffered copy between BIOs
SYNOPSIS
int
SMIME_crlf_copy
(BIO *in_bio,
BIO *out_bio, int flags);
DESCRIPTION
SMIME_crlf_copy
()
copies data from in_bio to
out_bio. To avoid many small write operations on
out_bio, a buffering BIO created with
BIO_f_buffer(3) is temporarily prepended to it.
If the bit SMIME_BINARY
is set in the
flags argument, all the data is copied verbatim using
BIO_read(3) and
BIO_write(3).
Otherwise, the data is read as text. All trailing carriage return and newline characters are discarded from every input line and a single pair of carriage return and newline characters is appended to mark the end of every output line, except that the last output line will end without such a pair if the last input line does not have a newline character at the end.
If the bit SMIME_TEXT
is set in the
flags argument and the bit
SMIME_BINARY
is not set, the line
"Content-Type: text/plain" is prepended to the output with two
pairs of carriage return and newline characters after it.
In any case, BIO_flush(3) is called on the output at the end of the function.
RETURN VALUES
SMIME_crlf_copy
() is intended to return 1
on success or 0 on failure.
SEE ALSO
BIO_f_buffer(3), BIO_flush(3), BIO_new(3), BIO_push(3), BIO_read(3), i2d_ASN1_bio_stream(3), SMIME_text(3), SMIME_write_ASN1(3)
HISTORY
SMIME_crlf_copy
() first appeared in
OpenSSL 1.0.0 and has been available since OpenBSD
4.9.
BUGS
SMIME_crlf_copy
() silently ignores most
errors and may return 1 even if it lost part or all of the data in
transit.
Only blocking BIOs are supported. If any of the BIO arguments is non-blocking, part or all of the data is likely to be silently lost in transit.