From: "Collin R. Mulliner" <collin@betaversion.net>
To: bluez-devel@lists.sourceforge.net
Subject: Re: [Bluez-devel] sdp seq of raw data
Date: Thu, 01 Dec 2005 03:50:00 -0800 [thread overview]
Message-ID: <1133437800.1037.40.camel@panic> (raw)
In-Reply-To: <1133436800.1190.62.camel@blade>
[-- Attachment #1: Type: text/plain, Size: 526 bytes --]
Hi Marcel,
here are the patches, one for include/sdp_lib.h and one src/for sdp.c.
It adds two new functions but stais backward compatible.
... Collin
PS: it's 4am and I need to go to sleep :-(
On Thu, 2005-12-01 at 12:33 +0100, Marcel Holtmann wrote:
> Hi Collin,
>
> > Do you accept a patch for this?
>
> yes :)
>
> Regards
>
> Marcel
--
Collin R. Mulliner <collin@betaversion.net>
BETAVERSiON Systems [www.betaversion.net]
info/pgp: finger collin@betaversion.net
Blessed are the Geeks, for they internet the earth!
[-- Attachment #2: bluez_libs_raw_data_src --]
[-- Type: text/plain, Size: 1921 bytes --]
--- bluez-libs-2.22/src/sdp.c 2005-10-29 16:04:28.000000000 -0700
+++ bluez-libs-2.22_new/src/sdp.c 2005-12-01 03:30:05.000000000 -0800
@@ -346,6 +346,11 @@
sdp_data_t *sdp_data_alloc(uint8_t dtd, const void *value)
{
+ return(sdp_data_alloc_leng(dtd, value, 0));
+}
+
+sdp_data_t *sdp_data_alloc_leng(uint8_t dtd, const void *value, uint32_t leng)
+{
sdp_data_t *seq;
int len = 0;
sdp_data_t *d = (sdp_data_t *) malloc(sizeof(sdp_data_t));
@@ -420,14 +425,15 @@
if (!value)
goto out_error;
- len = strlen(value);
- d->unitSize += len;
+ len = leng ? leng : strlen(value);
+ d->unitSize = len - 1;
if (len <= USHRT_MAX) {
d->val.str = (char *) malloc(len + 1);
if (!d->val.str)
goto out_error;
- strcpy(d->val.str, value);
+ if (leng) memcpy(d->val.str, value, leng);
+ else strcpy(d->val.str, value);
if (len <= UCHAR_MAX) {
d->unitSize += sizeof(uint8_t);
if (dtd != SDP_URL_STR8 && dtd != SDP_TEXT_STR8) {
@@ -491,6 +497,29 @@
return seq;
}
+sdp_data_t *sdp_seq_alloc_leng(void **dtds, void **values, int *leng, int len)
+{
+ sdp_data_t *curr = NULL, *seq = NULL;
+ int i;
+
+ for (i = 0; i < len; i++) {
+ sdp_data_t *data;
+ uint8_t dtd = *(uint8_t *)dtds[i];
+ if (dtd >= SDP_SEQ8 && dtd <= SDP_ALT32)
+ data = (sdp_data_t *)values[i];
+ else
+ data = sdp_data_alloc_leng(dtd, values[i], leng[i]);
+ if (!data)
+ return NULL;
+ if (curr)
+ curr->next = data;
+ else
+ seq = data;
+ curr = data;
+ }
+ return sdp_data_alloc_leng(SDP_SEQ8, seq, leng[i]);
+}
+
sdp_data_t *sdp_seq_alloc(void **dtds, void **values, int len)
{
sdp_data_t *curr = NULL, *seq = NULL;
@@ -681,7 +710,8 @@
case SDP_URL_STR16:
case SDP_URL_STR32:
src = (unsigned char *)d->val.str;
- data_size = strlen(d->val.str);
+ //data_size = strlen(d->val.str);
+ data_size = d->unitSize;
sdp_set_seq_len(seqp, data_size);
break;
case SDP_SEQ8:
[-- Attachment #3: bluez_libs_raw_data_inc --]
[-- Type: text/plain, Size: 744 bytes --]
--- bluez-libs-2.22/include/sdp_lib.h 2005-10-29 16:04:28.000000000 -0700
+++ bluez-libs-2.22_new/include/sdp_lib.h 2005-12-01 02:21:16.000000000 -0800
@@ -102,10 +102,12 @@
* Basic sdp data functions
*/
sdp_data_t *sdp_data_alloc(uint8_t dtd, const void *value);
+sdp_data_t *sdp_data_alloc_leng(uint8_t dtd, const void *value, uint32_t leng);
void sdp_data_free(sdp_data_t *data);
sdp_data_t *sdp_data_get(const sdp_record_t *rec, uint16_t attr_id);
sdp_data_t *sdp_seq_alloc(void **dtds, void **values, int len);
+sdp_data_t *sdp_seq_alloc_leng(void **dtds, void **values, int *leng, int len);
sdp_data_t *sdp_seq_append(sdp_data_t *seq, sdp_data_t *data);
int sdp_attr_add(sdp_record_t *rec, uint16_t attr, sdp_data_t *data);
next prev parent reply other threads:[~2005-12-01 11:50 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-01 9:39 [Bluez-devel] sdp seq of raw data Collin R. Mulliner
2005-12-01 9:55 ` Marcel Holtmann
2005-12-01 10:03 ` Collin R. Mulliner
2005-12-01 10:46 ` Marcel Holtmann
2005-12-01 11:23 ` Collin R. Mulliner
2005-12-01 11:33 ` Marcel Holtmann
2005-12-01 11:50 ` Collin R. Mulliner [this message]
2005-12-02 19:42 ` Marcel Holtmann
2005-12-02 19:53 ` Steven Singer
2005-12-02 20:06 ` Marcel Holtmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1133437800.1037.40.camel@panic \
--to=collin@betaversion.net \
--cc=bluez-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).