libpurple/protocols/oscar/bstream.c

Sat, 31 Jul 2010 20:00:39 +0000

author
Ivan Komarov <ivan.komarov@pidgin.im>
date
Sat, 31 Jul 2010 20:00:39 +0000
branch
soc.2010.icq-tlc
changeset 30669
e669bab0688e
parent 30668
54e684b2d963
child 30689
d7ebbdb28650
permissions
-rw-r--r--

Renames and cleanups.

3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2 * Purple's oscar protocol plugin
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
3 * This file is the legal property of its developers.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
4 * Please see the AUTHORS file distributed alongside this file.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
5 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
6 * This library is free software; you can redistribute it and/or
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
8 * License as published by the Free Software Foundation; either
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
9 * version 2 of the License, or (at your option) any later version.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
10 *
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
11 * This library is distributed in the hope that it will be useful,
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
14 * Lesser General Public License for more details.
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
15 *
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
17 * License along with this library; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17280
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
19 */
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
20
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
21 /*
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
22 * This file contains all functions needed to use bstreams.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
23 */
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
24
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
25 #include "oscar.h"
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
26
15151
bb985812fefa [gaim-migrate @ 17875]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
27 int byte_stream_new(ByteStream *bs, guint32 len)
bb985812fefa [gaim-migrate @ 17875]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
28 {
bb985812fefa [gaim-migrate @ 17875]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
29 if (bs == NULL)
bb985812fefa [gaim-migrate @ 17875]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
30 return -1;
bb985812fefa [gaim-migrate @ 17875]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
31
bb985812fefa [gaim-migrate @ 17875]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
32 return byte_stream_init(bs, g_malloc(len), len);
bb985812fefa [gaim-migrate @ 17875]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
33 }
bb985812fefa [gaim-migrate @ 17875]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
34
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
35 int byte_stream_init(ByteStream *bs, guint8 *data, int len)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
36 {
15151
bb985812fefa [gaim-migrate @ 17875]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
37 if (bs == NULL)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
38 return -1;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
39
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
40 bs->data = data;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
41 bs->len = len;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
42 bs->offset = 0;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
43
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
44 return 0;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
45 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
46
22860
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
47 void byte_stream_destroy(ByteStream *bs)
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
48 {
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
49 g_free(bs->data);
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
50 }
2b0e247173b2 All SNACs on FLAP channel 2 except in the auth family are now sent through
Evan Schoenberg <evands@pidgin.im>
parents: 19859
diff changeset
51
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
52 int byte_stream_bytes_left(ByteStream *bs)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
53 {
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
54 return bs->len - bs->offset;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
55 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
56
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
57 int byte_stream_curpos(ByteStream *bs)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
58 {
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
59 return bs->offset;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
60 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
61
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
62 int byte_stream_setpos(ByteStream *bs, unsigned int off)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
63 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
64 g_return_val_if_fail(off <= bs->len, -1);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
65
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
66 bs->offset = off;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
67 return off;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
68 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
69
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
70 void byte_stream_rewind(ByteStream *bs)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
71 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
72 byte_stream_setpos(bs, 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
73 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
74
10595
1338add2b0b0 [gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents: 10464
diff changeset
75 /*
1338add2b0b0 [gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents: 10464
diff changeset
76 * N can be negative, which can be used for going backwards
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
77 * in a bstream.
10595
1338add2b0b0 [gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents: 10464
diff changeset
78 */
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
79 int byte_stream_advance(ByteStream *bs, int n)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
80 {
30669
e669bab0688e Renames and cleanups.
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30668
diff changeset
81 g_return_val_if_fail(byte_stream_curpos(bs) + n >= 0, 0);
e669bab0688e Renames and cleanups.
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30668
diff changeset
82 g_return_val_if_fail(n <= byte_stream_bytes_left(bs), 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
83
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
84 bs->offset += n;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
85 return n;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
86 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
87
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
88 guint8 byte_stream_get8(ByteStream *bs)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
89 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
90 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 1, 0);
10464
034b1b3ad2be [gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents: 7631
diff changeset
91
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
92 bs->offset++;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
93 return aimutil_get8(bs->data + bs->offset - 1);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
94 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
95
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
96 guint16 byte_stream_get16(ByteStream *bs)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
97 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
98 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 2, 0);
10464
034b1b3ad2be [gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents: 7631
diff changeset
99
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
100 bs->offset += 2;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
101 return aimutil_get16(bs->data + bs->offset - 2);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
102 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
103
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
104 guint32 byte_stream_get32(ByteStream *bs)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
105 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
106 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 4, 0);
10464
034b1b3ad2be [gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents: 7631
diff changeset
107
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
108 bs->offset += 4;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
109 return aimutil_get32(bs->data + bs->offset - 4);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
110 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
111
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
112 guint8 byte_stream_getle8(ByteStream *bs)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
113 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
114 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 1, 0);
10464
034b1b3ad2be [gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents: 7631
diff changeset
115
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
116 bs->offset++;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
117 return aimutil_getle8(bs->data + bs->offset - 1);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
118 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
119
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
120 guint16 byte_stream_getle16(ByteStream *bs)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
121 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
122 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 2, 0);
10464
034b1b3ad2be [gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents: 7631
diff changeset
123
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
124 bs->offset += 2;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
125 return aimutil_getle16(bs->data + bs->offset - 2);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
126 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
127
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
128 guint32 byte_stream_getle32(ByteStream *bs)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
129 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
130 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 4, 0);
10464
034b1b3ad2be [gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents: 7631
diff changeset
131
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
132 bs->offset += 4;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
133 return aimutil_getle32(bs->data + bs->offset - 4);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
134 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
135
27437
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
136 static void byte_stream_getrawbuf_nocheck(ByteStream *bs, guint8 *buf, int len)
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
137 {
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
138 memcpy(buf, bs->data + bs->offset, len);
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
139 bs->offset += len;
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
140 }
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
141
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
142 int byte_stream_getrawbuf(ByteStream *bs, guint8 *buf, int len)
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
143 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
144 g_return_val_if_fail(byte_stream_bytes_left(bs) >= len, 0);
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
145
27437
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
146 byte_stream_getrawbuf_nocheck(bs, buf, len);
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
147 return len;
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
148 }
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
149
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
150 guint8 *byte_stream_getraw(ByteStream *bs, int len)
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
151 {
13235
72bddc689630 [gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents: 10993
diff changeset
152 guint8 *ob;
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
153
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
154 g_return_val_if_fail(byte_stream_bytes_left(bs) >= len, NULL);
27437
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
155
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
156 ob = g_malloc(len);
27437
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
157 byte_stream_getrawbuf_nocheck(bs, ob, len);
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
158 return ob;
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
159 }
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
160
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
161 char *byte_stream_getstr(ByteStream *bs, int len)
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
162 {
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
163 char *ob;
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
164
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
165 g_return_val_if_fail(byte_stream_bytes_left(bs) >= len, NULL);
27437
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
166
17280
7c0472208173 Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
167 ob = g_malloc(len + 1);
27437
4e89d2e440bb Apply [6525ecee38c5d0cbcb9bbbe105749a8553f021b3] here as well. I should
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 26069
diff changeset
168 byte_stream_getrawbuf_nocheck(bs, (guint8 *)ob, len);
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
169 ob[len] = '\0';
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
170 return ob;
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
171 }
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
172
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
173 int byte_stream_put8(ByteStream *bs, guint8 v)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
174 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
175 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 1, 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
176
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
177 bs->offset += aimutil_put8(bs->data + bs->offset, v);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
178 return 1;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
179 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
180
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
181 int byte_stream_put16(ByteStream *bs, guint16 v)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
182 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
183 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 2, 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
184
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
185 bs->offset += aimutil_put16(bs->data + bs->offset, v);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
186 return 2;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
187 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
188
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
189 int byte_stream_put32(ByteStream *bs, guint32 v)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
190 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
191 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 4, 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
192
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
193 bs->offset += aimutil_put32(bs->data + bs->offset, v);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
194 return 1;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
195 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
196
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
197 int byte_stream_putle8(ByteStream *bs, guint8 v)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
198 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
199 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 1, 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
200
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
201 bs->offset += aimutil_putle8(bs->data + bs->offset, v);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
202 return 1;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
203 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
204
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
205 int byte_stream_putle16(ByteStream *bs, guint16 v)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
206 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
207 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 2, 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
208
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
209 bs->offset += aimutil_putle16(bs->data + bs->offset, v);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
210 return 2;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
211 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
212
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
213 int byte_stream_putle32(ByteStream *bs, guint32 v)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
214 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
215 g_return_val_if_fail(byte_stream_bytes_left(bs) >= 4, 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
216
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
217 bs->offset += aimutil_putle32(bs->data + bs->offset, v);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
218 return 1;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
219 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
220
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
221
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
222 int byte_stream_putraw(ByteStream *bs, const guint8 *v, int len)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
223 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
224 g_return_val_if_fail(byte_stream_bytes_left(bs) >= len, 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
225
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
226 memcpy(bs->data + bs->offset, v, len);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
227 bs->offset += len;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
228 return len;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
229 }
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
230
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
231 int byte_stream_putstr(ByteStream *bs, const char *str)
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
232 {
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
233 return byte_stream_putraw(bs, (guint8 *)str, strlen(str));
10990
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
234 }
6655ae14e763 [gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents: 10595
diff changeset
235
13593
3450a7cede99 [gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents: 13240
diff changeset
236 int byte_stream_putbs(ByteStream *bs, ByteStream *srcbs, int len)
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
237 {
30668
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
238 g_return_val_if_fail(byte_stream_bytes_left(srcbs) >= len, 0);
54e684b2d963 Bstream cleanups:
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 27437
diff changeset
239 g_return_val_if_fail(byte_stream_bytes_left(bs) >= len, 0);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
240
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
241 memcpy(bs->data + bs->offset, srcbs->data + srcbs->offset, len);
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
242 bs->offset += len;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
243 srcbs->offset += len;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
244 return len;
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
245 }
25086
fb94ee60a4f2 Minor cleanup: remove od->sn, since it's the same as PurpleAccount->username
Mark Doliner <markdoliner@pidgin.im>
parents: 22860
diff changeset
246
fb94ee60a4f2 Minor cleanup: remove od->sn, since it's the same as PurpleAccount->username
Mark Doliner <markdoliner@pidgin.im>
parents: 22860
diff changeset
247 int byte_stream_putuid(ByteStream *bs, OscarData *od)
fb94ee60a4f2 Minor cleanup: remove od->sn, since it's the same as PurpleAccount->username
Mark Doliner <markdoliner@pidgin.im>
parents: 22860
diff changeset
248 {
fb94ee60a4f2 Minor cleanup: remove od->sn, since it's the same as PurpleAccount->username
Mark Doliner <markdoliner@pidgin.im>
parents: 22860
diff changeset
249 PurpleAccount *account;
fb94ee60a4f2 Minor cleanup: remove od->sn, since it's the same as PurpleAccount->username
Mark Doliner <markdoliner@pidgin.im>
parents: 22860
diff changeset
250
fb94ee60a4f2 Minor cleanup: remove od->sn, since it's the same as PurpleAccount->username
Mark Doliner <markdoliner@pidgin.im>
parents: 22860
diff changeset
251 account = purple_connection_get_account(od->gc);
fb94ee60a4f2 Minor cleanup: remove od->sn, since it's the same as PurpleAccount->username
Mark Doliner <markdoliner@pidgin.im>
parents: 22860
diff changeset
252
fb94ee60a4f2 Minor cleanup: remove od->sn, since it's the same as PurpleAccount->username
Mark Doliner <markdoliner@pidgin.im>
parents: 22860
diff changeset
253 return byte_stream_putle32(bs, atoi(purple_account_get_username(account)));
fb94ee60a4f2 Minor cleanup: remove od->sn, since it's the same as PurpleAccount->username
Mark Doliner <markdoliner@pidgin.im>
parents: 22860
diff changeset
254 }
26069
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
255
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
256 void byte_stream_put_bart_asset(ByteStream *bs, guint16 type, ByteStream *data)
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
257 {
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
258 byte_stream_put16(bs, type);
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
259
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
260 if (data != NULL && data->len > 0) {
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
261 /* Flags. 0x04 means "this asset has data attached to it" */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
262 byte_stream_put8(bs, 0x04); /* Flags */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
263 byte_stream_put8(bs, data->len); /* Length */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
264 byte_stream_rewind(data);
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
265 byte_stream_putbs(bs, data, data->len); /* Data */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
266 } else {
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
267 byte_stream_put8(bs, 0x00); /* No flags */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
268 byte_stream_put8(bs, 0x00); /* Length */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
269 /* No data */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
270 }
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
271 }
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
272
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
273 void byte_stream_put_bart_asset_str(ByteStream *bs, guint16 type, const char *datastr)
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
274 {
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
275 ByteStream data;
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
276 size_t len = datastr != NULL ? strlen(datastr) : 0;
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
277
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
278 if (len > 0) {
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
279 byte_stream_new(&data, 2 + len + 2);
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
280 byte_stream_put16(&data, len); /* Length */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
281 byte_stream_putstr(&data, datastr); /* String */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
282 byte_stream_put16(&data, 0x0000); /* Unknown */
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
283 byte_stream_put_bart_asset(bs, type, &data);
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
284 byte_stream_destroy(&data);
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
285 } else {
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
286 byte_stream_put_bart_asset(bs, type, NULL);
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
287 }
0fa1f9b71cea Create two helper functions for setting the available message and iTunes
Mark Doliner <markdoliner@pidgin.im>
parents: 25086
diff changeset
288 }

mercurial