diff --git a/src/parse_ics.c b/src/parse_ics.c index a84a170..9955cec 100644 --- a/src/parse_ics.c +++ b/src/parse_ics.c @@ -5,11 +5,12 @@ #include #include #include +#include void parse_event(char event_string[], struct event **head) { - char *start_date = strstr(event_string, "\r\nDTSTART"); - char *end_date = strstr(event_string, "\r\nDTEND"); - char *summary = strstr(event_string, "\r\nSUMMARY"); + char *start_date = strstr(event_string, "\nDTSTART"); + char *end_date = strstr(event_string, "\nDTEND"); + char *summary = strstr(event_string, "\nSUMMARY"); char *start_date_str = malloc(256); char *end_date_str = malloc(256); @@ -23,11 +24,11 @@ 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, '\r') - start_date); + strncpy(start_date_str, start_date, strchr(start_date + 1, '\n') - start_date); - strncpy(end_date_str, end_date, strchr(end_date, '\r') - end_date); + strncpy(end_date_str, end_date, strchr(end_date + 1, '\n') - end_date); - strncpy(summary_str, summary, strchr(summary, '\r') - summary); + strncpy(summary_str, summary, strchr(summary + 1, '\n') - summary); // parse dates remove_whitespace(start_date_str); @@ -51,8 +52,6 @@ void unfolding_string(char* folded_string, char* unfolded_string) { if (folded_string[i] == '\r' && folded_string[i+1] == '\n') { while (isblank(folded_string[i+2])) { i++; - if (! isblank(folded_string[i+2])) - folded_string[i+1] = ';'; } } else { unfolded_string[j] = folded_string[i]; diff --git a/tests/folded_with_tabs.ics b/tests/folded_with_tabs.ics index c819ad0..0c2e76c 100644 --- a/tests/folded_with_tabs.ics +++ b/tests/folded_with_tabs.ics @@ -9,7 +9,9 @@ UID:ical-19709628-example-com DTSTART;VALUE=DATE:20250622T000000 DTEND;VALUE=DATE:20250711T000000 TRANSP:TRANSPARENT -SUMMARY:vacation (approved) +SUMMARY:vacation + (approved) + (again) DESCRIPTION:vacation\n\n status: approved\n workdays: 13,0\n\n