changeset 12:a4423c83b2b0 HEAD

moved lib-imap/imap-message-send.* into lib-mail/message-send.*
author Timo Sirainen <tss@iki.fi>
date Thu, 22 Aug 2002 17:26:17 +0300
parents e285afe55c48
children bb294faf7379
files src/lib-imap/Makefile.am src/lib-imap/imap-message-send.c src/lib-imap/imap-message-send.h src/lib-mail/Makefile.am src/lib-mail/message-send.c src/lib-mail/message-send.h src/lib-storage/index/index-fetch-section.c src/lib-storage/index/index-fetch.c
diffstat 8 files changed, 96 insertions(+), 98 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-imap/Makefile.am	Thu Aug 22 16:27:29 2002 +0300
+++ b/src/lib-imap/Makefile.am	Thu Aug 22 17:26:17 2002 +0300
@@ -9,7 +9,6 @@
 	imap-envelope.c \
 	imap-match.c \
 	imap-message-cache.c \
-	imap-message-send.c \
 	imap-parser.c \
 	imap-util.c
 
@@ -18,6 +17,5 @@
 	imap-envelope.h \
 	imap-match.h \
 	imap-message-cache.h \
-	imap-message-send.h \
 	imap-parser.h \
 	imap-util.h
--- a/src/lib-imap/imap-message-send.c	Thu Aug 22 16:27:29 2002 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/* Copyright (C) 2002 Timo Sirainen */
-
-#include "lib.h"
-#include "iobuffer.h"
-#include "imap-message-send.h"
-#include "message-size.h"
-
-int imap_message_send(IOBuffer *outbuf, IOBuffer *inbuf,
-		      MessageSize *msg_size, off_t virtual_skip,
-		      off_t max_virtual_size)
-{
-	unsigned char *msg;
-	unsigned int i, size;
-	int cr_skipped, add_cr;
-
-	if (max_virtual_size == -1 ||
-	    max_virtual_size > (off_t)msg_size->virtual_size - virtual_skip)
-		max_virtual_size = msg_size->virtual_size - virtual_skip;
-
-	if (msg_size->physical_size == 0 || virtual_skip >= max_virtual_size)
-		return TRUE;
-
-	if (msg_size->physical_size == msg_size->virtual_size) {
-		/* no need to kludge with CRs, we can use sendfile() */
-		io_buffer_skip(inbuf, virtual_skip);
-		return io_buffer_send_buf(outbuf, inbuf, max_virtual_size) > 0;
-	}
-
-	message_skip_virtual(inbuf, virtual_skip, NULL, &cr_skipped);
-
-	/* go through the message data and insert CRs where needed.  */
-	while (io_buffer_read_data(inbuf, &msg, &size, 0) >= 0) {
-		add_cr = FALSE;
-		for (i = 0; i < size; i++) {
-			if (msg[i] == '\n') {
-				if ((i == 0 && !cr_skipped) ||
-				    (i > 0 && msg[i-1] != '\r')) {
-					/* missing CR */
-					if (max_virtual_size > 0)
-						max_virtual_size--;
-					add_cr = TRUE;
-					break;
-				}
-
-			}
-
-			if (max_virtual_size > 0) {
-				if (--max_virtual_size == 0) {
-					i++;
-					break;
-				}
-			}
-		}
-
-		/* send the data read so far */
-		if (io_buffer_send(outbuf, msg, i) <= 0)
-			return FALSE;
-
-		if (add_cr) {
-			if (io_buffer_send(outbuf, "\r", 1) <= 0)
-				return FALSE;
-		}
-
-		/* see if we've reached the limit */
-		if (max_virtual_size == 0)
-			break;
-
-		cr_skipped = TRUE;
-		io_buffer_skip(inbuf, i);
-	}
-
-	return TRUE;
-}
--- a/src/lib-imap/imap-message-send.h	Thu Aug 22 16:27:29 2002 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-#ifndef __IMAP_MESSAGE_SEND_H
-#define __IMAP_MESSAGE_SEND_H
-
-#include "message-parser.h"
-
-/* Send message to client inserting CRs if needed. If max_virtual_size is
-   not negative, only that much of the message is sent. If msg_fd is -1, only
-   msg is used. Returns TRUE if successful. */
-int imap_message_send(IOBuffer *outbuf, IOBuffer *inbuf,
-		      MessageSize *msg_size, off_t virtual_skip,
-		      off_t max_virtual_size);
-
-#endif
--- a/src/lib-mail/Makefile.am	Thu Aug 22 16:27:29 2002 +0300
+++ b/src/lib-mail/Makefile.am	Thu Aug 22 17:26:17 2002 +0300
@@ -6,6 +6,7 @@
 libmail_a_SOURCES = \
 	message-parser.c \
 	message-content-parser.c \
