From c05be40bfd8337711c758a2e5fcb3902cb24b468 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Wed, 28 Feb 2024 08:42:23 +0100 Subject: [PATCH] core: convert load-git.c to C++ Signed-off-by: Berthold Stoeger --- Subsurface-mobile.pro | 2 +- core/CMakeLists.txt | 2 +- core/equipment.c | 4 +- core/equipment.h | 2 +- core/{load-git.c => load-git.cpp} | 274 +++++++++++++----------------- 5 files changed, 126 insertions(+), 158 deletions(-) rename core/{load-git.c => load-git.cpp} (85%) diff --git a/Subsurface-mobile.pro b/Subsurface-mobile.pro index 940028f6f..356b5f1ce 100644 --- a/Subsurface-mobile.pro +++ b/Subsurface-mobile.pro @@ -61,7 +61,7 @@ SOURCES += subsurface-mobile-main.cpp \ core/git-access.cpp \ core/globals.cpp \ core/liquivision.c \ - core/load-git.c \ + core/load-git.cpp \ core/parse-xml.c \ core/parse.c \ core/picture.c \ diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 25170d129..fb6428b94 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -124,7 +124,7 @@ set(SUBSURFACE_CORE_LIB_SRCS libdivecomputer.c libdivecomputer.h liquivision.c - load-git.c + load-git.cpp membuffer.cpp membuffer.h metadata.cpp diff --git a/core/equipment.c b/core/equipment.c index 285049571..cdc818fce 100644 --- a/core/equipment.c +++ b/core/equipment.c @@ -86,13 +86,13 @@ const char *cylinderuse_text[NUM_GAS_USE] = { QT_TRANSLATE_NOOP("gettextFromC", "OC-gas"), QT_TRANSLATE_NOOP("gettextFromC", "diluent"), QT_TRANSLATE_NOOP("gettextFromC", "oxygen"), QT_TRANSLATE_NOOP("gettextFromC", "not used") }; -int cylinderuse_from_text(const char *text) +enum cylinderuse cylinderuse_from_text(const char *text) { for (enum cylinderuse i = 0; i < NUM_GAS_USE; i++) { if (same_string(text, cylinderuse_text[i]) || same_string(text, translate("gettextFromC", cylinderuse_text[i]))) return i; } - return -1; + return (enum cylinderuse)-1; } /* Add a metric or an imperial tank info structure. Copies the passed-in string. */ diff --git a/core/equipment.h b/core/equipment.h index c82963631..d46d37168 100644 --- a/core/equipment.h +++ b/core/equipment.h @@ -70,7 +70,7 @@ struct weightsystem_table { #define MAX_WS_INFO (100) -extern int cylinderuse_from_text(const char *text); +extern enum cylinderuse cylinderuse_from_text(const char *text); extern void copy_weights(const struct weightsystem_table *s, struct weightsystem_table *d); extern void copy_cylinders(const struct cylinder_table *s, struct cylinder_table *d); extern weightsystem_t clone_weightsystem(weightsystem_t ws); diff --git a/core/load-git.c b/core/load-git.cpp similarity index 85% rename from core/load-git.c rename to core/load-git.cpp index 62ef6b70d..e6ec9ef77 100644 --- a/core/load-git.c +++ b/core/load-git.cpp @@ -153,11 +153,11 @@ static duration_t get_duration(const char *line) static enum divemode_t get_dctype(const char *line) { - for (enum divemode_t i = 0; i < NUM_DIVEMODE; i++) { + for (int i = 0; i < NUM_DIVEMODE; i++) { if (strcmp(line, divemode_text[i]) == 0) - return i; + return (divemode_t)i; } - return 0; + return (divemode_t)0; } static int get_index(const char *line) @@ -166,9 +166,8 @@ static int get_index(const char *line) static int get_hex(const char *line) { return strtoul(line, NULL, 16); } -static void parse_dive_gps(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_dive_gps(char *line, struct membuffer *, struct git_parser_state *state) { - UNUSED(str); location_t location; struct dive_site *ds = get_dive_site_for_dive(state->active_dive); @@ -190,9 +189,8 @@ static void parse_dive_gps(char *line, struct membuffer *str, struct git_parser_ } -static void parse_dive_location(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_dive_location(char *, struct membuffer *str, struct git_parser_state *state) { - UNUSED(line); char *name = detach_cstring(str); struct dive_site *ds = get_dive_site_for_dive(state->active_dive); if (!ds) { @@ -213,28 +211,27 @@ static void parse_dive_location(char *line, struct membuffer *str, struct git_pa free(name); } -static void parse_dive_diveguide(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_dive->diveguide = detach_cstring(str); } +static void parse_dive_diveguide(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_dive->diveguide = detach_cstring(str); } -static void parse_dive_buddy(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_dive->buddy = detach_cstring(str); } +static void parse_dive_buddy(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_dive->buddy = detach_cstring(str); } -static void parse_dive_suit(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_dive->suit = detach_cstring(str); } +static void parse_dive_suit(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_dive->suit = detach_cstring(str); } -static void parse_dive_notes(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_dive->notes = detach_cstring(str); } +static void parse_dive_notes(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_dive->notes = detach_cstring(str); } -static void parse_dive_divesiteid(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); add_dive_to_dive_site(state->active_dive, get_dive_site_by_uuid(get_hex(line), state->log->sites)); } +static void parse_dive_divesiteid(char *line, struct membuffer *, struct git_parser_state *state) +{ add_dive_to_dive_site(state->active_dive, get_dive_site_by_uuid(get_hex(line), state->log->sites)); } /* * We can have multiple tags in the membuffer. They are separated by * NUL bytes. */ -static void parse_dive_tags(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_dive_tags(char *, struct membuffer *str, struct git_parser_state *state) { - UNUSED(line); const char *tag; int len = str->len; @@ -255,65 +252,60 @@ static void parse_dive_tags(char *line, struct membuffer *str, struct git_parser } } -static void parse_dive_airtemp(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->airtemp = get_temperature(line); } +static void parse_dive_airtemp(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->airtemp = get_temperature(line); } -static void parse_dive_watertemp(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->watertemp = get_temperature(line); } +static void parse_dive_watertemp(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->watertemp = get_temperature(line); } -static void parse_dive_airpressure(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->surface_pressure = get_airpressure(line); } +static void parse_dive_airpressure(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->surface_pressure = get_airpressure(line); } -static void parse_dive_duration(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->duration = get_duration(line); } +static void parse_dive_duration(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->duration = get_duration(line); } -static void parse_dive_rating(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->rating = get_index(line); } +static void parse_dive_rating(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->rating = get_index(line); } -static void parse_dive_visibility(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->visibility = get_index(line); } +static void parse_dive_visibility(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->visibility = get_index(line); } -static void parse_dive_wavesize(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->wavesize = get_index(line); } +static void parse_dive_wavesize(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->wavesize = get_index(line); } -static void parse_dive_current(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->current = get_index(line); } +static void parse_dive_current(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->current = get_index(line); } -static void parse_dive_surge(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->surge = get_index(line); } +static void parse_dive_surge(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->surge = get_index(line); } -static void parse_dive_chill(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->chill = get_index(line); } +static void parse_dive_chill(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->chill = get_index(line); } -static void parse_dive_watersalinity(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dive->user_salinity = get_salinity(line); } +static void parse_dive_watersalinity(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dive->user_salinity = get_salinity(line); } -static void parse_dive_notrip(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_dive_notrip(char *, struct membuffer *, struct git_parser_state *state) { - UNUSED(str); - UNUSED(line); state->active_dive->notrip = true; } -static void parse_dive_invalid(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_dive_invalid(char *, struct membuffer *, struct git_parser_state *state) { - UNUSED(str); - UNUSED(line); state->active_dive->invalid = true; } -static void parse_site_description(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_site->description = detach_cstring(str); } +static void parse_site_description(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_site->description = detach_cstring(str); } -static void parse_site_name(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_site->name = detach_cstring(str); } +static void parse_site_name(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_site->name = detach_cstring(str); } -static void parse_site_notes(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_site->notes = detach_cstring(str); } +static void parse_site_notes(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_site->notes = detach_cstring(str); } -static void parse_site_gps(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_site_gps(char *line, struct membuffer *, struct git_parser_state *state) { - UNUSED(str); parse_location(line, &state->active_site->location); } @@ -322,18 +314,19 @@ static void parse_site_geo(char *line, struct membuffer *str, struct git_parser_ int origin; int category; sscanf(line, "cat %d origin %d \"", &category, &origin); - taxonomy_set_category(&state->active_site->taxonomy , category, mb_cstring(str), origin); + taxonomy_set_category(&state->active_site->taxonomy, (taxonomy_category)category, + mb_cstring(str), (taxonomy_origin)origin); } static char *remove_from_front(struct membuffer *str, int len) { char *prefix; - if (len >= str->len) + if ((unsigned int)len >= str->len) return detach_cstring(str); /* memdup() - oh well */ - prefix = malloc(len); + prefix = (char *)malloc(len); if (!prefix) { report_error("git-load: out of memory"); return NULL; @@ -390,7 +383,7 @@ static char *parse_keyvalue_entry(void (*fn)(void *, const char *, const char *) static void parse_cylinder_keyvalue(void *_cylinder, const char *key, const char *value) { - cylinder_t *cylinder = _cylinder; + cylinder_t *cylinder = (cylinder *)_cylinder; if (!strcmp(key, "vol")) { cylinder->type.size = get_volume(value); return; @@ -462,7 +455,7 @@ static void parse_dive_cylinder(char *line, struct membuffer *str, struct git_pa static void parse_weightsystem_keyvalue(void *_ws, const char *key, const char *value) { - weightsystem_t *ws = _ws; + weightsystem_t *ws = (wightsystem *)_ws; if (!strcmp(key, "weight")) { ws->weight = get_weight(value); return; @@ -518,9 +511,9 @@ static int match_action(char *line, struct membuffer *str, void *data, struct keyword_action *a = action + mid; int cmp = strcmp(line, a->keyword); if (!cmp) { // attribute found: - a->fn(p, str, data); // Execute appropriate function, - return 0; // .. passing 2n word from above - } // (p) as a function argument. + a->fn(p, str, (git_parser_state *)data); // Execute appropriate function, + return 0; // .. passing 2n word from above + } // (p) as a function argument. if (cmp < 0) high = mid; else @@ -533,7 +526,7 @@ report_error("Unmatched action '%s'", line); /* FIXME! We should do the array thing here too. */ static void parse_sample_keyvalue(void *_sample, const char *key, const char *value) { - struct sample *sample = _sample; + struct sample *sample = (sample *)_sample; if (!strcmp(key, "sensor")) { sample->sensor[0] = atoi(value); @@ -729,57 +722,55 @@ static void sample_parser(char *line, struct git_parser_state *state) finish_sample(state->active_dc); } -static void parse_dc_airtemp(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->airtemp = get_temperature(line); } +static void parse_dc_airtemp(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->airtemp = get_temperature(line); } -static void parse_dc_date(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); update_date(&state->active_dc->when, line); } +static void parse_dc_date(char *line, struct membuffer *, struct git_parser_state *state) +{ update_date(&state->active_dc->when, line); } -static void parse_dc_deviceid(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_dc_deviceid(char *line, struct membuffer *, struct git_parser_state *state) { - UNUSED(str); - int id = get_hex(line); - UNUSED(id); // legacy + get_hex(line); // legacy } -static void parse_dc_diveid(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->diveid = get_hex(line); } +static void parse_dc_diveid(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->diveid = get_hex(line); } -static void parse_dc_duration(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->duration = get_duration(line); } +static void parse_dc_duration(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->duration = get_duration(line); } -static void parse_dc_dctype(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->divemode = get_dctype(line); } +static void parse_dc_dctype(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->divemode = get_dctype(line); } -static void parse_dc_lastmanualtime(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->last_manual_time = get_duration(line); } +static void parse_dc_lastmanualtime(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->last_manual_time = get_duration(line); } -static void parse_dc_maxdepth(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->maxdepth = get_depth(line); } +static void parse_dc_maxdepth(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->maxdepth = get_depth(line); } -static void parse_dc_meandepth(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->meandepth = get_depth(line); } +static void parse_dc_meandepth(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->meandepth = get_depth(line); } -static void parse_dc_model(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_dc->model = detach_cstring(str); } +static void parse_dc_model(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_dc->model = detach_cstring(str); } -static void parse_dc_numberofoxygensensors(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->no_o2sensors = get_index(line); } +static void parse_dc_numberofoxygensensors(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->no_o2sensors = get_index(line); } -static void parse_dc_surfacepressure(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->surface_pressure = get_pressure(line); } +static void parse_dc_surfacepressure(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->surface_pressure = get_pressure(line); } -static void parse_dc_salinity(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->salinity = get_salinity(line); } +static void parse_dc_salinity(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->salinity = get_salinity(line); } -static void parse_dc_surfacetime(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->surfacetime = get_duration(line); } +static void parse_dc_surfacetime(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->surfacetime = get_duration(line); } -static void parse_dc_time(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); update_time(&state->active_dc->when, line); } +static void parse_dc_time(char *line, struct membuffer *, struct git_parser_state *state) +{ update_time(&state->active_dc->when, line); } -static void parse_dc_watertemp(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(str); state->active_dc->watertemp = get_temperature(line); } +static void parse_dc_watertemp(char *line, struct membuffer *, struct git_parser_state *state) +{ state->active_dc->watertemp = get_temperature(line); } static int get_divemode(const char *divemodestring) { @@ -806,7 +797,7 @@ struct parse_event { static void parse_event_keyvalue(void *_parse, const char *key, const char *value) { - struct parse_event *parse = _parse; + struct parse_event *parse = (parse_event *)_parse; int val = atoi(value); if (!strcmp(key, "type")) { @@ -903,48 +894,39 @@ static void parse_dc_event(char *line, struct membuffer *str, struct git_parser_ } /* Not needed anymore - trip date calculated implicitly from first dive */ -static void parse_trip_date(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); UNUSED(str); UNUSED(state); } +static void parse_trip_date(char *, struct membuffer *, struct git_parser_state *) +{ } /* Not needed anymore - trip date calculated implicitly from first dive */ -static void parse_trip_time(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); UNUSED(str); UNUSED(state); } +static void parse_trip_time(char *, struct membuffer *, struct git_parser_state *) +{ } -static void parse_trip_location(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_trip->location = detach_cstring(str); } +static void parse_trip_location(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_trip->location = detach_cstring(str); } -static void parse_trip_notes(char *line, struct membuffer *str, struct git_parser_state *state) -{ UNUSED(line); state->active_trip->notes = detach_cstring(str); } +static void parse_trip_notes(char *, struct membuffer *str, struct git_parser_state *state) +{ state->active_trip->notes = detach_cstring(str); } -static void parse_settings_autogroup(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_settings_autogroup(char *, struct membuffer *, struct git_parser_state *state) { - UNUSED(line); - UNUSED(str); state->log->autogroup = true; } -static void parse_settings_units(char *line, struct membuffer *str, struct git_parser_state *unused) +static void parse_settings_units(char *line, struct membuffer *, struct git_parser_state *) { - UNUSED(str); - UNUSED(unused); if (line) set_informational_units(line); } -static void parse_settings_userid(char *line, struct membuffer *str, struct git_parser_state *_unused) +static void parse_settings_userid(char *, struct membuffer *, struct git_parser_state *) /* Keep this despite removal of the webservice as there are legacy logbook around * that still have this defined. */ { - UNUSED(str); - UNUSED(_unused); - UNUSED(line); } -static void parse_settings_prefs(char *line, struct membuffer *str, struct git_parser_state *unused) +static void parse_settings_prefs(char *line, struct membuffer *, struct git_parser_state *) { - UNUSED(str); - UNUSED(unused); if (line) set_git_prefs(line); } @@ -956,10 +938,8 @@ static void parse_settings_prefs(char *line, struct membuffer *str, struct git_p * We MUST keep this in sync with the XML version (so we can report a consistent * minimum datafile version) */ -static void parse_settings_version(char *line, struct membuffer *str, struct git_parser_state *_unused) +static void parse_settings_version(char *line, struct membuffer *, struct git_parser_state *) { - UNUSED(str); - UNUSED(_unused); int version = atoi(line); report_datafile_version(version); if (version > DATAFORMAT_VERSION) @@ -967,11 +947,8 @@ static void parse_settings_version(char *line, struct membuffer *str, struct git } /* The string in the membuffer is the version string of subsurface that saved things, just FYI */ -static void parse_settings_subsurface(char *line, struct membuffer *str, struct git_parser_state *_unused) +static void parse_settings_subsurface(char *, struct membuffer *, struct git_parser_state *) { - UNUSED(line); - UNUSED(str); - UNUSED(_unused); } struct divecomputerid { @@ -984,7 +961,7 @@ struct divecomputerid { static void parse_divecomputerid_keyvalue(void *_cid, const char *key, const char *value) { - struct divecomputerid *cid = _cid; + struct divecomputerid *cid = (divecomputerid *)_cid; // Ignored legacy fields if (!strcmp(key, "firmware")) @@ -1039,7 +1016,7 @@ struct fingerprint_helper { static void parse_fingerprint_keyvalue(void *_fph, const char *key, const char *value) { - struct fingerprint_helper *fph = _fph; + struct fingerprint_helper *fph = (fingerprint_helper *)_fph; if (!strcmp(key, "model")) { fph->model = get_hex(value); @@ -1082,26 +1059,21 @@ static void parse_settings_fingerprint(char *line, struct membuffer *str, struct fph.hex_data, fph.fdeviceid, fph.fdiveid); } -static void parse_picture_filename(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_picture_filename(char *, struct membuffer *str, struct git_parser_state *state) { - UNUSED(line); state->active_pic.filename = detach_cstring(str); } -static void parse_picture_gps(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_picture_gps(char *line, struct membuffer *, struct git_parser_state *state) { - UNUSED(str); parse_location(line, &state->active_pic.location); } -static void parse_picture_hash(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_picture_hash(char *, struct membuffer *, struct git_parser_state *) { // we no longer use hashes to identify pictures, but we shouldn't // remove this parser lest users get an ugly red warning when // opening old git repos - UNUSED(line); - UNUSED(state); - UNUSED(str); } /* These need to be sorted! */ @@ -1187,7 +1159,7 @@ static void picture_parser(char *line, struct membuffer *str, struct git_parser_ static void parse_filter_preset_constraint_keyvalue(void *_state, const char *key, const char *value) { - struct git_parser_state *state = _state; + struct git_parser_state *state = (git_parser_state *)_state; if (!strcmp(key, "type")) { free(state->filter_constraint_type); state->filter_constraint_type = strdup(value); @@ -1242,7 +1214,7 @@ static void parse_filter_preset_constraint(char *line, struct membuffer *str, st static void parse_filter_preset_fulltext_keyvalue(void *_state, const char *key, const char *value) { - struct git_parser_state *state = _state; + struct git_parser_state *state = (git_parser_state *)_state; if (!strcmp(key, "mode")) { free(state->fulltext_mode); state->fulltext_mode = strdup(value); @@ -1275,9 +1247,8 @@ static void parse_filter_preset_fulltext(char *line, struct membuffer *str, stru state->fulltext_query = NULL; } -static void parse_filter_preset_name(char *line, struct membuffer *str, struct git_parser_state *state) +static void parse_filter_preset_name(char *, struct membuffer *str, struct git_parser_state *state) { - UNUSED(line); filter_preset_set_name(state->active_filter, detach_cstring(str)); } @@ -1417,7 +1388,7 @@ static unsigned parse_one_line(const char *buf, unsigned size, line_fn_t *fn, st */ static void for_each_line(git_blob *blob, line_fn_t *fn, struct git_parser_state *state) { - const char *content = git_blob_rawcontent(blob); + const char *content = (const char *)git_blob_rawcontent(blob); unsigned int size = git_blob_rawsize(blob); struct membuffer str = { 0 }; @@ -1587,10 +1558,8 @@ static int dive_directory(const char *root, const git_tree_entry *entry, const c return GIT_WALK_OK; } -static int picture_directory(const char *root, const char *name, struct git_parser_state *state) +static int picture_directory(const char *, const char *, struct git_parser_state *state) { - UNUSED(root); - UNUSED(name); if (!state->active_dive) return GIT_WALK_SKIP; return GIT_WALK_OK; @@ -1711,7 +1680,7 @@ static struct divecomputer *create_new_dc(struct dive *dive) dc = dc->next; /* Did we already fill that in? */ if (dc->samples || dc->model || dc->when) { - struct divecomputer *newdc = calloc(1, sizeof(*newdc)); + struct divecomputer *newdc = (divecomputer *)calloc(1, sizeof(*newdc)); if (!newdc) return NULL; dc->next = newdc; @@ -1728,9 +1697,8 @@ static struct divecomputer *create_new_dc(struct dive *dive) * cheap, but the loading of the git blob into memory can be pretty * costly. */ -static int parse_divecomputer_entry(struct git_parser_state *state, const git_tree_entry *entry, const char *suffix) +static int parse_divecomputer_entry(struct git_parser_state *state, const git_tree_entry *entry, const char *) { - UNUSED(suffix); git_blob *blob = git_tree_entry_blob(state->repo, entry); if (!blob) @@ -1891,7 +1859,7 @@ static int walk_tree_file(const char *root, const git_tree_entry *entry, struct static int walk_tree_cb(const char *root, const git_tree_entry *entry, void *payload) { - struct git_parser_state *state = payload; + struct git_parser_state *state = (git_parser_state *)payload; git_filemode_t mode = git_tree_entry_filemode(entry); if (mode == GIT_FILEMODE_TREE) @@ -1908,13 +1876,13 @@ static int load_dives_from_tree(git_repository *repo, git_tree *tree, struct git return 0; } -void clear_git_id(void) +extern "C" void clear_git_id(void) { free((void *)saved_git_id); saved_git_id = NULL; } -void set_git_id(const struct git_oid *id) +extern "C" void set_git_id(const struct git_oid *id) { char git_id_buffer[GIT_OID_HEXSZ + 1]; @@ -1956,7 +1924,7 @@ static int do_git_load(git_repository *repo, const char *branch, struct git_pars return ret; } -const char *get_sha(git_repository *repo, const char *branch) +extern "C" const char *get_sha(git_repository *repo, const char *branch) { static char git_id_buffer[GIT_OID_HEXSZ + 1]; git_commit *commit; @@ -1974,7 +1942,7 @@ const char *get_sha(git_repository *repo, const char *branch) * If it is a git repository, we return zero for success, * or report an error and return 1 if the load failed. */ -int git_load_dives(struct git_info *info, struct divelog *log) +extern "C" int git_load_dives(struct git_info *info, struct divelog *log) { int ret; struct git_parser_state state = { 0 };