From 9a85b790aab1611a7c9105d08fb6be1500ed82f7 Mon Sep 17 00:00:00 2001
From: Jérôme Pinot <ngc891@gmail.com>
Date: Sat, 10 Dec 2011 22:32:35 +0900
Subject: Format "DURATION" field properly on ical export

Use days/hours/minutes/seconds instead of seconds in the DURATION field.
It fixes interaction with other softwares like phpicalendar.

Lukas: Remove use of dur-week. RFC 5545 states that you cannot use this
in conjunction with dur-day. Also, fix formatting and use proper
constants.

Signed-off-by: Jerome Pinot <ngc891@gmail.com>
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
---
 src/io.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/io.c b/src/io.c
index b944373..8709341 100644
--- a/src/io.c
+++ b/src/io.c
@@ -622,7 +622,11 @@ ical_export_apoints (FILE *stream)
       date_sec2date_fmt (apt->start, ICALDATETIMEFMT, ical_datetime);
       (void)fprintf (stream, "BEGIN:VEVENT\n");
       (void)fprintf (stream, "DTSTART:%s\n", ical_datetime);
-      (void)fprintf (stream, "DURATION:PT0H0M%ldS\n", apt->dur);
+      (void)fprintf (stream, "DURATION:P%ldDT%ldH%ldM%ldS\n",
+                     apt->dur / DAYINSEC,
+                     (apt->dur / HOURINSEC) % 24,
+                     (apt->dur / MININSEC) % 60,
+                     apt->dur % MININSEC);
       (void)fprintf (stream, "SUMMARY:%s\n", apt->mesg);
       if (apt->state & APOINT_NOTIFY)
         ical_export_valarm (stream);
-- 
cgit v1.2.3-70-g09d2