diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-08-01 14:23:13 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-08-01 14:23:13 +0000 |
commit | 45b9e246914b37b72966734f788dc3d9de190204 (patch) | |
tree | 7d42afb392fe99dcf8d9f0640a30e78ecb04249d /hcid/main.c | |
parent | b42e7c67689f7c93e2eb7a54dd677a5c5e23df59 (diff) |
hcid: don't register the adapter D-Bus path when it is on raw mode
Diffstat (limited to 'hcid/main.c')
-rw-r--r-- | hcid/main.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/hcid/main.c b/hcid/main.c index b58861a6..61d2fecd 100644 --- a/hcid/main.c +++ b/hcid/main.c @@ -523,14 +523,14 @@ static void init_device(int dev_id) if (ioctl(dd, HCIDEVUP, dev_id) < 0 && errno != EALREADY) { error("Can't init device hci%d: %s (%d)", dev_id, strerror(errno), errno); - exit(1); + goto fail; } if (hci_devinfo(dev_id, &di) < 0) - exit(1); + goto fail; if (hci_test_bit(HCI_RAW, &di.flags)) - exit(0); + goto done; if (hcid.offmode == HCID_OFFMODE_DEVDOWN) { char mode[16]; @@ -538,20 +538,31 @@ static void init_device(int dev_id) if (read_device_mode(&di.bdaddr, mode, sizeof(mode)) == 0 && strcmp(mode, "off") == 0) { ioctl(dd, HCIDEVDOWN, dev_id); - exit(0); + goto done; } } +done: hci_close_dev(dd); - exit(0); + +fail: + hci_close_dev(dd); + exit(1); } static void device_devreg_setup(int dev_id) { + struct hci_dev_info di; + if (hcid.auto_init) init_device(dev_id); - hcid_dbus_register_device(dev_id); + + if (hci_devinfo(dev_id, &di) < 0) + return; + + if (!hci_test_bit(HCI_RAW, &di.flags)) + hcid_dbus_register_device(dev_id); } static void device_devup_setup(int dev_id) |