From 371b1559227eb4faa62e1cb08ef6fa465aff4fcc Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Tue, 27 Feb 2024 18:40:45 +0100 Subject: [PATCH] core: convert core/save-git.c to C++ Signed-off-by: Berthold Stoeger --- Subsurface-mobile.pro | 2 +- core/CMakeLists.txt | 2 +- core/{save-git.c => save-git.cpp} | 47 ++++++++++++++----------------- 3 files changed, 23 insertions(+), 28 deletions(-) rename core/{save-git.c => save-git.cpp} (96%) diff --git a/Subsurface-mobile.pro b/Subsurface-mobile.pro index ec4f1bd7f..b5c6330af 100644 --- a/Subsurface-mobile.pro +++ b/Subsurface-mobile.pro @@ -78,7 +78,7 @@ SOURCES += subsurface-mobile-main.cpp \ core/worldmap-save.c \ core/libdivecomputer.c \ core/version.c \ - core/save-git.c \ + core/save-git.cpp \ core/datatrak.c \ core/ostctools.c \ core/planner.c \ diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 2814bb7df..24fd31470 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -155,7 +155,7 @@ set(SUBSURFACE_CORE_LIB_SRCS range.h sample.cpp sample.h - save-git.c + save-git.cpp save-html.c save-html.h save-profiledata.c diff --git a/core/save-git.c b/core/save-git.cpp similarity index 96% rename from core/save-git.c rename to core/save-git.cpp index 5c42f06cd..df83f2e31 100644 --- a/core/save-git.c +++ b/core/save-git.cpp @@ -373,7 +373,7 @@ static void save_samples(struct membuffer *b, struct dive *dive, struct divecomp int nr; int o2sensor; struct sample *s; - struct sample dummy = { .bearing.degrees = -1, .ndl.seconds = -1 }; + struct sample dummy; /* Is this a CCR dive with the old-style "o2pressure" sensor? */ o2sensor = legacy_format_o2pressures(dive, dc); @@ -498,7 +498,7 @@ struct dir { char unique, name[1]; }; -static int tree_insert(git_treebuilder *dir, const char *name, int mkunique, git_oid *id, unsigned mode) +static int tree_insert(git_treebuilder *dir, const char *name, int mkunique, git_oid *id, git_filemode_t mode) { int ret; struct membuffer uniquename = { 0 }; @@ -534,7 +534,7 @@ static struct dir *new_directory(git_repository *repo, struct dir *parent, struc const char *name = mb_cstring(namebuf); int len = namebuf->len; - subdir = malloc(sizeof(*subdir)+len); + subdir = (struct dir *)malloc(sizeof(*subdir)+len); /* * It starts out empty: no subdirectories of its own, @@ -851,19 +851,19 @@ static int save_one_trip(git_repository *repo, struct dir *tree, dive_trip_t *tr static void save_units(void *_b) { - struct membuffer *b =_b; + struct membuffer *b = (membuffer *)_b; if (prefs.unit_system == METRIC) put_string(b, "units METRIC\n"); else if (prefs.unit_system == IMPERIAL) put_string(b, "units IMPERIAL\n"); else put_format(b, "units PERSONALIZE %s %s %s %s %s %s\n", - prefs.units.length == METERS ? "METERS" : "FEET", - prefs.units.volume == LITER ? "LITER" : "CUFT", - prefs.units.pressure == BAR ? "BAR" : "PSI", - prefs.units.temperature == CELSIUS ? "CELSIUS" : prefs.units.temperature == FAHRENHEIT ? "FAHRENHEIT" : "KELVIN", - prefs.units.weight == KG ? "KG" : "LBS", - prefs.units.vertical_speed_time == SECONDS ? "SECONDS" : "MINUTES"); + prefs.units.length == units::METERS ? "METERS" : "FEET", + prefs.units.volume == units::LITER ? "LITER" : "CUFT", + prefs.units.pressure == units::BAR ? "BAR" : "PSI", + prefs.units.temperature == units::CELSIUS ? "CELSIUS" : prefs.units.temperature == units::FAHRENHEIT ? "FAHRENHEIT" : "KELVIN", + prefs.units.weight == units::KG ? "KG" : "LBS", + prefs.units.vertical_speed_time == units::SECONDS ? "SECONDS" : "MINUTES"); } static void save_one_device(struct membuffer *b, const struct device *d) @@ -884,7 +884,7 @@ static void save_one_device(struct membuffer *b, const struct device *d) put_string(b, "\n"); } -static void save_one_fingerprint(struct membuffer *b, unsigned int i) +static void save_one_fingerprint(struct membuffer *b, int i) { char *fp_data = fp_get_data(&fingerprint_table, i); put_format(b, "fingerprint model=%08x serial=%08x deviceid=%08x diveid=%08x data=\"%s\"\n", @@ -904,7 +904,7 @@ static void save_settings(git_repository *repo, struct dir *tree) for (int i = 0; i < nr_devices(divelog.devices); i++) save_one_device(&b, get_device(divelog.devices, i)); /* save the fingerprint data */ - for (unsigned int i = 0; i < nr_fingerprints(&fingerprint_table); i++) + for (int i = 0; i < nr_fingerprints(&fingerprint_table); i++) save_one_fingerprint(&b, i); cond_put_format(divelog.autogroup, &b, "autogroup\n"); @@ -1105,18 +1105,13 @@ static git_object *try_to_find_parent(const char *hex_id, git_repository *repo) return (git_object *)commit; } -static int notify_cb(git_checkout_notify_t why, +static int notify_cb(git_checkout_notify_t, const char *path, - const git_diff_file *baseline, - const git_diff_file *target, - const git_diff_file *workdir, - void *payload) + const git_diff_file *, + const git_diff_file *, + const git_diff_file *, + void *) { - UNUSED(baseline); - UNUSED(target); - UNUSED(workdir); - UNUSED(payload); - UNUSED(why); report_error("File '%s' does not match in working tree", path); return 0; /* Continue with checkout */ } @@ -1131,7 +1126,7 @@ static git_tree *get_git_tree(git_repository *repo, git_object *parent) return tree; } -int update_git_checkout(git_repository *repo, git_object *parent, git_tree *tree) +extern "C" int update_git_checkout(git_repository *repo, git_object *parent, git_tree *tree) { git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT; @@ -1142,7 +1137,7 @@ int update_git_checkout(git_repository *repo, git_object *parent, git_tree *tree return git_checkout_tree(repo, (git_object *) tree, &opts); } -int get_authorship(git_repository *repo, git_signature **authorp) +extern "C" int get_authorship(git_repository *repo, git_signature **authorp) { if (git_signature_default(authorp, repo) == 0) return 0; @@ -1329,7 +1324,7 @@ static int write_git_tree(git_repository *repo, struct dir *tree, git_oid *resul return ret; } -int do_git_save(struct git_info *info, bool select_only, bool create_empty) +extern "C" int do_git_save(struct git_info *info, bool select_only, bool create_empty) { struct dir tree; git_oid id; @@ -1377,7 +1372,7 @@ int do_git_save(struct git_info *info, bool select_only, bool create_empty) return 0; } -int git_save_dives(struct git_info *info, bool select_only) +extern "C" int git_save_dives(struct git_info *info, bool select_only) { /* * First, just try to open the local git repo without