checked out changes from fix-location-field-bug branch

This commit is contained in:
bjoernf 2023-09-16 12:02:22 +02:00
parent c484acb88e
commit 0955921918
3 changed files with 62 additions and 38 deletions

View File

@ -1,6 +1,7 @@
#include "list_handling.h"
#include "parse_ics.h"
#include "cli_arg_parsing.h"
#include "date_time_handling.h"
#include "list_handling.h"
#include "string_handling.h"
#include "move_lines.h"
#include "read_until_nl.h"
@ -16,7 +17,7 @@ int main(int argc, char **argv) {
char *ics_path = "";
get_cli_args(argc, argv, &ics_path);
char my_line[4096] = "";
char my_event[8192] = "";
int myfd = open(ics_path, O_RDONLY);
if (myfd == -1) {
@ -33,43 +34,13 @@ int main(int argc, char **argv) {
pretty_print_date_time(current_date);
printf ("\n\n");
char start_date[256] = "";
char end_date[256] = "";
char summary[256] = "";
while(read_until_nl(myfd, my_line)) {
if (strncmp(my_line, "BEGIN:VEVENT", 12) == 0) {
memset(my_line, '\0', sizeof(my_line));
// put DTSTART into variable
seek_string_a(myfd, "DTSTART");
read_until_string(myfd, my_line, "DTEND");
remove_whitespace(my_line);
cut_string(my_line, ':', 1);
strcpy(start_date, my_line);
memset(my_line, '\0', sizeof(my_line));
// put DTEND into variable
read_until_string(myfd, my_line, "SEQUENCE");
remove_whitespace(my_line);
cut_string(my_line, ':', 1);
strcpy(end_date, my_line);
memset(my_line, '\0', sizeof(my_line));
// put summary into variable
seek_string_a(myfd, "SUMMARY:");
read_until_string(myfd, my_line, "TRANSP:");
remove_nl_and_cr(my_line);
strcpy(summary, my_line);
memset(my_line, '\0', sizeof(my_line));
sorted_insert(&head, start_date, end_date, summary);
memset(start_date, '\0', sizeof(start_date));
memset(end_date, '\0', sizeof(end_date));
memset(summary, '\0', sizeof(summary));
while(read_until_nl(myfd, my_event)) {
if (strncmp(my_event, "BEGIN:VEVENT", 12) == 0) {
memset(my_event, '\0', sizeof(my_event));
read_until_string(myfd, my_event, "END:VEVENT");
parse_event(my_event, &head);
}
memset(my_line, '\0', sizeof(my_line));
memset(my_event, '\0', sizeof(my_event));
}
print_upcoming(head, current_date);

50
src/parse_ics.c Normal file
View File

@ -0,0 +1,50 @@
#include "list_handling.h"
#include "parse_ics.h"
#include "string_handling.h"
#include <stdlib.h>
#include <string.h>
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);
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);
}

3
src/parse_ics.h Normal file
View File

@ -0,0 +1,3 @@
#pragma once
void parse_event(char event_string[], struct event **head);