aboutsummaryrefslogtreecommitdiff
path: root/src/adapter.c
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2011-05-18 16:38:18 -0300
committerJohan Hedberg <johan.hedberg@intel.com>2011-05-18 13:44:15 -0700
commitc8004010192c5c7805e77846327c3e3c75e60fc9 (patch)
tree4b0482ad4e367b0209cf61653278265bf81dbe5f /src/adapter.c
parent35667eb052e8e2380093b95c52d5da9bd789de03 (diff)
downloadbluez-c8004010192c5c7805e77846327c3e3c75e60fc9.tar.gz
Cleanup read name and alias from storage
Diffstat (limited to 'src/adapter.c')
-rw-r--r--src/adapter.c35
1 files changed, 23 insertions, 12 deletions
diff --git a/src/adapter.c b/src/adapter.c
index 56600979..dacb1ddc 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -3022,13 +3022,24 @@ static gboolean pairing_is_legacy(bdaddr_t *local, bdaddr_t *peer,
return TRUE;
}
+static char *read_stored_data(bdaddr_t *local, bdaddr_t *peer, const char *file)
+{
+ char local_addr[18], peer_addr[18], filename[PATH_MAX + 1];
+
+ ba2str(local, local_addr);
+ ba2str(peer, peer_addr);
+
+ create_name(filename, PATH_MAX, STORAGEDIR, local_addr, file);
+
+ return textfile_get(filename, peer_addr);
+}
+
void adapter_update_found_devices(struct btd_adapter *adapter, bdaddr_t *bdaddr,
uint32_t class, int8_t rssi, uint8_t *data)
{
- char local_addr[18], peer_addr[18], filename[PATH_MAX + 1];
struct remote_dev_info *dev;
struct eir_data eir_data;
- char *alias, *name;
+ char *name;
gboolean new_dev, legacy;
name_status_t name_status;
const char *dev_name;
@@ -3047,14 +3058,7 @@ void adapter_update_found_devices(struct btd_adapter *adapter, bdaddr_t *bdaddr,
else
name_status = NAME_NOT_REQUIRED;
- ba2str(&adapter->bdaddr, local_addr);
- ba2str(bdaddr, peer_addr);
-
- create_name(filename, PATH_MAX, STORAGEDIR, local_addr, "aliases");
- alias = textfile_get(filename, peer_addr);
-
- create_name(filename, PATH_MAX, STORAGEDIR, local_addr, "names");
- name = textfile_get(filename, peer_addr);
+ name = read_stored_data(&adapter->bdaddr, bdaddr, "names");
legacy = pairing_is_legacy(&adapter->bdaddr, bdaddr, data, name);
@@ -3074,18 +3078,22 @@ void adapter_update_found_devices(struct btd_adapter *adapter, bdaddr_t *bdaddr,
dev = get_found_dev(adapter, bdaddr, &new_dev);
if (new_dev) {
+ char *alias;
if (dev_name)
dev->name = g_strdup(dev_name);
- if (alias)
+ alias = read_stored_data(&adapter->bdaddr, bdaddr, "aliases");
+ if (alias) {
dev->alias = g_strdup(alias);
+ free(alias);
+ }
dev->le = FALSE;
dev->class = class;
dev->legacy = legacy;
dev->name_status = name_status;
} else if (dev->rssi == rssi)
- return;
+ goto done;
dev->rssi = rssi;
@@ -3096,6 +3104,9 @@ void adapter_update_found_devices(struct btd_adapter *adapter, bdaddr_t *bdaddr,
g_slist_foreach(eir_data.services, dev_prepend_uuid, dev);
adapter_emit_device_found(adapter, dev);
+
+done:
+ free(name);
}
int adapter_remove_found_device(struct btd_adapter *adapter, bdaddr_t *bdaddr)