From bcc820ea743e0448b26a8fee5e8e0a9f85bc3c70 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Mon, 18 Aug 2014 11:29:46 +0200 Subject: Handle CRLF line endings in iCal files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RFC 2445 mentions that CRLF line endings may be used in iCal files. Handle them properly when importing. Reported-by: HÃ¥kan Jerning Signed-off-by: Lukas Fleischer --- src/ical.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/ical.c') diff --git a/src/ical.c b/src/ical.c index 38e1b33..264348b 100644 --- a/src/ical.c +++ b/src/ical.c @@ -399,8 +399,12 @@ ical_readline_init(FILE * fdi, char *buf, char *lstore, unsigned *ln) *buf = *lstore = '\0'; if (fgets(lstore, BUFSIZ, fdi)) { - if ((eol = strchr(lstore, '\n')) != NULL) - *eol = '\0'; + if ((eol = strchr(lstore, '\n')) != NULL) { + if (*(eol - 1) == '\r') + *(eol - 1) = '\0'; + else + *eol = '\0'; + } (*ln)++; } } @@ -413,8 +417,12 @@ static int ical_readline(FILE * fdi, char *buf, char *lstore, unsigned *ln) (*ln)++; while (fgets(lstore, BUFSIZ, fdi) != NULL) { - if ((eol = strchr(lstore, '\n')) != NULL) - *eol = '\0'; + if ((eol = strchr(lstore, '\n')) != NULL) { + if (*(eol - 1) == '\r') + *(eol - 1) = '\0'; + else + *eol = '\0'; + } if (*lstore != SPACE && *lstore != TAB) break; strncat(buf, lstore + 1, BUFSIZ - strlen(buf) - 1); -- cgit v1.2.3-54-g00ecf