+	message-send.c \
 	message-size.c \
 	rfc822-address.c \
 	rfc822-date.c \
@@ -14,6 +15,7 @@
 noinst_HEADERS = \
 	message-parser.h \
 	message-content-parser.h \
+	message-send.h \
 	message-size.h \
 	rfc822-address.h \
 	rfc822-date.h \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lib-mail/message-send.c	Thu Aug 22 17:26:17 2002 +0300
@@ -0,0 +1,72 @@
+/* Copyright (C) 2002 Timo Sirainen */
+
+#include "lib.h"
+#include "iobuffer.h"
+#include "message-send.h"
+#include "message-size.h"
+
+int message_send(IOBuffer *outbuf, IOBuffer *inbuf, MessageSize *msg_size,
+		 off_t virtual_skip, off_t max_virtual_size)
+{
+	unsigned char *msg;
+	unsigned int i, size;
+	int cr_skipped, add_cr;
+
+	if (max_virtual_size == -1 ||
+	    max_virtual_size > (off_t)msg_size->virtual_size - virtual_skip)
+		max_virtual_size = msg_size->virtual_size - virtual_skip;
+
+	if (msg_size->physical_size == 0 || virtual_skip >= max_virtual_size)
+		return TRUE;
+
+	if (msg_size->physical_size == msg_size->virtual_size) {
+		/* no need to kludge with CRs, we can use sendfile() */
+		io_buffer_skip(inbuf, virtual_skip);
+		return io_buffer_send_buf(outbuf, inbuf, max_virtual_size) > 0;
+	}
+
+	message_skip_virtual(inbuf, virtual_skip, NULL, &cr_skipped);
+
+	/* go through the message data and insert CRs where needed.  */
+	while (io_buffer_read_data(inbuf, &msg, &size, 0) >= 0) {
+		add_cr = FALSE;
+		for (i = 0; i < size; i++) {
+			if (msg[i] == '\n') {
+				if ((i == 0 && !cr_skipped) ||
+				    (i > 0 && msg[i-1] != '\r')) {
+					/* missing CR */
+					if (max_virtual_size > 0)
+						max_virtual_size--;
+					add_cr = TRUE;
+					break;
+				}
+
+			}
+
+			if (max_virtual_size > 0) {
+				if (--max_virtual_size == 0) {
+					i++;
+					break;
+				}
+			}
+		}
+
+		/* send the data read so far */
+		if (io_buffer_send(outbuf, msg, i) <= 0)
+			return FALSE;
+
+		if (add_cr) {
+			if (io_buffer_send(outbuf, "\r", 1) <= 0)
+				return FALSE;
+		}
+
+		/* see if we've reached the limit */
+		if (max_virtual_size == 0)
+			break;
+
+		cr_skipped = TRUE;
+		io_buffer_skip(inbuf, i);
+	}
+
+	return TRUE;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lib-mail/message-send.h	Thu Aug 22 17:26:17 2002 +0300
@@ -0,0 +1,12 @@
+#ifndef __MESSAGE_SEND_H
+#define __MESSAGE_SEND_H
+
+#include "message-parser.h"
+
+/* Send message to client inserting CRs if needed. If max_virtual_size is
+   not negative, only that much of the message is sent. If msg_fd is -1, only
+   msg is used. Returns TRUE if successful. */
+int message_send(IOBuffer *outbuf, IOBuffer *inbuf, MessageSize *msg_size,
+		 off_t virtual_skip, off_t max_virtual_size);
+
+#endif
--- a/src/lib-storage/index/index-fetch-section.c	Thu Aug 22 16:27:29 2002 +0300
+++ b/src/lib-storage/index/index-fetch-section.c	Thu Aug 22 17:26:17 2002 +0300
@@ -4,7 +4,7 @@
 #include "temp-string.h"
 #include "iobuffer.h"
 #include "rfc822-tokenize.h"
-#include "imap-message-send.h"
+#include "message-send.h"
 #include "index-storage.h"
 #include "index-fetch.h"
 
@@ -49,7 +49,7 @@
 	str = t_strdup_printf("{%lu}\r\n", (unsigned long) size.virtual_size);
 	(void)io_buffer_send(ctx->outbuf, str, strlen(str));
 
-	(void)imap_message_send(ctx->outbuf, inbuf, &size, 0, sect->max_size);
+	(void)message_send(ctx->outbuf, inbuf, &size, 0, sect->max_size);
 	return TRUE;
 }
 
