From 80539614b4e4125a71bfacdd65378a492d3f9c5a Mon Sep 17 00:00:00 2001 From: Henrik Brautaset Aronsen Date: Wed, 20 Feb 2013 19:01:26 +0100 Subject: Add unzip support to divelogs.de exports Finalize divelog.de import, used with Miiko's divelog.de xslt transform Signed-off-by: Henrik Brautaset Aronsen Signed-off-by: Dirk Hohndel --- file.c | 14 +++++++++----- gtk-gui.c | 2 ++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/file.c b/file.c index cdad961e5..967afb8b6 100644 --- a/file.c +++ b/file.c @@ -62,7 +62,7 @@ out: #ifdef LIBZIP #include -static void suunto_read(struct zip_file *file, GError **error) +static void zip_read(struct zip_file *file, GError **error) { int size = 1024, n, read = 0; char *mem = malloc(size); @@ -72,12 +72,12 @@ static void suunto_read(struct zip_file *file, GError **error) size = read * 3 / 2; mem = realloc(mem, size); } - parse_xml_buffer(_("SDE file"), mem, read, &dive_table, error); + parse_xml_buffer(_("ZIP file"), mem, read, &dive_table, error); free(mem); } #endif -static int try_to_open_suunto(const char *filename, struct memblock *mem, GError **error) +static int try_to_open_zip(const char *filename, struct memblock *mem, GError **error) { int success = 0; #ifdef LIBZIP @@ -90,7 +90,7 @@ static int try_to_open_suunto(const char *filename, struct memblock *mem, GError struct zip_file *file = zip_fopen_index(zip, index, 0); if (!file) break; - suunto_read(file, error); + zip_read(file, error); zip_fclose(file); success++; } @@ -225,7 +225,11 @@ static int open_by_filename(const char *filename, const char *fmt, struct memblo { /* Suunto Dive Manager files: SDE */ if (!strcasecmp(fmt, "SDE")) - return try_to_open_suunto(filename, mem, error); + return try_to_open_zip(filename, mem, error); + + /* divelogs.de files: divelogsData.zip */ + if (!strcasecmp(fmt, "ZIP")) + return try_to_open_zip(filename, mem, error); /* Truly nasty intentionally obfuscated Cochran Anal software */ if (!strcasecmp(fmt, "CAN")) diff --git a/gtk-gui.c b/gtk-gui.c index 40954bae9..65a308c55 100644 --- a/gtk-gui.c +++ b/gtk-gui.c @@ -126,6 +126,8 @@ static GtkFileFilter *setup_filter(void) #ifdef LIBZIP gtk_file_filter_add_pattern(filter, "*.sde"); gtk_file_filter_add_pattern(filter, "*.SDE"); + gtk_file_filter_add_pattern(filter, "*.zip"); + gtk_file_filter_add_pattern(filter, "*.ZIP"); #endif gtk_file_filter_add_mime_type(filter, "text/xml"); gtk_file_filter_set_name(filter, _("XML file")); -- cgit v1.2.3-70-g09d2