From 0db924dc14a38109d892613bb4e16159ff305350 Mon Sep 17 00:00:00 2001 From: Koni Marti Date: Thu, 11 Aug 2022 16:52:04 +0200 Subject: [PATCH] filters: fix calendar filter parsing Fix parsing of colons. Since the field separator is also the colon, it could mess up the parsed fields, i.e. a subject line like "WG: dinner" could end up as "WG" instead of keeping the entire string. Fixes: ab941eb ("filters: posix compliant rewrite of calendar filter") Signed-off-by: Koni Marti Acked-by: Robin Jarry --- filters/calendar | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/filters/calendar b/filters/calendar index b9bd3a0..2808e13 100755 --- a/filters/calendar +++ b/filters/calendar @@ -115,20 +115,24 @@ BEGIN { } /^UID/ { - id = $2 + line = prepare($0) + id = line } /^STATUS/ { - status = $2 + line = prepare($0) + status = line } /^DESCRIPTION/ { - entry = entry $2 + line = prepare($0) + entry = entry line indescription = 1; } /^SUMMARY/ { - summary = $2 + line = prepare($0) + summary = line insummary = 1; } @@ -138,7 +142,8 @@ BEGIN { } /^LOCATION/ { - location = unescape($2, 0); + line = prepare($0) + location = unescape(line, 0); inlocation = 1; } @@ -187,6 +192,11 @@ BEGIN { } } +func prepare(line) { + gsub($1, "", line) + gsub(/^[: ]/, "", line) + return line +} function unescape(input, preserve_newlines) { @@ -237,6 +247,7 @@ function add_attendee(attendee) function find_full_name(line) { name = get_value(line, "CN=[^;:]+", "=") + gsub(/"[^"]*"/,"",line) email = get_value(line, "(mailto|MAILTO):[^;]+", ":") if (name == "") {