[PATCH 2/2] Sort the devices when adding them to the device list

Linus Torvalds torvalds at linux-foundation.org
Sun Feb 3 02:20:18 PST 2013


From: Linus Torvalds <torvalds at linux-foundation.org>
Date: Sun, 3 Feb 2013 20:51:50 +1100
Subject: [PATCH 2/2] 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 at linux-foundation.org>
---
 device.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/device.c b/device.c
index 38e409980d84..660cfc1ab105 100644
--- a/device.c
+++ b/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;
 }
-- 
1.8.1.2.422.g08c0e7f



More information about the subsurface mailing list