aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--device.c10
-rw-r--r--device.h2
-rw-r--r--dive.h2
-rw-r--r--gtk-gui.c15
-rw-r--r--save-xml.c33
5 files changed, 15 insertions, 47 deletions
diff --git a/device.c b/device.c
index 5b744224e..38e409980 100644
--- a/device.c
+++ b/device.c
@@ -51,16 +51,6 @@ struct device_info *create_device_info(const char *model, uint32_t deviceid)
return entry;
}
-void clear_device_saved_status(void)
-{
- struct device_info *nn_entry = device_info_list;
-
- while (nn_entry) {
- nn_entry->saved = FALSE;
- nn_entry = nn_entry->next;
- }
-}
-
/* do we have a DIFFERENT divecomputer of the same model? */
struct device_info *get_different_device_info(const char *model, uint32_t deviceid)
{
diff --git a/device.h b/device.h
index 31e4a74f9..8a306ef78 100644
--- a/device.h
+++ b/device.h
@@ -9,14 +9,12 @@ struct device_info {
const char *firmware;
const char *nickname;
struct device_info *next;
- gboolean saved;
};
extern struct device_info *get_device_info(const char *model, uint32_t deviceid);
extern struct device_info *get_different_device_info(const char *model, uint32_t deviceid);
extern struct device_info *create_device_info(const char *model, uint32_t deviceid);
extern struct device_info *remove_device_info(const char *model, uint32_t deviceid);
-extern void clear_device_saved_status(void);
extern struct device_info *head_of_device_info_list(void);
#endif
diff --git a/dive.h b/dive.h
index fc82f5e43..f300b100c 100644
--- a/dive.h
+++ b/dive.h
@@ -538,8 +538,6 @@ extern void flush_divelist(struct dive *dive);
extern void set_dc_nickname(struct dive *dive);
extern const char *get_dc_nickname(const char *model, uint32_t deviceid);
extern void remember_dc(const char *model, uint32_t deviceid, const char *nickname, gboolean change_conf);
-extern gboolean dc_was_saved(struct divecomputer *dc);
-extern void mark_dc_saved(struct divecomputer *dc);
extern void set_autogroup(gboolean value);
extern int total_weight(struct dive *);
diff --git a/gtk-gui.c b/gtk-gui.c
index 3df6fbf70..30d829049 100644
--- a/gtk-gui.c
+++ b/gtk-gui.c
@@ -1161,7 +1161,6 @@ static void cell_edited_cb(GtkCellRendererText *cell, gchar *path,
holdnicknames->firmware = NULL;
holdnicknames->nickname = strdup(new_text);
holdnicknames->next = NULL;
- holdnicknames->saved = FALSE;
} else {
struct device_info * top = NULL;
struct device_info * last = holdnicknames;
@@ -1172,7 +1171,6 @@ static void cell_edited_cb(GtkCellRendererText *cell, gchar *path,
top->firmware = NULL;
top->nickname = strdup(new_text);
top->next = last;
- top->saved = FALSE;
holdnicknames = top;
}
}
@@ -1921,19 +1919,6 @@ const char *get_dc_nickname(const char *model, uint32_t deviceid)
return NULL;
}
-gboolean dc_was_saved(struct divecomputer *dc)
-{
- struct device_info *nn_entry = get_device_info(dc->model, dc->deviceid);
- return nn_entry && nn_entry->saved;
-}
-
-void mark_dc_saved(struct divecomputer *dc)
-{
- struct device_info *nn_entry = get_device_info(dc->model, dc->deviceid);
- if (nn_entry)
- nn_entry->saved = TRUE;
-}
-
/* no curly braces or commas, please */
static char *cleanedup_nickname(const char *nickname, int len)
{
diff --git a/save-xml.c b/save-xml.c
index 690a92777..afee34da5 100644
--- a/save-xml.c
+++ b/save-xml.c
@@ -486,20 +486,14 @@ static void save_trip(FILE *f, dive_trip_t *trip)
fprintf(f, "</trip>\n");
}
-static void save_dc_if_needed(FILE *f, struct divecomputer *dc)
+static void save_one_device(FILE *f, struct device_info *info)
{
- struct device_info *info = get_device_info(dc->model, dc->deviceid);
const char *nickname, *serial_nr, *firmware;
- /* we have no dc or no model or no deviceid information... nothing to do here */
- if (!info || info->saved)
- return;
- info->saved = 1;
-
/* Nicknames that are empty or the same as the device model are not interesting */
nickname = info->nickname;
if (nickname) {
- if (!*nickname || !strcmp(dc->model, nickname))
+ if (!*nickname || !strcmp(info->model, nickname))
nickname = NULL;
}
@@ -517,7 +511,7 @@ static void save_dc_if_needed(FILE *f, struct divecomputer *dc)
if (!serial_nr && !nickname && !firmware)
return;
- fprintf(f, "<divecomputerid model='%s' deviceid='%08x'", dc->model, dc->deviceid);
+ fprintf(f, "<divecomputerid model='%s' deviceid='%08x'", info->model, info->deviceid);
if (serial_nr)
show_utf8(f, serial_nr, " serial='", "'", 1);
if (firmware)
@@ -525,7 +519,17 @@ static void save_dc_if_needed(FILE *f, struct divecomputer *dc)
if (nickname)
show_utf8(f, nickname, " nickname='", "'", 1);
fprintf(f, "/>\n");
- return;
+}
+
+static void save_device_info(FILE *f)
+{
+ struct device_info *info;
+
+ info = head_of_device_info_list();
+ while (info) {
+ save_one_device(f, info);
+ info = info->next;
+ }
}
#define VERSION 2
@@ -547,14 +551,7 @@ void save_dives(const char *filename)
fprintf(f, "<divelog program='subsurface' version='%d'>\n<settings>\n", VERSION);
/* save the dive computer nicknames, if any */
- clear_device_saved_status();
- for_each_dive(i, dive) {
- struct divecomputer *dc = &dive->dc;
- while (dc) {
- save_dc_if_needed(f, dc);
- dc = dc->next;
- }
- }
+ save_device_info(f);
if (autogroup)
fprintf(f, "<autogroup state='1' />\n");
fprintf(f, "</settings>\n<dives>\n");