All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v10 1/6] adapter: Simplify cached name storage
@ 2012-10-30 17:05 Frédéric Danis
  2012-10-30 17:05 ` [PATCH v10 2/6] doc: Update settings-storage.txt Frédéric Danis
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Frédéric Danis @ 2012-10-30 17:05 UTC (permalink / raw)
  To: linux-bluetooth

---
 src/adapter.c |   75 +++++++++++++++++++++++++--------------------------------
 1 file changed, 33 insertions(+), 42 deletions(-)

diff --git a/src/adapter.c b/src/adapter.c
index 2a8e7d5..f4bb622 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -85,6 +85,7 @@
 #define PENDING_FOUND_MAX 5
 
 #define SETTINGS_PATH STORAGEDIR "/%s/settings"
+#define CACHE_PATH STORAGEDIR "/%s/cache/%s"
 
 static GSList *adapter_drivers = NULL;
 
@@ -255,6 +256,32 @@ static void store_adapter_info(struct btd_adapter *adapter)
 	g_key_file_free(key_file);
 }
 
+static void store_cached_name(const bdaddr_t *local, const bdaddr_t *peer,
+				char *name)
+{
+	char filename[PATH_MAX + 1];
+	char s_addr[18], d_addr[18];
+	GKeyFile *key_file;
+	char *data;
+	gsize length = 0;
+
+	ba2str(local, s_addr);
+	ba2str(peer, d_addr);
+	snprintf(filename, PATH_MAX, CACHE_PATH, s_addr, d_addr);
+	filename[PATH_MAX] = '\0';
+	create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+
+	key_file = g_key_file_new();
+	g_key_file_load_from_file(key_file, filename, 0, NULL);
+	g_key_file_set_string(key_file, "General", "Name", name);
+
+	data = g_key_file_to_data(key_file, &length, NULL);
+	g_file_set_contents(filename, data, length, NULL);
+	g_free(data);
+
+	g_key_file_free(key_file);
+}
+
 static struct session_req *session_ref(struct session_req *req)
 {
 	req->refcount++;
@@ -2496,11 +2523,8 @@ void btd_adapter_unref(struct btd_adapter *adapter)
 static void convert_names_entry(char *key, char *value, void *user_data)
 {
 	char *address = user_data;
-	char filename[PATH_MAX + 1];
 	char *str = key;
-	GKeyFile *key_file;
-	char *data;
-	gsize length = 0;
+	bdaddr_t local, peer;
 
 	if (strchr(key, '#'))
 		str[17] = '\0';
@@ -2508,19 +2532,9 @@ static void convert_names_entry(char *key, char *value, void *user_data)
 	if (bachk(str) != 0)
 		return;
 
-	snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", address, str);
-	filename[PATH_MAX] = '\0';
-	create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
-
-	key_file = g_key_file_new();
-	g_key_file_load_from_file(key_file, filename, 0, NULL);
-	g_key_file_set_string(key_file, "General", "Name", value);
-
-	data = g_key_file_to_data(key_file, &length, NULL);
-	g_file_set_contents(filename, data, length, NULL);
-	g_free(data);
-
-	g_key_file_free(key_file);
+	str2ba(address, &local);
+	str2ba(str, &peer);
+	store_cached_name(&local, &peer, value);
 }
 
 static void convert_device_storage(struct btd_adapter *adapter)
@@ -2990,31 +3004,8 @@ void adapter_update_found_devices(struct btd_adapter *adapter,
 		write_remote_appearance(&adapter->bdaddr, bdaddr, bdaddr_type,
 							eir_data.appearance);
 
-	if (eir_data.name != NULL && eir_data.name_complete) {
-		char filename[PATH_MAX + 1];
-		char s_addr[18], d_addr[18];
-		GKeyFile *key_file;
-		char *data;
-		gsize length = 0;
-
-		ba2str(&adapter->bdaddr, s_addr);
-		ba2str(bdaddr, d_addr);
-		snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s",
-				s_addr, d_addr);
-		filename[PATH_MAX] = '\0';
-		create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
-
-		key_file = g_key_file_new();
-		g_key_file_load_from_file(key_file, filename, 0, NULL);
-		g_key_file_set_string(key_file, "General", "Name",
-					eir_data.name);
-
-		data = g_key_file_to_data(key_file, &length, NULL);
-		g_file_set_contents(filename, data, length, NULL);
-		g_free(data);
-
-		g_key_file_free(key_file);
-	}
+	if (eir_data.name != NULL && eir_data.name_complete)
+		store_cached_name(&adapter->bdaddr, bdaddr, eir_data.name);
 
 	/* Avoid creating LE device if it's not discoverable */
 	if (bdaddr_type != BDADDR_BREDR &&
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v10 2/6] doc: Update settings-storage.txt
  2012-10-30 17:05 [PATCH v10 1/6] adapter: Simplify cached name storage Frédéric Danis
@ 2012-10-30 17:05 ` Frédéric Danis
  2012-10-30 17:05 ` [PATCH v10 3/6] device: Retrieve name from storage Frédéric Danis
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Frédéric Danis @ 2012-10-30 17:05 UTC (permalink / raw)
  To: linux-bluetooth

Device name should be saved in device info file.
---
 doc/settings-storage.txt |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/settings-storage.txt b/doc/settings-storage.txt
index 93184d1..1174d44 100644
--- a/doc/settings-storage.txt
+++ b/doc/settings-storage.txt
@@ -132,6 +132,8 @@ Long term key) related to a remote device.
 
 [General] group contains:
 
+  Name			String		Remote device friendly name
+
   Alias			String		Alias name
 
   Class			String		Device class in hexadecimal,
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v10 3/6] device: Retrieve name from storage
  2012-10-30 17:05 [PATCH v10 1/6] adapter: Simplify cached name storage Frédéric Danis
  2012-10-30 17:05 ` [PATCH v10 2/6] doc: Update settings-storage.txt Frédéric Danis
