mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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 <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
f6debdc183
commit
80539614b4
2 changed files with 11 additions and 5 deletions
14
file.c
14
file.c
|
@ -62,7 +62,7 @@ out:
|
||||||
#ifdef LIBZIP
|
#ifdef LIBZIP
|
||||||
#include <zip.h>
|
#include <zip.h>
|
||||||
|
|
||||||
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;
|
int size = 1024, n, read = 0;
|
||||||
char *mem = malloc(size);
|
char *mem = malloc(size);
|
||||||
|
@ -72,12 +72,12 @@ static void suunto_read(struct zip_file *file, GError **error)
|
||||||
size = read * 3 / 2;
|
size = read * 3 / 2;
|
||||||
mem = realloc(mem, size);
|
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);
|
free(mem);
|
||||||
}
|
}
|
||||||
#endif
|
#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;
|
int success = 0;
|
||||||
#ifdef LIBZIP
|
#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);
|
struct zip_file *file = zip_fopen_index(zip, index, 0);
|
||||||
if (!file)
|
if (!file)
|
||||||
break;
|
break;
|
||||||
suunto_read(file, error);
|
zip_read(file, error);
|
||||||
zip_fclose(file);
|
zip_fclose(file);
|
||||||
success++;
|
success++;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +225,11 @@ static int open_by_filename(const char *filename, const char *fmt, struct memblo
|
||||||
{
|
{
|
||||||
/* Suunto Dive Manager files: SDE */
|
/* Suunto Dive Manager files: SDE */
|
||||||
if (!strcasecmp(fmt, "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 */
|
/* Truly nasty intentionally obfuscated Cochran Anal software */
|
||||||
if (!strcasecmp(fmt, "CAN"))
|
if (!strcasecmp(fmt, "CAN"))
|
||||||
|
|
|
@ -126,6 +126,8 @@ static GtkFileFilter *setup_filter(void)
|
||||||
#ifdef LIBZIP
|
#ifdef LIBZIP
|
||||||
gtk_file_filter_add_pattern(filter, "*.sde");
|
gtk_file_filter_add_pattern(filter, "*.sde");
|
||||||
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
|
#endif
|
||||||
gtk_file_filter_add_mime_type(filter, "text/xml");
|
gtk_file_filter_add_mime_type(filter, "text/xml");
|
||||||
gtk_file_filter_set_name(filter, _("XML file"));
|
gtk_file_filter_set_name(filter, _("XML file"));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue