mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
c888a1727e
WLog is a Win32 based ancient shareware program whose target was: 1) fully support divelogs coming from DataTrak (DOS or Win) 2) fill some meaningful data which wasn't supported by Uwatec software 3) have a more user-friendly GUI than Datatrak had The problem achieving goals 1) and 2) at the same time was solved by adding a complementary file with .add extension and - mandatory - same base name than .log file (including directory tree). This .add file has a fixed structure composed of a 12 bytes header, including file type check and Nº of dives following; then a fixed 850 bytes size for each dive in the log file. Data fields size and position are fixed inside these blocks and heavily zero padded, so they are easy to parse. A serious restriction imposed to the WLog user was *Do not edit the logs with other software than Wlog*; this was due the order of dives in .log file being the same than the order of dives in .add file. Thought you could show a WLog divelog in Datatrak, editing it resulted in mixing all extended data for dives following the edited one. Thus, we have to trust files are correct and is to the user ensure this is so. If extended data are mangled, they are mangled in WLog too and we are not trying to fix the mess, just importing. On the technical side, we try to be smart about tank names as neither DataTrak nor WLog record them. So we just take the first tank in users list matching the volume recorded in WLog. For weights we add a translatable "unknown" string as an empty string results in weight not being shown in subsurface-mobile (which could be a reportable issue, BTW). Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
45 lines
1.8 KiB
C
45 lines
1.8 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef FILE_H
|
|
#define FILE_H
|
|
|
|
#include <sys/stat.h>
|
|
#include <stdio.h>
|
|
|
|
struct memblock {
|
|
void *buffer;
|
|
size_t size;
|
|
};
|
|
|
|
struct trip_table;
|
|
struct dive_site_table;
|
|
struct dive_table;
|
|
struct zip;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
extern int try_to_open_cochran(const char *filename, struct memblock *mem, struct dive_table *table, struct trip_table *trips, struct dive_site_table *sites);
|
|
extern int try_to_open_liquivision(const char *filename, struct memblock *mem, struct dive_table *table, struct trip_table *trips, struct dive_site_table *sites);
|
|
extern int datatrak_import(struct memblock *mem, struct memblock *wl_mem, struct dive_table *table, struct trip_table *trips, struct dive_site_table *sites);
|
|
extern void ostctools_import(const char *file, struct dive_table *table, struct trip_table *trips, struct dive_site_table *sites);
|
|
|
|
extern int readfile(const char *filename, struct memblock *mem);
|
|
extern int parse_file(const char *filename, struct dive_table *table, struct trip_table *trips, struct dive_site_table *sites);
|
|
extern int try_to_open_zip(const char *filename, struct dive_table *table, struct trip_table *trips, struct dive_site_table *sites);
|
|
|
|
// Platform specific functions
|
|
extern int subsurface_rename(const char *path, const char *newpath);
|
|
extern int subsurface_dir_rename(const char *path, const char *newpath);
|
|
extern int subsurface_open(const char *path, int oflags, mode_t mode);
|
|
extern FILE *subsurface_fopen(const char *path, const char *mode);
|
|
extern void *subsurface_opendir(const char *path);
|
|
extern int subsurface_access(const char *path, int mode);
|
|
extern int subsurface_stat(const char* path, struct stat* buf);
|
|
extern struct zip *subsurface_zip_open_readonly(const char *path, int flags, int *errorp);
|
|
extern int subsurface_zip_close(struct zip *zip);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // FILE_H
|