aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/pcs/cal-backend-file.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/pcs/cal-backend-file.c')
-rw-r--r--calendar/pcs/cal-backend-file.c49
1 files changed, 6 insertions, 43 deletions
diff --git a/calendar/pcs/cal-backend-file.c b/calendar/pcs/cal-backend-file.c
index 7ab6506aa9..d11df6d076 100644
--- a/calendar/pcs/cal-backend-file.c
+++ b/calendar/pcs/cal-backend-file.c
@@ -22,6 +22,7 @@
#include <config.h>
#include <string.h>
+#include <unistd.h>
#include <bonobo/bonobo-exception.h>
#include <bonobo/bonobo-moniker-util.h>
#include <libgnome/gnome-i18n.h>
@@ -679,53 +680,19 @@ scan_vcalendar (CalBackendFile *cbfile)
}
}
-/* Callback used from icalparser_parse() */
-static char *
-get_line_fn (char *s, size_t size, void *data)
-{
- FILE *file;
-
- file = data;
- return fgets (s, size, file);
-}
-
-/* Parses an open iCalendar file and returns a toplevel component with the contents */
-static icalcomponent *
-parse_file (FILE *file)
-{
- icalparser *parser;
- icalcomponent *icalcomp;
-
- parser = icalparser_new ();
- icalparser_set_gen_data (parser, file);
-
- icalcomp = icalparser_parse (parser, get_line_fn);
- icalparser_free (parser);
-
- return icalcomp;
-}
-
/* Parses an open iCalendar file and loads it into the backend */
static CalBackendOpenStatus
-open_cal (CalBackendFile *cbfile, const char *uristr, FILE *file)
+open_cal (CalBackendFile *cbfile, const char *uristr)
{
CalBackendFilePrivate *priv;
icalcomponent *icalcomp;
priv = cbfile->priv;
- icalcomp = parse_file (file);
-
- if (fclose (file) != 0) {
- if (icalcomp)
- icalcomponent_free (icalcomp);
-
- return CAL_BACKEND_OPEN_ERROR;
- }
-
+ icalcomp = cal_util_parse_ics_file (uristr);
if (!icalcomp)
return CAL_BACKEND_OPEN_ERROR;
-
+
/* FIXME: should we try to demangle XROOT components and
* individual components as well?
*/
@@ -771,7 +738,6 @@ cal_backend_file_open (CalBackend *backend, const char *uristr, gboolean only_if
{
CalBackendFile *cbfile;
CalBackendFilePrivate *priv;
- FILE *file;
char *str_uri;
GnomeVFSURI *uri;
CalBackendOpenStatus status;
@@ -806,11 +772,8 @@ cal_backend_file_open (CalBackend *backend, const char *uristr, gboolean only_if
return CAL_BACKEND_OPEN_ERROR;
}
- /* Load! */
- file = fopen (str_uri, "r");
-
- if (file)
- status = open_cal (cbfile, str_uri, file);
+ if (access (str_uri, R_OK) == 0)
+ status = open_cal (cbfile, str_uri);
else {
if (only_if_exists)
status = CAL_BACKEND_OPEN_NOT_FOUND;