From b2a2d09a92ff8d90f8b3bef29527f5becea63613 Mon Sep 17 00:00:00 2001 From: bjt-user Date: Sat, 20 Jan 2024 20:38:23 +0100 Subject: [PATCH] improved folding function --- src/parse_ics.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/parse_ics.c b/src/parse_ics.c index 9955cec..5e77cb8 100644 --- a/src/parse_ics.c +++ b/src/parse_ics.c @@ -7,7 +7,8 @@ #include #include -void parse_event(char event_string[], struct event **head) { +void parse_event(char event_string[], struct event **head) +{ char *start_date = strstr(event_string, "\nDTSTART"); char *end_date = strstr(event_string, "\nDTEND"); char *summary = strstr(event_string, "\nSUMMARY"); @@ -24,9 +25,10 @@ void parse_event(char event_string[], struct event **head) { assert(end_date != NULL); assert(summary != NULL); - strncpy(start_date_str, start_date, strchr(start_date + 1, '\n') - start_date); + strncpy(start_date_str, start_date, + strchr(start_date + 1, '\n') - start_date); - strncpy(end_date_str, end_date, strchr(end_date + 1, '\n') - end_date); + strncpy(end_date_str, end_date, strchr(end_date + 1, '\n') - end_date); strncpy(summary_str, summary, strchr(summary + 1, '\n') - summary); @@ -36,7 +38,7 @@ void parse_event(char event_string[], struct event **head) { remove_whitespace(end_date_str); cut_string(end_date_str, ':', 1); - + sorted_insert(head, start_date_str, end_date_str, summary_str); free(start_date_str); @@ -46,17 +48,21 @@ void parse_event(char event_string[], struct event **head) { // the unfolded string has a semicolon // as a separator between what where previously separate lines -void unfolding_string(char* folded_string, char* unfolded_string) { +void unfolding_string(char *folded_string, char *unfolded_string) +{ int j = 0; for (int i = 0; i < strlen(folded_string); i++) { - if (folded_string[i] == '\r' && folded_string[i+1] == '\n') { - while (isblank(folded_string[i+2])) { + if (folded_string[i] == '\r' && folded_string[i + 1] == '\n' + && isblank(folded_string[i + 2])) { + i+=3; + while (isblank(folded_string[i])) { i++; } + unfolded_string[j] = folded_string[i]; + j++; } else { unfolded_string[j] = folded_string[i]; j++; } } } -