improved folding function

This commit is contained in:
bjt-user 2024-01-20 20:38:23 +01:00
parent f874fb99a6
commit b2a2d09a92
1 changed files with 14 additions and 8 deletions

View File

@ -7,7 +7,8 @@
#include <ctype.h>
#include <stdio.h>
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++;
}
}
}