Thread (21 messages) flat view 21 messages, 2 authors, 2012-10-25

Re: [PATCH v7 13/16] device: Retrieve name from cache directory

From: Johan Hedberg <hidden>
Date: 2012-10-25 09:52:12

Hi Frédéric,

On Wed, Oct 24, 2012, Frédéric Danis wrote:
---
 src/device.c |   25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)
I've applied patches 1-12 since they seemed fine to me but there are
some things to consider with 13-16:
quoted hunk ↗ jump to hunk
--- a/src/device.c
+++ b/src/device.c
@@ -1573,6 +1573,8 @@ struct btd_device *device_create(struct btd_adapter *adapter,
 	const bdaddr_t *src;
 	char srcaddr[18], alias[MAX_NAME_LENGTH + 1];
 	uint16_t vendor, product, version;
+	char filename[PATH_MAX + 1];
+	GKeyFile *key_file;
 
 	device = g_try_malloc0(sizeof(struct btd_device));
 	if (device == NULL)
@@ -1600,7 +1602,28 @@ struct btd_device *device_create(struct btd_adapter *adapter,
 	src = adapter_get_address(adapter);
 	ba2str(src, srcaddr);
 
-	read_device_name(srcaddr, address, bdaddr_type, device->name);
+	snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", srcaddr,
+			address);
+	filename[PATH_MAX] = '\0';
+	key_file = g_key_file_new();
+
+	if (g_key_file_load_from_file(key_file, filename, 0, NULL)) {
+		char *str;
+		int len;
+
+		str = g_key_file_get_string(key_file, "General", "Name", NULL);
+		if (str) {
+			len = strlen(str);
+			if (len > HCI_MAX_NAME_LENGTH)
+				str[HCI_MAX_NAME_LENGTH] = '\0';
+
+			strcpy(device->name, str);
+			g_free(str);
+		}
+	}
+
+	g_key_file_free(key_file);
+
I'd rather have you split off a separate function to load the config
like you have for adapters.

Regarding the device name, I think the idea is that removing the cache
shouldn't cause any bad behavior with the persistent part of the storage
(i.e. configured devices). So we should probably also have the name in
the per-device storage file and try to read it from there first and if
that fails fall back to the cache.

Johan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help