Make iCal event import independent of property ordering

Refactoring of ical.c: properties DTSTART, DTEND, DURATION, RRULE and EXDATE are
saved and only processed after encountering END:VEVENT.

Adresses Github issue #323, follow-up question.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
Lars Henriksen
2020-11-03 19:27:09 +01:00
committed by Lukas Fleischer
parent 1e243dba90
commit d126696999
3 changed files with 168 additions and 143 deletions

View File

@@ -1,9 +1,9 @@
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
DTSTART:20200318T084100
DURATION:PT1H30M0S
SUMMARY:A simple appointment
DTSTART:20200318T084100
END:VEVENT
BEGIN:VTODO
PRIORITY:1
@@ -12,6 +12,10 @@ END:VTODO
BEGIN:VEVENT
DTSTART:
DURATION:PT1H30M0S
SUMMARY:invalid start time
END:VEVENT
BEGIN:VEVENT
DURATION:PT1H30M0S
SUMMARY:missing start time
END:VEVENT
BEGIN:VEVENT
@@ -39,6 +43,12 @@ END:VEVENT
BEGIN:VEVENT
DTSTART:20200318T084100
DURATION:PT1H30M0S
EXDATE:20200324T084100
SUMMARY:exdate\, missing rrule
END:VEVENT
BEGIN:VEVENT
DTSTART:20200318T084100
DURATION:PT1H30M0S
SUMMARY:Summary with more than\none line
END:VEVENT
BEGIN:VEVENT

View File

@@ -17,27 +17,29 @@ if [ "$1" = 'actual' ]; then
rm -rf "$tmpdir" || exit 1
elif [ "$1" = 'expected' ]; then
cat <<EOD
Import process report: 0121 lines read
2 apps / 0 events / 1 todo / 19 skipped
Import process report: 0131 lines read
2 apps / 0 events / 1 todo / 21 skipped
VEVENT [12]: invalid or malformed event start time.
VEVENT [17]: rrule frequency not supported.
VEVENT [23]: malformed summary line.
VTODO [28]: item priority is invalid (must be between 0 and 9).
VEVENT [32]: malformed exceptions line.
VEVENT [39]: line break in summary.
VEVENT [44]: malformed description line.
VEVENT [50]: malformed description.
VTODO [62]: malformed summary.
VEVENT [66]: only one location allowed.
VEVENT [73]: invalid duration.
VEVENT [78]: invalid or malformed event start time.
VEVENT [83]: invalid end time value type.
VEVENT [88]: invalid until format.
VEVENT [94]: invalid exception date value type.
VEVENT [101]: invalid exception.
VEVENT [108]: either end or duration.
VEVENT [114]: end must be later than start.
VTODO [119]: The ical file seems to be malformed. The end of item was not found.
VEVENT [17]: item start date not defined.
VEVENT [21]: rrule frequency not supported.
VEVENT [27]: malformed summary line.
VTODO [32]: item priority is invalid (must be between 0 and 9).
VEVENT [36]: malformed exceptions line.
VEVENT [43]: exception date, but no recurrence rule.
VEVENT [49]: line break in summary.
VEVENT [54]: malformed description line.
VEVENT [60]: malformed description.
VTODO [72]: malformed summary.
VEVENT [76]: only one location allowed.
VEVENT [83]: invalid duration.
VEVENT [88]: invalid or malformed event start time.
VEVENT [93]: invalid end time value type.
VEVENT [98]: invalid until format.
VEVENT [104]: invalid exception date value type.
VEVENT [111]: invalid exception.
VEVENT [118]: either end or duration.
VEVENT [124]: end must be later than start.
VTODO [129]: The ical file seems to be malformed. The end of item was not found.
101
EOD
else