Return-Path: From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Danis?= To: linux-bluetooth@vger.kernel.org Subject: [PATCH v2 3/8] adapter: Load devices from new storage architecture Date: Wed, 28 Nov 2012 14:39:22 +0100 Message-Id: <1354109967-6238-3-git-send-email-frederic.danis@linux.intel.com> In-Reply-To: <1354109967-6238-1-git-send-email-frederic.danis@linux.intel.com> References: <1354109967-6238-1-git-send-email-frederic.danis@linux.intel.com> Content-Type: text/plain; charset="utf-8" Sender: linux-bluetooth-owner@vger.kernel.org List-ID: --- src/adapter.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/adapter.c b/src/adapter.c index 01cf22b..1d6aa08 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -2008,6 +2009,8 @@ static void load_devices(struct btd_adapter *adapter) char srcaddr[18]; struct adapter_keys keys = { adapter, NULL }; int err; + DIR *dir; + struct dirent *entry; ba2str(&adapter->bdaddr, srcaddr); @@ -2043,6 +2046,35 @@ static void load_devices(struct btd_adapter *adapter) create_name(filename, PATH_MAX, STORAGEDIR, srcaddr, "blocked"); textfile_foreach(filename, create_stored_device_from_blocked, adapter); + + snprintf(filename, PATH_MAX, STORAGEDIR "/%s", srcaddr); + filename[PATH_MAX] = '\0'; + + dir = opendir(filename); + if (!dir) { + error("Unable to open adapter storage directory: %s", filename); + return; + } + + while ((entry = readdir(dir)) != NULL) { + struct btd_device *device; + + if (entry->d_type != DT_DIR || bachk(entry->d_name) < 0) + continue; + + if (g_slist_find_custom(adapter->devices, entry->d_name, + (GCompareFunc) device_address_cmp)) + continue; + + device = device_create(adapter, entry->d_name, BDADDR_BREDR); + if (!device) + continue; + + device_set_temporary(device, FALSE); + adapter->devices = g_slist_append(adapter->devices, device); + } + + closedir(dir); } int btd_adapter_block_address(struct btd_adapter *adapter, -- 1.7.9.5