index-save.c revision 869e97e89856be3d7b32edab14f467d1e3496706
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen/* Copyright (C) 2002 Timo Sirainen */
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainenstatic int write_with_crlf(OBuffer *outbuf, const unsigned char *data,
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen for (i = 0; i < size; i++) {
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen if (data[i] == '\n' && (i == 0 || data[i-1] != '\r')) {
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen /* missing CR */
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen if (o_buffer_send(outbuf, data + start, i - start) < 0)
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen /* \n is written next time */
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen /* if last char is \r, leave it to buffer */
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen if (o_buffer_send(outbuf, data + start, size - start) < 0)
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainenstatic int write_with_lf(OBuffer *outbuf, const unsigned char *data,
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen for (i = 0; i < size; i++) {
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen if (data[i] == '\n' && i > 0 && data[i-1] == '\r') {
2e5d4199ae0f51de146480d13780530c7dd9e3e4Timo Sirainen /* \r\n - skip \r */
start = i;
size--;
return size;
const unsigned char *data;
int failed;
while (data_size > 0) {
if (ret < 0) {
if (errno == 0) {
return FALSE;
if (!failed) {
if (ret < 0) {
return !failed;