istream-crlf.c revision 5478609e31a7665ee108ded988a309673f221aa1
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan Bosch/* Copyright (c) 2007 Dovecot authors, see the included COPYING file */
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomistatic void i_stream_crlf_destroy(struct iostream_private *stream)
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi struct crlf_istream *cstream = (struct crlf_istream *)stream;
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomii_stream_crlf_set_max_buffer_size(struct iostream_private *stream,
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi struct crlf_istream *cstream = (struct crlf_istream *)stream;
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi i_stream_set_max_buffer_size(cstream->input, max_size);
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomistatic ssize_t i_stream_crlf_read(struct istream_private *stream)
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi struct crlf_istream *cstream = (struct crlf_istream *)stream;
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi const unsigned char *data;
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi if (ret <= 0 && (ret != -2 || stream->skip == 0)) {
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi /* remove the unused bytes from beginning of buffer */
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi /* buffer is full - grow it */
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi /* @UNSAFE */
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi /* CR without LF */
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi for (; i < size && dest < stream->buffer_size; i++) {
c31803dcbdf3d4e3b836134a2a04ee2cd5251ce5Aki Tuomi /* CR without LF */
return ret;
static void ATTR_NORETURN
static const struct stat *
static struct istream *