mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-19 14:25:27 +00:00
Sort the devices when adding them to the device list
This doesn't change any real semantics, but it means that we will write out the device computer information in a well-defined order, rather than in some random order (before this: reverse order of reading them in). Having the XML file be as stable as possible is important so that *real* changes stand out when you make changes to your dives. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
ec0535d4df
commit
b5a232cf32
1 changed files with 24 additions and 2 deletions
26
device.c
26
device.c
|
@ -31,6 +31,29 @@ struct device_info *get_device_info(const char *model, uint32_t deviceid)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Sort the device_info list, so that we write it out
|
||||
* in a stable order. Otherwise we'll end up having the
|
||||
* XML file have the devices listed in some arbitrary
|
||||
* order, which is annoying.
|
||||
*/
|
||||
static void add_entry_sorted(struct device_info *entry)
|
||||
{
|
||||
struct device_info *p, **pp = &device_info_list;
|
||||
|
||||
while ((p = *pp) != NULL) {
|
||||
int cmp = strcmp(p->model, entry->model);
|
||||
if (cmp > 0)
|
||||
break;
|
||||
if (!cmp && p->deviceid > entry->deviceid)
|
||||
break;
|
||||
pp = &p->next;
|
||||
}
|
||||
|
||||
entry->next = p;
|
||||
*pp = entry;
|
||||
}
|
||||
|
||||
/* Get an existing device info model or create a new one if valid */
|
||||
struct device_info *create_device_info(const char *model, uint32_t deviceid)
|
||||
{
|
||||
|
@ -45,8 +68,7 @@ struct device_info *create_device_info(const char *model, uint32_t deviceid)
|
|||
if (entry) {
|
||||
entry->model = strdup(model);
|
||||
entry->deviceid = deviceid;
|
||||
entry->next = device_info_list;
|
||||
device_info_list = entry;
|
||||
add_entry_sorted(entry);
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue