aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util/cal-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/cal-util/cal-util.c')
-rw-r--r--calendar/cal-util/cal-util.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/calendar/cal-util/cal-util.c b/calendar/cal-util/cal-util.c
index a30329c638..8ba1ff7d63 100644
--- a/calendar/cal-util/cal-util.c
+++ b/calendar/cal-util/cal-util.c
@@ -21,9 +21,11 @@
#include <config.h>
#include <stdlib.h>
+#include <string.h>
#include <glib.h>
#include <libgnome/gnome-defs.h>
#include <libgnome/gnome-i18n.h>
+#include <libgnome/gnome-util.h>
#include "cal-util.h"
@@ -528,3 +530,31 @@ cal_util_priority_from_string (const char *string)
return priority;
}
+
+char *
+cal_util_expand_uri (char *uri, gboolean tasks)
+{
+ char *file_uri, *file_name;
+
+ if (!strncmp (uri, "file://", 7)) {
+ file_uri = uri + 7;
+ if (strlen (file_uri) > 4
+ && !strcmp (file_uri + strlen (file_uri) - 4, ".ics")) {
+
+ /* it's a .ics file */
+ return g_strdup (uri);
+ }
+
+ /* we assume it's a dir and glom <type>.ics onto the end. */
+ if (tasks)
+ file_name = g_concat_dir_and_file (file_uri, "tasks.ics");
+ else
+ file_name = g_concat_dir_and_file (file_uri, "calendar.ics");
+ file_uri = g_strdup_printf("file://%s", file_name);
+ g_free(file_name);
+ } else {
+ file_uri = g_strdup (uri);
+ }
+
+ return file_uri;
+}