@ 2012-10-30 17:05 ` Frédéric Danis
  2012-10-30 17:05 ` [PATCH v10 4/6] dbusoob: Set device name in device object Frédéric Danis
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Frédéric Danis @ 2012-10-30 17:05 UTC (permalink / raw)
  To: linux-bluetooth

Try to retrieve name from device info file.
If that fails fall back to the cache and save it to device info file.

When device name is updated, save it.
---
 src/device.c |  102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 101 insertions(+), 1 deletion(-)

diff --git a/src/device.c b/src/device.c
index bc7f8dd..9749bfd 100644
--- a/src/device.c
+++ b/src/device.c
@@ -76,6 +76,9 @@
 #define DISCONNECT_TIMER	2
 #define DISCOVERY_TIMER		2
 
+#define INFO_PATH STORAGEDIR "/%s/%s/info"
+#define CACHE_PATH STORAGEDIR "/%s/cache/%s"
+
 struct btd_disconnect_data {
 	guint id;
 	disconnect_watch watch;
@@ -202,6 +205,36 @@ static uint16_t uuid_list[] = {
 	0
 };
 
+static void store_device_info(struct btd_device *device)
+{
+	GKeyFile *key_file;
+	char filename[PATH_MAX + 1];
+	char adapter_addr[18];
+	char device_addr[18];
+	char *str;
+	gsize length = 0;
+
+	if (device->temporary)
+		return;
+
+	key_file = g_key_file_new();
+
+	g_key_file_set_string(key_file, "General", "Name", device->name);
+
+	ba2str(adapter_get_address(device->adapter), adapter_addr);
+	ba2str(&device->bdaddr, device_addr);
+	snprintf(filename, PATH_MAX, INFO_PATH, adapter_addr, device_addr);
+	filename[PATH_MAX] = '\0';
+
+	create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+
+	str = g_key_file_to_data(key_file, &length, NULL);
+	g_file_set_contents(filename, str, length, NULL);
+	g_free(str);
+
+	g_key_file_free(key_file);
+}
+
 static void browse_request_free(struct browse_req *req)
 {
 	if (req->listener_id)
@@ -1564,6 +1597,70 @@ static void device_set_version(struct btd_device *device, uint16_t value)
 						DEVICE_INTERFACE, "Version");
 }
 
