[dovecot-cvs] dovecot/src/lib ostream-crlf.c,1.4,1.5
cras at dovecot.org
cras at dovecot.org
Mon Aug 23 07:36:42 EEST 2004
Update of /home/cvs/dovecot/src/lib
In directory talvi:/tmp/cvs-serv1719
Modified Files:
ostream-crlf.c
Log Message:
fixes
Index: ostream-crlf.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib/ostream-crlf.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- ostream-crlf.c 23 Aug 2004 03:58:08 -0000 1.4
+++ ostream-crlf.c 23 Aug 2004 04:36:40 -0000 1.5
@@ -81,22 +81,21 @@
size_t iov_count, const char *diff, ssize_t *total_r)
{
ssize_t ret;
- size_t pos;
+ size_t i, pos;
ret = o_stream_sendv(cstream->output, iov, iov_count);
if (ret > 0) {
pos = (size_t)ret - 1;
- while (pos >= iov->iov_len) {
- *total_r += iov->iov_len + *diff;
- pos -= iov->iov_len;
- iov++;
- diff++;
+ for (i = 0; i < iov_count && pos >= iov[i].iov_len; i++) {
+ *total_r += iov[i].iov_len + diff[i];
+ pos -= iov[i].iov_len;
}
- cstream->last_cr = *((const char *)iov->iov_base + pos) == '\r';
+ cstream->last_cr =
+ *((const char *)iov[i].iov_base + pos) == '\r';
- if (pos + 1 == iov->iov_len)
- *total_r += iov->iov_len + *diff;
+ if (pos + 1 == iov[i].iov_len)
+ *total_r += iov[i].iov_len + diff[i];
else
*total_r += pos;
}
@@ -198,16 +197,14 @@
size_t iov_count, const char *diff, ssize_t *total_r)
{
ssize_t ret;
- size_t left;
+ size_t i, left;
ret = o_stream_sendv(cstream->output, iov, iov_count);
if (ret >= 0) {
left = (size_t)ret;
- while (left >= iov->iov_len) {
- *total_r += iov->iov_len + *diff;
- left -= iov->iov_len;
- iov++;
- diff++;
+ for (i = 0; i < iov_count && left >= iov[i].iov_len; i++) {
+ *total_r += iov[i].iov_len + diff[i];
+ left -= iov[i].iov_len;
}
*total_r += left;
}
@@ -281,7 +278,7 @@
start = i = next;
- if (new_iov_count == IOVBUF_COUNT) {
+ if (new_iov_count >= IOVBUF_COUNT-1) {
ret = sendv_lf(cstream, iov_buf->data,
new_iov_count, diff_buf->data,
&total);
More information about the dovecot-cvs
mailing list