mail-save.c revision 8bdf70ab07588d57373f5f19abb8577985ff358a
/* Copyright (C) 2002 Timo Sirainen */
#include "lib.h"
#include "istream.h"
#include "ostream.h"
#include "message-parser.h"
#include "mail-storage-private.h"
#include "mail-save.h"
{
if (size == 0)
return 0;
start = 0;
for (i = 0; i < size; i++) {
/* missing CR */
return -1;
return -1;
/* \n is written next time */
start = i;
}
}
/* if last char is \r, leave it to buffer */
size--;
return -1;
return size;
}
{
if (size == 0)
return 0;
start = 0;
for (i = 0; i < size; i++) {
/* \r\n - skip \r */
i - start - 1) < 0)
return -1;
/* \n is written next time */
start = i;
}
}
/* if last char is \r, leave it to buffer */
size--;
return -1;
return size;
}
{
else {
"Can't write to file %s: %m", path);
}
}
{
struct message_header_parser_ctx *hdr_ctx;
struct message_header_line *hdr;
int ret = 0;
if (ret <= 0) {
if (ret < 0)
break;
continue;
}
}
if (!hdr->no_newline)
}
}
if (ret >= 0) {
ret = -1;
/* end of headers */
}
return ret < 0 ? -1 : 0;
}
{
const unsigned char *data;
int failed;
if (header_callback != NULL) {
context, write_func) < 0)
return -1;
}
for (;;) {
if (!failed) {
if (ret < 0) {
} else {
}
}
if (ret < 0) {
if (errno == 0) {
/* EOF */
if (input->disconnected) {
/* too early */
"Unexpected EOF");
}
break;
"Timeout while waiting for input");
} else {
"Error reading mail from client: %m");
}
break;
}
}
return failed ? -1 : 0;
}
{
return -1;
input);
}