dovecot-1.0: Removed files that were accidentally added at some ...

dovecot at dovecot.org dovecot at dovecot.org
Sun Oct 28 03:12:02 EEST 2007


details:   http://hg.dovecot.org/dovecot-1.0/rev/5e62d52eebe4
changeset: 5437:5e62d52eebe4
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Oct 28 03:11:56 2007 +0300
description:
Removed files that were accidentally added at some point.

diffstat:

2 files changed, 426 deletions(-)
src/lib-mail/message-header-parser.c |  368 ----------------------------------
src/lib-mail/message-header-parser.h |   58 -----

diffs (truncated from 434 to 300 lines):

diff -r 3ac41c6d8304 -r 5e62d52eebe4 src/lib-mail/message-header-parser.c
--- a/src/lib-mail/message-header-parser.c	Sun Oct 28 03:09:51 2007 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,368 +0,0 @@
-/* Copyright (C) 2002-2006 Timo Sirainen */
-
-#include "lib.h"
-#include "buffer.h"
-#include "istream.h"
-#include "str.h"
-#include "message-size.h"
-#include "message-header-parser.h"
-
-struct message_header_parser_ctx {
-	struct message_header_line line;
-
-	struct istream *input;
-	struct message_size *hdr_size;
-
-	string_t *name;
-	buffer_t *value_buf;
-	size_t skip;
-
-	unsigned int skip_initial_lwsp:1;
-	unsigned int skip_line:1;
-	unsigned int has_nuls:1;
-};
-
-struct message_header_parser_ctx *
-message_parse_header_init(struct istream *input, struct message_size *hdr_size,
-			  bool skip_initial_lwsp)
-{
-	struct message_header_parser_ctx *ctx;
-
-	ctx = i_new(struct message_header_parser_ctx, 1);
-	ctx->input = input;
-	ctx->hdr_size = hdr_size;
-	ctx->name = str_new(default_pool, 128);
-	ctx->skip_initial_lwsp = skip_initial_lwsp;
-
-	if (hdr_size != NULL)
-		memset(hdr_size, 0, sizeof(*hdr_size));
-	return ctx;
-}
-
-void message_parse_header_deinit(struct message_header_parser_ctx **_ctx)
-{
-	struct message_header_parser_ctx *ctx = *_ctx;
-
-	i_stream_skip(ctx->input, ctx->skip);
-	if (ctx->value_buf != NULL)
-		buffer_free(ctx->value_buf);
-	str_free(&ctx->name);
-	i_free(ctx);
-
-	*_ctx = NULL;
-}
-
-int message_parse_header_next(struct message_header_parser_ctx *ctx,
-			      struct message_header_line **hdr_r)
-{
-        struct message_header_line *line = &ctx->line;
-	const unsigned char *msg;
-	size_t i, size, startpos, colon_pos, parse_size;
-	int ret;
-	bool last_no_newline;
-
-	*hdr_r = NULL;
-	if (line->eoh)
-		return -1;
-
-	if (ctx->skip > 0) {
-		i_stream_skip(ctx->input, ctx->skip);
-		ctx->skip = 0;
-	}
-
-	startpos = 0; colon_pos = UINT_MAX;
-
-	last_no_newline = line->no_newline;
-	line->no_newline = FALSE;
-
-	if (line->continues) {
-		if (line->use_full_value && !line->continued) {
-			/* save the first line */
-			if (ctx->value_buf != NULL)
-				buffer_set_used_size(ctx->value_buf, 0);
-			else {
-				ctx->value_buf =
-					buffer_create_dynamic(default_pool,
-							      4096);
-			}
-			buffer_append(ctx->value_buf,
-				      line->value, line->value_len);
-		}
-
-		line->continued = TRUE;
-		line->continues = FALSE;
-		colon_pos = 0;
-	} else {
-		/* new header line */
-		line->continued = FALSE;
-                line->name_offset = ctx->input->v_offset;
-	}
-
-	for (;;) {
-		ret = i_stream_read_data(ctx->input, &msg, &size, startpos+1);
-
-		if (ret > 0) {
-			/* we want to know one byte in advance to find out
-			   if it's multiline header */
-			parse_size = size-1;
-		} else {
-			parse_size = size;
-		}
-
-		if (ret <= 0 && startpos == size) {
-			if (ret == -1) {
-				if (startpos > 0) {
-					/* header ended unexpectedly. */
-					line->no_newline = TRUE;
-					ctx->skip = startpos;
-					break;
-				}
-				/* error / EOF with no bytes */
-				return -1;
-			}
-			if (ret == 0 && !ctx->input->eof) {
-				/* stream is nonblocking - need more data */
-				return 0;
-			}
-
-			if (msg[0] == '\n' ||
-			    (msg[0] == '\r' && size > 1 && msg[1] == '\n')) {
-				/* end of headers - this mostly happens just
-				   with mbox where headers are read separately
-				   from body */
-				size = 0;
-				if (ctx->hdr_size != NULL)
-					ctx->hdr_size->lines++;
-				if (msg[0] == '\r')
-					ctx->skip = 2;
-				else {
-					ctx->skip = 1;
-					if (ctx->hdr_size != NULL)
-						ctx->hdr_size->virtual_size++;
-				}
-				break;
-			}
-
-			/* a) line is larger than input buffer
-			   b) header ended unexpectedly */
-			if (colon_pos == UINT_MAX && ret == -2 &&
-			    !line->continued) {
-				/* header name is huge. just skip it. */
-				if (msg[size-1] == '\r')
-					size--;
-
-				if (ctx->hdr_size != NULL) {
-					ctx->hdr_size->physical_size += size;
-					ctx->hdr_size->virtual_size += size;
-				}
-				i_stream_skip(ctx->input, size);
-				ctx->skip_line = TRUE;
-				startpos = 0;
-				continue;
-			}
-
-			if (ret == -2) {
-				/* go back to last LWSP if found. */
-				size_t min_pos =
-					!line->continued ? colon_pos : 0;
-				for (i = size-1; i > min_pos; i--) {
-					if (IS_LWSP(msg[i])) {
-						size = i;
-						break;
-					}
-				}
-
-				line->continues = TRUE;
-			}
-			line->no_newline = TRUE;
-			ctx->skip = size;
-			break;
-		}
-
-		/* find ':' */
-		if (colon_pos == UINT_MAX) {
-			for (i = startpos; i < parse_size; i++) {
-				if (msg[i] <= ':') {
-					if (msg[i] == ':') {
-						colon_pos = i;
-						line->full_value_offset =
-							ctx->input->v_offset +
-							i + 1;
-						break;
-					}
-					if (msg[i] == '\n') {
-						/* end of headers, or error */
-						break;
-					}
-
-					if (msg[i] == '\0')
-						ctx->has_nuls = TRUE;
-				}
-			}
-		}
-
-		/* find '\n' */
-		for (i = startpos; i < parse_size; i++) {
-			if (msg[i] <= '\n') {
-				if (msg[i] == '\n')
-					break;
-				if (msg[i] == '\0')
-					ctx->has_nuls = TRUE;
-			}
-		}
-
-		if (i < parse_size) {
-			/* got a line */
-			if (ctx->skip_line) {
-				/* skipping a huge line */
-				if (ctx->hdr_size != NULL) {
-					ctx->hdr_size->physical_size += i;
-					ctx->hdr_size->virtual_size += i;
-					if (i == 0 || msg[i-1] != '\r') {
-						/* missing CR */
-						ctx->hdr_size->virtual_size++;
-					}
-				}
-				i_stream_skip(ctx->input, i);
-				startpos = 0;
-				ctx->skip_line = FALSE;
-				continue;
-			}
-			line->continues = i+1 < size && IS_LWSP(msg[i+1]);
-
-			if (ctx->hdr_size != NULL)
-				ctx->hdr_size->lines++;
-			if (i == 0 || msg[i-1] != '\r') {
-				/* missing CR */
-				if (ctx->hdr_size != NULL)
-					ctx->hdr_size->virtual_size++;
-				size = i;
-			} else {
-				size = i-1;
-			}
-
-			ctx->skip = i+1;
-			break;
-		}
-
-		startpos = i;
-	}
-
-	if (size == 0) {
-		/* end of headers */
-		line->eoh = TRUE;
-		line->name_len = line->value_len = line->full_value_len = 0;
-		line->name = ""; line->value = line->full_value = NULL;
-		line->middle = NULL; line->middle_len = 0;
-	} else if (line->continued) {
-		line->value = msg;
-		line->value_len = size;
-		line->middle = NULL;
-		line->middle_len = 0;
-	} else if (colon_pos == UINT_MAX) {
-		/* missing ':', assume the whole line is name */
-		line->value = NULL;
-		line->value_len = 0;
-
-		str_truncate(ctx->name, 0);
-		str_append_n(ctx->name, msg, size);
-		line->name = str_c(ctx->name);
-		line->name_len = str_len(ctx->name);
-
-		line->middle = NULL;
-		line->middle_len = 0;
-	} else {
-		size_t pos;
-
-		line->value = msg + colon_pos+1;
-		line->value_len = size - colon_pos - 1;
-		if (ctx->skip_initial_lwsp) {
-			/* get value. skip all LWSP after ':'. Note that
-			   RFC2822 doesn't say we should, but history behind
-			   it..
-
-			   Exception to this is if the value consists only of
-			   LWSP, then skip only the one LWSP after ':'. */
-			for (pos = 0; pos < line->value_len; pos++) {
-				if (!IS_LWSP(line->value[0]))
-					break;
-			}
-
-			if (pos == line->value_len) {
-				/* everything was LWSP */
-				if (line->value_len > 0 &&
-				    IS_LWSP(line->value[0]))
-					pos = 1;
-			}


More information about the dovecot-cvs mailing list