+static char *load_cached_name(struct btd_device *device, const char *local,
+				const gchar *peer)
+{
+	char filename[PATH_MAX + 1];
+	GKeyFile *key_file;
+	char *str = NULL;
+	int len;
+
+	snprintf(filename, PATH_MAX, CACHE_PATH, local, peer);
+	filename[PATH_MAX] = '\0';
+
+	key_file = g_key_file_new();
+
+	if (!g_key_file_load_from_file(key_file, filename, 0, NULL))
+		goto failed;
+
+	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';
+	}
+
+failed:
+	g_key_file_free(key_file);
+
+	return str;
+}
+
+static void load_info(struct btd_device *device, const gchar *local,
+			const gchar *peer)
+{
+	char filename[PATH_MAX + 1];
+	GKeyFile *key_file;
+	char *str;
+	gboolean store_needed = FALSE;
+
+	snprintf(filename, PATH_MAX, INFO_PATH, local, peer);
+	filename[PATH_MAX] = '\0';
+
+	key_file = g_key_file_new();
+	g_key_file_load_from_file(key_file, filename, 0, NULL);
+
+	/* Load device name from storage info file, if that fails fall back to
+	 * the cache.
+	 */
+	str = g_key_file_get_string(key_file, "General", "Name", NULL);
+	if (str == NULL) {
+		str = load_cached_name(device, local, peer);
+		if (str)
+			store_needed = TRUE;
+	}
+
+	if (str) {
+		strcpy(device->name, str);
+		g_free(str);
+	}
+
+	if (store_needed)
+		store_device_info(device);
+
+	g_key_file_free(key_file);
+}
+
 struct btd_device *device_create(struct btd_adapter *adapter,
 				const gchar *address, uint8_t bdaddr_type)
 {
@@ -1600,7 +1697,8 @@ 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);
+	load_info(device, srcaddr, address);
+
 	if (read_device_alias(srcaddr, address, bdaddr_type, alias,
 							sizeof(alias)) == 0)
 		device->alias = g_strdup(alias);
@@ -1640,6 +1738,8 @@ void device_set_name(struct btd_device *device, const char *name)
 
 	strncpy(device->name, name, MAX_NAME_LENGTH);
 
+	store_device_info(device);
+
 	g_dbus_emit_property_changed(btd_get_dbus_connection(), device->path,
 						DEVICE_INTERFACE, "Name");
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v10 4/6] dbusoob: Set device name in device object
  2012-10-30 17:05 [PATCH v10 1/6] adapter: Simplify cached name storage Frédéric Danis
  2012-10-30 17:05 ` [PATCH v10 2/6] doc: Update settings-storage.txt Frédéric Danis
  2012-10-30 17:05 ` [PATCH v10 3/6] device: Retrieve name from storage Frédéric Danis
