#include "list_handling.h" #include "parse_ics.h" #include "string_handling.h" #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 *sequence = strstr(event_string, "\r\nSEQUENCE:"); char *summary = strstr(event_string, "\r\nSUMMARY:"); char *location = strstr(event_string, "\r\nLOCATION:"); char *transp = strstr(event_string, "\r\nTRANSP:"); char *start_date_str = malloc(256); char *end_date_str = malloc(256); char *summary_str = malloc(512); memset(start_date_str, '\0', 256); memset(end_date_str, '\0', 256); memset(summary_str, '\0', 512); assert(start_date != NULL); assert(end_date != NULL); assert(sequence != NULL); assert(summary != NULL); assert(transp != NULL); strncpy(start_date_str, start_date, end_date - start_date); strncpy(end_date_str, end_date, sequence - end_date); if (location != NULL) { strncpy(summary_str,\ summary + strlen("\r\nSUMMARY:"),\ location - summary - strlen("\r\nSUMMARY:")); } else { strncpy(summary_str,\ summary + strlen("\r\nSUMMARY:"),\ transp - summary - strlen("\r\nSUMMARY:")); } // parse dates remove_whitespace(start_date_str); cut_string(start_date_str, ':', 1); 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); free(end_date_str); free(summary_str); }