diff options
Diffstat (limited to 'calendar/cal-util/cal-util.c')
-rw-r--r-- | calendar/cal-util/cal-util.c | 30 |
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; +} |