@ 2012-10-30 17:05 ` Frédéric Danis
  2012-10-31  7:22   ` Szymon Janc
  2012-10-30 17:05 ` [PATCH v10 5/6] input: Retrieve device name from " Frédéric Danis
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 9+ messages in thread
From: Frédéric Danis @ 2012-10-30 17:05 UTC (permalink / raw)
  To: linux-bluetooth

---
 plugins/dbusoob.c |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/plugins/dbusoob.c b/plugins/dbusoob.c
index 5c5b6ef..0278941 100644
--- a/plugins/dbusoob.c
+++ b/plugins/dbusoob.c
@@ -193,6 +193,7 @@ static gboolean parse_data(DBusMessageIter *data, struct oob_data *remote_data)
 
 static gboolean store_data(struct btd_adapter *adapter, struct oob_data *data)
 {
+	bdaddr_t local = *adapter_get_address(adapter);
 	bdaddr_t bdaddr;
 
 	str2ba(data->addr, &bdaddr);
@@ -207,9 +208,13 @@ static gboolean store_data(struct btd_adapter *adapter, struct oob_data *data)
 		write_remote_class(adapter_get_address(adapter), &bdaddr,
 								data->class);
 
-	if (data->name)
-		write_device_name(adapter_get_address(adapter), &bdaddr, 0,
-								data->name);
+	if (data->name) {
+		char *str;
+
+		str = g_strdup(data->name);
+		btd_event_remote_name(&local, &bdaddr, str);
+		g_free(str);
+	}
 
 	return TRUE;
 }
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v10 5/6] input: Retrieve device name from device object
  2012-10-30 17:05 [PATCH v10 1/6] adapter: Simplify cached name storage Frédéric Danis
                   ` (2 preceding siblings ...)
  2012-10-30 17:05 ` [PATCH v10 4/6] dbusoob: Set device name in device object Frédéric Danis
@ 2012-10-30 17:05 ` Frédéric Danis
  2012-10-30 17:05 ` [PATCH v10 6/6] hcitool: Retrieve names from cache directory Frédéric Danis
  2012-10-31  9:07 ` [PATCH v10 1/6] adapter: Simplify cached name storage Johan Hedberg
  5 siblings, 0 replies; 9+ messages in thread
From: Frédéric Danis @ 2012-10-30 17:05 UTC (permalink / raw)
  To: linux-bluetooth

---
 profiles/input/device.c |    9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/profiles/input/device.c b/profiles/input/device.c
