On Mon, 2020-11-30 at 13:56 -0800, Sonny Sasaka wrote: > The public function is motivated by the Battery Provider API code > which > needs to probe whether a device exists. > > Reviewed-by: Miao-chen Chou <mcchou@xxxxxxxxxxxx> > > --- > src/adapter.c | 33 ++++++++++++++++++++++++--------- > src/adapter.h | 2 ++ > 2 files changed, 26 insertions(+), 9 deletions(-) > > diff --git a/src/adapter.c b/src/adapter.c > index 56d0c6eaa..03d9d29e9 100644 > --- a/src/adapter.c > +++ b/src/adapter.c > @@ -872,6 +872,30 @@ struct btd_device > *btd_adapter_find_device(struct btd_adapter *adapter, > return device; > } > > +static int device_path_cmp(gconstpointer a, gconstpointer b) > +{ > + const struct btd_device *device = a; > + const char *path = b; > + const char *dev_path = device_get_path(device); > + > + return strcasecmp(dev_path, path); > +} > + > +struct btd_device *btd_adapter_find_device_by_path(struct > btd_adapter *adapter, > + const char *path) > +{ > + GSList *list; > + > + if (!adapter) > + return NULL; > + > + list = g_slist_find_custom(adapter->devices, path, > device_path_cmp); > + if (!list) > + return NULL; > + > + return list->data; > +} > + > static void uuid_to_uuid128(uuid_t *uuid128, const uuid_t *uuid) > { > if (uuid->type == SDP_UUID16) > @@ -3192,15 +3216,6 @@ static gboolean property_get_roles(const > GDBusPropertyTable *property, > return TRUE; > } > > -static int device_path_cmp(gconstpointer a, gconstpointer b) > -{ > - const struct btd_device *device = a; > - const char *path = b; > - const char *dev_path = device_get_path(device); > - > - return strcasecmp(dev_path, path); > -} You should move the function in a separate patch, ideally. This is helpful to show that the function was not modified in any way. > static DBusMessage *remove_device(DBusConnection *conn, > DBusMessage *msg, void > *user_data) > { > diff --git a/src/adapter.h b/src/adapter.h > index e5750a37b..60b5e3bcc 100644 > --- a/src/adapter.h > +++ b/src/adapter.h > @@ -83,6 +83,8 @@ sdp_list_t *btd_adapter_get_services(struct > btd_adapter *adapter); > struct btd_device *btd_adapter_find_device(struct btd_adapter > *adapter, > const > bdaddr_t *dst, > uint8_t > dst_type); > +struct btd_device *btd_adapter_find_device_by_path(struct > btd_adapter *adapter, > + const char *path); > > const char *adapter_get_path(struct btd_adapter *adapter); > const bdaddr_t *btd_adapter_get_address(struct btd_adapter > *adapter);