summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-10-18 21:58:04 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-10-24 09:51:37 -0700
commit255f561afffb26bae5c4de0c5fe2d60effb41103 (patch)
tree7b2987886ad228dfabbbde11aaae933dd903e91d
parent694776eed1f88327237240e122e15b274a87994b (diff)
downloadsubsurface-255f561afffb26bae5c4de0c5fe2d60effb41103.tar.gz
git: add device-table to git-parser-state
In analogy to the xml-parser add a device-table to git's parser-state. Currently this is unused. In upcoming commits the git parser will then be changed to add device nodes in this table instead of the global device table. The long-term goal being to detach the parsers from global state and to make dive-import fully undoable. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--core/file.c2
-rw-r--r--core/git-access.h4
-rw-r--r--core/load-git.c4
-rw-r--r--mobile-widgets/qmlmanager.cpp2
4 files changed, 8 insertions, 4 deletions
diff --git a/core/file.c b/core/file.c
index e6fe28df6..85537868f 100644
--- a/core/file.c
+++ b/core/file.c
@@ -325,7 +325,7 @@ int parse_file(const char *filename, struct dive_table *table, struct trip_table
return -1;
}
if (git)
- return git_load_dives(git, branch, table, trips, sites, filter_presets);
+ return git_load_dives(git, branch, table, trips, sites, devices, filter_presets);
if ((ret = readfile(filename, &mem)) < 0) {
/* we don't want to display an error if this was the default file */
diff --git a/core/git-access.h b/core/git-access.h
index 2c99f9e52..30c7b7da6 100644
--- a/core/git-access.h
+++ b/core/git-access.h
@@ -15,13 +15,15 @@ enum remote_transport { RT_OTHER, RT_HTTPS, RT_SSH };
struct git_oid;
struct git_repository;
+struct device_table;
#define dummy_git_repository ((git_repository *)3ul) /* Random bogus pointer, not NULL */
extern struct git_repository *is_git_repository(const char *filename, const char **branchp, const char **remote, bool dry_run);
extern int check_git_sha(const char *filename, git_repository **git_p, const char **branch_p);
extern int sync_with_remote(struct git_repository *repo, const char *remote, const char *branch, enum remote_transport rt);
extern int git_save_dives(struct git_repository *, const char *, const char *remote, bool select_only);
extern int git_load_dives(struct git_repository *repo, const char *branch, struct dive_table *table, struct trip_table *trips,
- struct dive_site_table *sites, struct filter_preset_table *filter_presets);
+ struct dive_site_table *sites, struct device_table *devices,
+ struct filter_preset_table *filter_presets);
extern const char *get_sha(git_repository *repo, const char *branch);
extern int do_git_save(git_repository *repo, const char *branch, const char *remote, bool select_only, bool create_empty);
extern const char *saved_git_id;
diff --git a/core/load-git.c b/core/load-git.c
index bcb311100..dc7a3e8dc 100644
--- a/core/load-git.c
+++ b/core/load-git.c
@@ -47,6 +47,7 @@ struct git_parser_state {
struct dive_table *table;
struct trip_table *trips;
struct dive_site_table *sites;
+ struct device_table *devices;
struct filter_preset_table *filter_presets;
int o2pressure_sensor;
};
@@ -1879,7 +1880,7 @@ const char *get_sha(git_repository *repo, const char *branch)
* or report an error and return 1 if the load failed.
*/
int git_load_dives(struct git_repository *repo, const char *branch, struct dive_table *table, struct trip_table *trips,
- struct dive_site_table *sites, struct filter_preset_table *filter_presets)
+ struct dive_site_table *sites, struct device_table *devices, struct filter_preset_table *filter_presets)
{
int ret;
struct git_parser_state state = { 0 };
@@ -1887,6 +1888,7 @@ int git_load_dives(struct git_repository *repo, const char *branch, struct dive_
state.table = table;
state.trips = trips;
state.sites = sites;
+ state.devices = devices;
state.filter_presets = filter_presets;
if (repo == dummy_git_repository)
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp
index 5d1d02b48..8f28ab912 100644
--- a/mobile-widgets/qmlmanager.cpp
+++ b/mobile-widgets/qmlmanager.cpp
@@ -708,7 +708,7 @@ void QMLManager::loadDivesWithValidCredentials()
}
if (git != dummy_git_repository) {
appendTextToLog(QString("have repository and branch %1").arg(branch));
- error = git_load_dives(git, branch, &dive_table, &trip_table, &dive_site_table, &filter_preset_table);
+ error = git_load_dives(git, branch, &dive_table, &trip_table, &dive_site_table, &device_table, &filter_preset_table);
} else {
appendTextToLog(QString("didn't receive valid git repo, try again"));
error = parse_file(fileNamePrt.data(), &dive_table, &trip_table, &dive_site_table, &device_table, &filter_preset_table);