index fbc3d6f..108be39 100644
--- a/profiles/input/device.c
+++ b/profiles/input/device.c
@@ -777,7 +777,7 @@ static struct input_device *input_device_new(struct btd_device *device,
 {
 	struct btd_adapter *adapter = device_get_adapter(device);
 	struct input_device *idev;
-	char name[249], src_addr[18], dst_addr[18];
+	char name[HCI_MAX_NAME_LENGTH + 1];
 
 	idev = g_new0(struct input_device, 1);
 	bacpy(&idev->src, adapter_get_address(adapter));
@@ -787,11 +787,8 @@ static struct input_device *input_device_new(struct btd_device *device,
 	idev->handle = handle;
 	idev->disable_sdp = disable_sdp;
 
-	ba2str(&idev->src, src_addr);
-	ba2str(&idev->dst, dst_addr);
-
-	if (read_device_name(src_addr, dst_addr, device_get_addr_type(device),
-				name) == 0)
+	device_get_name(device, name, HCI_MAX_NAME_LENGTH);
+	if (strlen(name) > 0)
 		idev->name = g_strdup(name);
 
 	if (g_dbus_register_interface(btd_get_dbus_connection(),
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v10 6/6] hcitool: Retrieve names from cache directory
  2012-10-30 17:05 [PATCH v10 1/6] adapter: Simplify cached name storage Frédéric Danis
                   ` (3 preceding siblings ...)
  2012-10-30 17:05 ` [PATCH v10 5/6] input: Retrieve device name from " Frédéric Danis
@ 2012-10-30 17:05 ` Frédéric Danis
  2012-10-31  9:07 ` [PATCH v10 1/6] adapter: Simplify cached name storage Johan Hedberg
  5 siblings, 0 replies; 9+ messages in thread
From: Frédéric Danis @ 2012-10-30 17:05 UTC (permalink / raw)
  To: linux-bluetooth

---
 Makefile.tools  |    2 +-
 tools/hcitool.c |   31 ++++++++++++++++++++++++++-----
 2 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/Makefile.tools b/Makefile.tools
index ec79cea..f7c85ef 100644
--- a/Makefile.tools
+++ b/Makefile.tools
@@ -28,7 +28,7 @@ tools_hciconfig_LDADD = lib/libbluetooth-private.la
 
 tools_hcitool_SOURCES = tools/hcitool.c src/oui.h src/oui.c \
 						src/textfile.h src/textfile.c
-tools_hcitool_LDADD = lib/libbluetooth-private.la
+tools_hcitool_LDADD = lib/libbluetooth-private.la @GLIB_LIBS@
 
 tools_sdptool_SOURCES = tools/sdptool.c src/sdp-xml.h src/sdp-xml.c
 tools_sdptool_LDADD = lib/libbluetooth-private.la @GLIB_LIBS@
diff --git a/tools/hcitool.c b/tools/hcitool.c
index aefbd68..a05e31f 100644
--- a/tools/hcitool.c
+++ b/tools/hcitool.c
@@ -40,6 +40,8 @@
 #include <sys/socket.h>
 #include <signal.h>
 
+#include <glib.h>
+
 #include <bluetooth/bluetooth.h>
 #include <bluetooth/hci.h>
 #include <bluetooth/hci_lib.h>
@@ -409,13 +411,32 @@ static char *major_classes[] = {
 
 static char *get_device_name(const bdaddr_t *local, const bdaddr_t *peer)
 {
-	char filename[PATH_MAX + 1], addr[18];
+	char filename[PATH_MAX + 1];
+	char local_addr[18], peer_addr[18];
+	GKeyFile *key_file;
+	char *str = NULL;
+	int len;
+
+	ba2str(local, local_addr);
+	ba2str(peer, peer_addr);
+
+	snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local_addr,
+			peer_addr);
+	filename[PATH_MAX] = '\0';
+	key_file = g_key_file_new();
+
+	if (g_key_file_load_from_file(key_file, filename, 0, NULL)) {
+		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';
+		}
+	}
 
-	ba2str(local, addr);
-	create_name(filename, PATH_MAX, STORAGEDIR, addr, "names");
+	g_key_file_free(key_file);
 
-	ba2str(peer, addr);
-	return textfile_get(filename, addr);
+	return str;
 }
 
 /* Display local devices */
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v10 4/6] dbusoob: Set device name in device object
  2012-10-30 17:05 ` [PATCH v10 4/6] dbusoob: Set device name in device object Frédéric Danis
@ 2012-10-31  7:22   ` Szymon Janc
  2012-10-31  9:07     ` Johan Hedberg
  0 siblings, 1 reply; 9+ messages in thread
From: Szymon Janc @ 2012-10-31  7:22 UTC (permalink / raw)
  To: Frédéric Danis; +Cc: linux-bluetooth

Hi Frédéric,

On Tuesday 30 of October 2012 19:05:26 Frédéric Danis wrote:
> ---
>  plugins/dbusoob.c |   11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/plugins/dbusoob.c b/plugins/dbusoob.c
> index 5c5b6ef..0278941 100644
> --- a/plugins/dbusoob.c
> +++ b/plugins/dbusoob.c
> @@ -193,6 +193,7 @@ static gboolean parse_data(DBusMessageIter *data, struct oob_data *remote_data)
>  
>  static gboolean store_data(struct btd_adapter *adapter, struct oob_data *data)
>  {
> +	bdaddr_t local = *adapter_get_address(adapter);
>  	bdaddr_t bdaddr;
>  
>  	str2ba(data->addr, &bdaddr);
> @@ -207,9 +208,13 @@ static gboolean store_data(struct btd_adapter *adapter, struct oob_data *data)
>  		write_remote_class(adapter_get_address(adapter), &bdaddr,
>  								data->class);
>  
> -	if (data->name)
> -		write_device_name(adapter_get_address(adapter), &bdaddr, 0,
> -								data->name);
> +	if (data->name) {
> +		char *str;
> +
> +		str = g_strdup(data->name);
> +		btd_event_remote_name(&local, &bdaddr, str);
> +		g_free(str);

Is this g_strdup needed? Why not just pass data->name directly?

> +	}
>  
>  	return TRUE;
>  }
> -- 
> 1.7.9.5
> 

-- 
BR
Szymon Janc

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v10 1/6] adapter: Simplify cached name storage
  2012-10-30 17:05 [PATCH v10 1/6] adapter: Simplify cached name storage Frédéric Danis
                   ` (4 preceding siblings ...)
  2012-10-30 17:05 ` [PATCH v10 6/6] hcitool: Retrieve names from cache directory Frédéric Danis
@ 2012-10-31  9:07 ` Johan Hedberg
  5 siblings, 0 replies; 9+ messages in thread
From: Johan Hedberg @ 2012-10-31  9:07 UTC (permalink / raw)
  To: Frédéric Danis; +Cc: linux-bluetooth

Hi Frédéric,

On Tue, Oct 30, 2012, Frédéric Danis wrote:
> ---
>  src/adapter.c |   75 +++++++++++++++++++++++++--------------------------------
>  1 file changed, 33 insertions(+), 42 deletions(-)

All patches in this set have been applied. Thanks.

Johan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v10 4/6] dbusoob: Set device name in device object
  2012-10-31  7:22   ` Szymon Janc
@ 2012-10-31  9:07     ` Johan Hedberg
  0 siblings, 0 replies; 9+ messages in thread
From: Johan Hedberg @ 2012-10-31  9:07 UTC (permalink / raw)
  To: Szymon Janc; +Cc: Frédéric Danis, linux-bluetooth

Hi Szymon,

On Wed, Oct 31, 2012, Szymon Janc wrote:
> > --- a/plugins/dbusoob.c
> > +++ b/plugins/dbusoob.c
> > @@ -193,6 +193,7 @@ static gboolean parse_data(DBusMessageIter *data, struct oob_data *remote_data)
> >  
> >  static gboolean store_data(struct btd_adapter *adapter, struct oob_data *data)
> >  {
> > +	bdaddr_t local = *adapter_get_address(adapter);
> >  	bdaddr_t bdaddr;
> >  
> >  	str2ba(data->addr, &bdaddr);
> > @@ -207,9 +208,13 @@ static gboolean store_data(struct btd_adapter *adapter, struct oob_data *data)
> >  		write_remote_class(adapter_get_address(adapter), &bdaddr,
> >  								data->class);
> >  
> > -	if (data->name)
> > -		write_device_name(adapter_get_address(adapter), &bdaddr, 0,
> > -								data->name);
> > +	if (data->name) {
> > +		char *str;
> > +
> > +		str = g_strdup(data->name);
> > +		btd_event_remote_name(&local, &bdaddr, str);
> > +		g_free(str);
> 
> Is this g_strdup needed? Why not just pass data->name directly?

This was because of missing const declarations in the event.h API. I
fixed this up and removed the extra strdup from this patch.

Johan

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-10-31  9:07 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-30 17:05 [PATCH v10 1/6] adapter: Simplify cached name storage Frédéric Danis
2012-10-30 17:05 ` [PATCH v10 2/6] doc: Update settings-storage.txt Frédéric Danis
2012-10-30 17:05 ` [PATCH v10 3/6] device: Retrieve name from storage Frédéric Danis
2012-10-30 17:05 ` [PATCH v10 4/6] dbusoob: Set device name in device object Frédéric Danis
2012-10-31  7:22   ` Szymon Janc
2012-10-31  9:07     ` Johan Hedberg
2012-10-30 17:05 ` [PATCH v10 5/6] input: Retrieve device name from " Frédéric Danis
2012-10-30 17:05 ` [PATCH v10 6/6] hcitool: Retrieve names from cache directory Frédéric Danis
2012-10-31  9:07 ` [PATCH v10 1/6] adapter: Simplify cached name storage Johan Hedberg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.