From d8797046d7223316acfbe6a4e1465859dc9eb4a4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Sat, 11 Apr 2009 13:57:35 +0000 Subject: [PATCH] * use linebuffered reading while reading calendar; first draft. --- webcit/calendar.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/webcit/calendar.c b/webcit/calendar.c index 9fcf8b7c8..d110b8f50 100644 --- a/webcit/calendar.c +++ b/webcit/calendar.c @@ -1004,6 +1004,8 @@ void load_ical_object(long msgnum, int unread, struct calview *calv ) { + StrBuf *Buf; + size_t BufLen; char buf[1024]; char from[128] = ""; char mime_partnum[256]; @@ -1021,13 +1023,14 @@ void load_ical_object(long msgnum, int unread, serv_getln(buf, sizeof buf); if (buf[0] != '1') return; - while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { - if (!strncasecmp(buf, "part=", 5)) { - extract_token(mime_filename, &buf[5], 1, '|', sizeof mime_filename); - extract_token(mime_partnum, &buf[5], 2, '|', sizeof mime_partnum); - extract_token(mime_disposition, &buf[5], 3, '|', sizeof mime_disposition); - extract_token(mime_content_type, &buf[5], 4, '|', sizeof mime_content_type); - mime_length = extract_int(&buf[5], 5); + Buf = NewStrBuf(); + while (BufLen = StrBuf_ServGetlnBuffered(Buf), strcmp(ChrPtr(Buf), "000")) { + if (!strncasecmp(ChrPtr(Buf), "part=", 5)) { + extract_token(mime_filename, &ChrPtr(Buf)[5], 1, '|', sizeof mime_filename); + extract_token(mime_partnum, &ChrPtr(Buf)[5], 2, '|', sizeof mime_partnum); + extract_token(mime_disposition, &ChrPtr(Buf)[5], 3, '|', sizeof mime_disposition); + extract_token(mime_content_type, &ChrPtr(Buf)[5], 4, '|', sizeof mime_content_type); + mime_length = extract_int(&ChrPtr(Buf)[5], 5); if ( (!strcasecmp(mime_content_type, "text/calendar")) || (!strcasecmp(mime_content_type, "application/ics")) @@ -1036,10 +1039,11 @@ void load_ical_object(long msgnum, int unread, strcpy(relevant_partnum, mime_partnum); } } - else if (!strncasecmp(buf, "from=", 4)) { - extract_token(from, buf, 1, '=', sizeof(from)); + else if (!strncasecmp(ChrPtr(Buf), "from=", 4)) { + extract_token(from, ChrPtr(Buf), 1, '=', sizeof(from)); } } + FreeStrBuf(&Buf); if (!IsEmptyStr(relevant_partnum)) { relevant_source = load_mimepart(msgnum, relevant_partnum); -- 2.39.2