@@ -206,8 +206,8 @@
 		str = t_strdup_printf("{%lu}\r\n",
 				      (unsigned long) size->virtual_size);
 		(void)io_buffer_send(ctx->outbuf, str, strlen(str));
-		(void)imap_message_send(ctx->outbuf, inbuf, size,
-					sect->skip, sect->max_size);
+		(void)message_send(ctx->outbuf, inbuf, size,
+				   sect->skip, sect->max_size);
 		return;
 	}
 
@@ -328,8 +328,8 @@
 
 	/* FIXME: potential performance problem with big messages:
 	   FETCH BODY[1]<100000..1024>, hopefully no clients do this */
-	(void)imap_message_send(ctx->outbuf, inbuf, &part->body_size,
-				sect->skip, sect->max_size);
+	(void)message_send(ctx->outbuf, inbuf, &part->body_size,
+			   sect->skip, sect->max_size);
 	return TRUE;
 }
 
--- a/src/lib-storage/index/index-fetch.c	Thu Aug 22 16:27:29 2002 +0300
+++ b/src/lib-storage/index/index-fetch.c	Thu Aug 22 17:26:17 2002 +0300
@@ -7,9 +7,9 @@
 #include "index-storage.h"
 #include "index-fetch.h"
 #include "mail-messageset.h"
+#include "message-send.h"
 #include "imap-util.h"
 #include "imap-message-cache.h"
-#include "imap-message-send.h"
 
 #include <unistd.h>
 
@@ -106,7 +106,7 @@
 
 	body_size.physical_size += hdr_size.physical_size;
 	body_size.virtual_size += hdr_size.virtual_size;
-	(void)imap_message_send(ctx->outbuf, inbuf, &body_size, 0, -1);
+	(void)message_send(ctx->outbuf, inbuf, &body_size, 0, -1);
 }
 
 static void index_fetch_rfc822_header(MailIndexRecord *rec, FetchContext *ctx)
@@ -125,7 +125,7 @@
 	str = t_strdup_printf(" RFC822.HEADER {%lu}\r\n",
 			      (unsigned long) hdr_size.virtual_size);
 	(void)io_buffer_send(ctx->outbuf, str, strlen(str));
-	(void)imap_message_send(ctx->outbuf, inbuf, &hdr_size, 0, -1);
+	(void)message_send(ctx->outbuf, inbuf, &hdr_size, 0, -1);
 }
 
 static void index_fetch_rfc822_text(MailIndexRecord *rec, FetchContext *ctx)
@@ -144,7 +144,7 @@
 	str = t_strdup_printf(" RFC822.TEXT {%lu}\r\n",
 			      (unsigned long) body_size.virtual_size);
 	(void)io_buffer_send(ctx->outbuf, str, strlen(str));
-	(void)imap_message_send(ctx->outbuf, inbuf, &body_size, 0, -1);
+	(void)message_send(ctx->outbuf, inbuf, &body_size, 0, -1);
 }
 
 static ImapCacheField index_get_cache(MailFetchData *fetch_data)