diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2011-05-18 16:38:18 -0300 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2011-05-18 13:44:15 -0700 |
commit | c8004010192c5c7805e77846327c3e3c75e60fc9 (patch) | |
tree | 4b0482ad4e367b0209cf61653278265bf81dbe5f /src/adapter.c | |
parent | 35667eb052e8e2380093b95c52d5da9bd789de03 (diff) | |
download | bluez-c8004010192c5c7805e77846327c3e3c75e60fc9.tar.gz |
Cleanup read name and alias from storage
Diffstat (limited to 'src/adapter.c')
-rw-r--r-- | src/adapter.c | 35 |
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) |