2023-09-16 12:02:22 +02:00
|
|
|
#include "list_handling.h"
|
|
|
|
#include "parse_ics.h"
|
|
|
|
#include "string_handling.h"
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
2023-12-30 05:02:49 +01:00
|
|
|
#include <assert.h>
|
2023-09-16 12:02:22 +02:00
|
|
|
|
|
|
|
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);
|
|
|
|
|
2023-12-30 05:02:49 +01:00
|
|
|
assert(start_date != NULL);
|
|
|
|
assert(end_date != NULL);
|
|
|
|
assert(sequence != NULL);
|
|
|
|
assert(summary != NULL);
|
|
|
|
assert(transp != NULL);
|
|
|
|
|
2023-09-16 12:02:22 +02:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|