From 86074fa3b45c751881e4e81eea6c0c21b2208d37 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 30 Oct 2018 09:58:41 +0100 Subject: input_gadgets.c: acknowledge onset / expire times --- input_gadgets.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'input_gadgets.c') diff --git a/input_gadgets.c b/input_gadgets.c index aad8aad..850c738 100644 --- a/input_gadgets.c +++ b/input_gadgets.c @@ -14,6 +14,7 @@ #define fh_temperature_regex "\\s*\n\\s*Wetterdaten vom ([0-9]{2})\\.([0-9]{2})\\.([0-9]{4}) um ([0-9:]{5}) MEZ(.|\n)*>Temperatur\\s*\n\\s*]*>([^<]*)" #define wetter_warnung_filename_regex "^2\\.49\\.0\\.1\\.276\\.0\\.DWD\\.PVW\\.([0-9]+)\\." +#define warnings_future_timespan (60*60*10) static size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) @@ -768,6 +769,11 @@ char *gadgets_retrieve_weather_warnings(char *output, int max_len) if (!is_relevant) continue; + if (warnings[warnings_len].onset >= time(NULL) + warnings_future_timespan) + continue; // start is too far ahead + if (warnings[warnings_len].expires < time(NULL)) + continue; // warning has expired + text = xml_extract_string(doc, cur_node, "headline"); if (text == NULL) { fprintf(stderr, "Failed to enter \n"); @@ -852,8 +858,14 @@ char *gadgets_retrieve_weather_warnings(char *output, int max_len) for (int i=0; i 0) { ende += snprintf(ende, output + max_len - ende, "%s", warnings[i].event); - if ((i+1 0)) - ende += snprintf(ende, output + max_len - ende, "; ", warnings[i].event); + if (output + max_len - ende > 0) { + if (warnings[i].onset > time(NULL)) + ende += strftime(ende, output + max_len - ende, " ab %F %T", localtime(&warnings[i].onset)); + if (warnings[i].expires < time(NULL) + warnings_future_timespan) + ende += strftime(ende, output + max_len - ende, " bis %F %T", localtime(&warnings[i].expires)); + if ((i+1 0)) + ende += snprintf(ende, output + max_len - ende, "; ", warnings[i].event); + } } free(warnings[i].headline); -- cgit v1.2.3-54-g00ecf