diff options
author | Anderson Lizardo <anderson.lizardo@openbossa.org> | 2013-02-15 11:07:46 -0400 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-02-18 09:59:34 +0200 |
commit | eff66b3ebbd72cf2d8732a476a79745c905c6641 (patch) | |
tree | 7a2076557109c9027c7d7b5b9882cb98feb9caa0 /lib/sdp.c | |
parent | a9544b8062e706f394d718880802359653e68952 (diff) | |
download | bluez-eff66b3ebbd72cf2d8732a476a79745c905c6641.tar.gz |
lib: Reuse identical code in sdp_get_{add,}_access_protos()
sdp_get_access_protos() and sdp_get_add_access_protos() do almost
exactly the same thing, except for an additional statement for the
latter.
Diffstat (limited to 'lib/sdp.c')
-rw-r--r-- | lib/sdp.c | 34 |
1 files changed, 12 insertions, 22 deletions
@@ -1860,18 +1860,22 @@ sdp_data_t *sdp_get_proto_desc(sdp_list_t *list, int proto) return NULL; } -int sdp_get_access_protos(const sdp_record_t *rec, sdp_list_t **pap) +static int sdp_get_proto_descs(uint16_t attr_id, const sdp_record_t *rec, + sdp_list_t **pap) { sdp_data_t *pdlist, *curr; sdp_list_t *ap = 0; - pdlist = sdp_data_get(rec, SDP_ATTR_PROTO_DESC_LIST); + pdlist = sdp_data_get(rec, attr_id); if (pdlist == NULL) { errno = ENODATA; return -1; } SDPDBG("AP type : 0%x\n", pdlist->dtd); + if (attr_id == SDP_ATTR_ADD_PROTO_DESC_LIST) + pdlist = pdlist->val.dataseq; + for (; pdlist; pdlist = pdlist->next) { sdp_list_t *pds = 0; for (curr = pdlist->val.dataseq; curr; curr = curr->next) @@ -1882,28 +1886,14 @@ int sdp_get_access_protos(const sdp_record_t *rec, sdp_list_t **pap) return 0; } -int sdp_get_add_access_protos(const sdp_record_t *rec, sdp_list_t **pap) +int sdp_get_access_protos(const sdp_record_t *rec, sdp_list_t **pap) { - sdp_data_t *pdlist, *curr; - sdp_list_t *ap = 0; - - pdlist = sdp_data_get(rec, SDP_ATTR_ADD_PROTO_DESC_LIST); - if (pdlist == NULL) { - errno = ENODATA; - return -1; - } - SDPDBG("AP type : 0%x\n", pdlist->dtd); - - pdlist = pdlist->val.dataseq; + return sdp_get_proto_descs(SDP_ATTR_PROTO_DESC_LIST, rec, pap); +} - for (; pdlist; pdlist = pdlist->next) { - sdp_list_t *pds = 0; - for (curr = pdlist->val.dataseq; curr; curr = curr->next) - pds = sdp_list_append(pds, curr->val.dataseq); - ap = sdp_list_append(ap, pds); - } - *pap = ap; - return 0; +int sdp_get_add_access_protos(const sdp_record_t *rec, sdp_list_t **pap) +{ + return sdp_get_proto_descs(SDP_ATTR_ADD_PROTO_DESC_LIST, rec, pap); } int sdp_get_uuidseq_attr(const sdp_record_t *rec, uint16_t attr, |