diff options
author | Frédéric Danis <frederic.danis@linux.intel.com> | 2012-10-30 18:05:28 +0100 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2012-10-31 11:05:30 +0200 |
commit | 566ef74749765ce5b3e4a8322fb59d56b20191a9 (patch) | |
tree | d6c1957434820f24d8a84af4789df8d5dd096b92 /tools/hcitool.c | |
parent | fbdca558d6ae11585afda729c3691ec2c646facb (diff) | |
download | bluez-566ef74749765ce5b3e4a8322fb59d56b20191a9.tar.gz |
hcitool: Retrieve names from cache directory
Diffstat (limited to 'tools/hcitool.c')
-rw-r--r-- | tools/hcitool.c | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/tools/hcitool.c b/tools/hcitool.c index aefbd68a7..a05e31fcb 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 */ |