Mon, 10 Apr 2006 02:47:43 +0000
[gaim-migrate @ 15993]
Get rid of an error message when sending or recieving a file. It was
something along the lines of "can not call g_source_remove on < 0"
and was happening because I was calling gaim_input_remove() twice.
| 3952 | 1 | /* |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
10993
diff
changeset
|
2 | * Gaim's oscar protocol plugin |
|
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 | 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 |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
10993
diff
changeset
|
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
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 | 22 | * This file contains all functions needed to use bstreams. |
| 23 | */ | |
| 24 | ||
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
10993
diff
changeset
|
25 | #include "oscar.h" |
| 3952 | 26 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
27 | int byte_stream_init(ByteStream *bs, guint8 *data, int len) |
| 3952 | 28 | { |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
29 | |
| 3952 | 30 | if (!bs) |
| 31 | return -1; | |
| 32 | ||
| 33 | bs->data = data; | |
| 34 | bs->len = len; | |
| 35 | bs->offset = 0; | |
| 36 | ||
| 37 | return 0; | |
| 38 | } | |
| 39 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
40 | int byte_stream_empty(ByteStream *bs) |
| 3952 | 41 | { |
| 42 | return bs->len - bs->offset; | |
| 43 | } | |
| 44 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
45 | int byte_stream_curpos(ByteStream *bs) |
| 3952 | 46 | { |
| 47 | return bs->offset; | |
| 48 | } | |
| 49 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
50 | int byte_stream_setpos(ByteStream *bs, unsigned int off) |
| 3952 | 51 | { |
| 52 | ||
| 53 | if (off > bs->len) | |
| 54 | return -1; | |
| 55 | ||
| 56 | bs->offset = off; | |
| 57 | ||
| 58 | return off; | |
| 59 | } | |
| 60 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
61 | void byte_stream_rewind(ByteStream *bs) |
| 3952 | 62 | { |
| 63 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
64 | byte_stream_setpos(bs, 0); |
| 3952 | 65 | |
| 66 | return; | |
| 67 | } | |
| 68 | ||
|
10595
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10464
diff
changeset
|
69 | /* |
|
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10464
diff
changeset
|
70 | * N can be negative, which can be used for going backwards |
|
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10464
diff
changeset
|
71 | * in a bstream. I'm not sure if libfaim actually does |
|
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10464
diff
changeset
|
72 | * this anywhere... |
|
1338add2b0b0
[gaim-migrate @ 12010]
Mark Doliner <markdoliner@pidgin.im>
parents:
10464
diff
changeset
|
73 | */ |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
74 | int byte_stream_advance(ByteStream *bs, int n) |
| 3952 | 75 | { |
| 76 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
77 | if ((byte_stream_curpos(bs) + n < 0) || (byte_stream_empty(bs) < n)) |
| 3952 | 78 | return 0; /* XXX throw an exception */ |
| 79 | ||
| 80 | bs->offset += n; | |
| 81 | ||
| 82 | return n; | |
| 83 | } | |
| 84 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
85 | guint8 byte_stream_get8(ByteStream *bs) |
| 3952 | 86 | { |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
87 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
88 | if (byte_stream_empty(bs) < 1) |
| 3952 | 89 | return 0; /* XXX throw an exception */ |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
90 | |
| 3952 | 91 | bs->offset++; |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
92 | |
| 3952 | 93 | return aimutil_get8(bs->data + bs->offset - 1); |
| 94 | } | |
| 95 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
96 | guint16 byte_stream_get16(ByteStream *bs) |
| 3952 | 97 | { |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
98 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
99 | if (byte_stream_empty(bs) < 2) |
| 3952 | 100 | return 0; /* XXX throw an exception */ |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
101 | |
| 3952 | 102 | bs->offset += 2; |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
103 | |
| 3952 | 104 | return aimutil_get16(bs->data + bs->offset - 2); |
| 105 | } | |
| 106 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
107 | guint32 byte_stream_get32(ByteStream *bs) |
| 3952 | 108 | { |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
109 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
110 | if (byte_stream_empty(bs) < 4) |
| 3952 | 111 | return 0; /* XXX throw an exception */ |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
112 | |
| 3952 | 113 | bs->offset += 4; |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
114 | |
| 3952 | 115 | return aimutil_get32(bs->data + bs->offset - 4); |
| 116 | } | |
| 117 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
118 | guint8 byte_stream_getle8(ByteStream *bs) |
| 3952 | 119 | { |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
120 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
121 | if (byte_stream_empty(bs) < 1) |
| 3952 | 122 | return 0; /* XXX throw an exception */ |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
123 | |
| 3952 | 124 | bs->offset++; |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
125 | |
| 3952 | 126 | return aimutil_getle8(bs->data + bs->offset - 1); |
| 127 | } | |
| 128 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
129 | guint16 byte_stream_getle16(ByteStream *bs) |
| 3952 | 130 | { |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
131 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
132 | if (byte_stream_empty(bs) < 2) |
| 3952 | 133 | return 0; /* XXX throw an exception */ |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
134 | |
| 3952 | 135 | bs->offset += 2; |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
136 | |
| 3952 | 137 | return aimutil_getle16(bs->data + bs->offset - 2); |
| 138 | } | |
| 139 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
140 | guint32 byte_stream_getle32(ByteStream *bs) |
| 3952 | 141 | { |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
142 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
143 | if (byte_stream_empty(bs) < 4) |
| 3952 | 144 | return 0; /* XXX throw an exception */ |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
145 | |
| 3952 | 146 | bs->offset += 4; |
|
10464
034b1b3ad2be
[gaim-migrate @ 11739]
Mark Doliner <markdoliner@pidgin.im>
parents:
7631
diff
changeset
|
147 | |
| 3952 | 148 | return aimutil_getle32(bs->data + bs->offset - 4); |
| 149 | } | |
| 150 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
151 | int byte_stream_getrawbuf(ByteStream *bs, guint8 *buf, int len) |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
152 | { |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
153 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
154 | if (byte_stream_empty(bs) < len) |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
155 | return 0; |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
156 | |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
157 | memcpy(buf, bs->data + bs->offset, len); |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
158 | bs->offset += len; |
|
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 | return len; |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
161 | } |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
162 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
163 | guint8 *byte_stream_getraw(ByteStream *bs, int len) |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
164 | { |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
10993
diff
changeset
|
165 | guint8 *ob; |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
166 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
167 | ob = malloc(len); |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
168 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
169 | if (byte_stream_getrawbuf(bs, ob, len) < len) { |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
170 | free(ob); |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
171 | return NULL; |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
172 | } |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
173 | |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
174 | return ob; |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
175 | } |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
176 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
177 | char *byte_stream_getstr(ByteStream *bs, int len) |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
178 | { |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
179 | char *ob; |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
180 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
181 | ob = malloc(len + 1); |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
182 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
183 | if (byte_stream_getrawbuf(bs, (guint8 *)ob, len) < len) { |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
184 | free(ob); |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
185 | return NULL; |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
186 | } |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
187 | |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
188 | ob[len] = '\0'; |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
189 | |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
190 | return ob; |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
191 | } |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
192 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
193 | int byte_stream_put8(ByteStream *bs, guint8 v) |
| 3952 | 194 | { |
| 195 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
196 | if (byte_stream_empty(bs) < 1) |
| 3952 | 197 | return 0; /* XXX throw an exception */ |
| 198 | ||
| 199 | bs->offset += aimutil_put8(bs->data + bs->offset, v); | |
| 200 | ||
| 201 | return 1; | |
| 202 | } | |
| 203 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
204 | int byte_stream_put16(ByteStream *bs, guint16 v) |
| 3952 | 205 | { |
| 206 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
207 | if (byte_stream_empty(bs) < 2) |
| 3952 | 208 | return 0; /* XXX throw an exception */ |
| 209 | ||
| 210 | bs->offset += aimutil_put16(bs->data + bs->offset, v); | |
| 211 | ||
| 212 | return 2; | |
| 213 | } | |
| 214 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
215 | int byte_stream_put32(ByteStream *bs, guint32 v) |
| 3952 | 216 | { |
| 217 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
218 | if (byte_stream_empty(bs) < 4) |
| 3952 | 219 | return 0; /* XXX throw an exception */ |
| 220 | ||
| 221 | bs->offset += aimutil_put32(bs->data + bs->offset, v); | |
| 222 | ||
| 223 | return 1; | |
| 224 | } | |
| 225 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
226 | int byte_stream_putle8(ByteStream *bs, guint8 v) |
| 3952 | 227 | { |
| 228 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
229 | if (byte_stream_empty(bs) < 1) |
| 3952 | 230 | return 0; /* XXX throw an exception */ |
| 231 | ||
| 232 | bs->offset += aimutil_putle8(bs->data + bs->offset, v); | |
| 233 | ||
| 234 | return 1; | |
| 235 | } | |
| 236 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
237 | int byte_stream_putle16(ByteStream *bs, guint16 v) |
| 3952 | 238 | { |
| 239 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
240 | if (byte_stream_empty(bs) < 2) |
| 3952 | 241 | return 0; /* XXX throw an exception */ |
| 242 | ||
| 243 | bs->offset += aimutil_putle16(bs->data + bs->offset, v); | |
| 244 | ||
| 245 | return 2; | |
| 246 | } | |
| 247 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
248 | int byte_stream_putle32(ByteStream *bs, guint32 v) |
| 3952 | 249 | { |
| 250 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
251 | if (byte_stream_empty(bs) < 4) |
| 3952 | 252 | return 0; /* XXX throw an exception */ |
| 253 | ||
| 254 | bs->offset += aimutil_putle32(bs->data + bs->offset, v); | |
| 255 | ||
| 256 | return 1; | |
| 257 | } | |
| 258 | ||
| 259 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
260 | int byte_stream_putraw(ByteStream *bs, const guint8 *v, int len) |
| 3952 | 261 | { |
| 262 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
263 | if (byte_stream_empty(bs) < len) |
| 3952 | 264 | return 0; /* XXX throw an exception */ |
| 265 | ||
| 266 | memcpy(bs->data + bs->offset, v, len); | |
| 267 | bs->offset += len; | |
| 268 | ||
| 269 | return len; | |
| 270 | } | |
| 271 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
272 | int byte_stream_putstr(ByteStream *bs, const char *str) |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
273 | { |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
274 | return byte_stream_putraw(bs, (guint8 *)str, strlen(str)); |
|
10990
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
275 | } |
|
6655ae14e763
[gaim-migrate @ 12828]
Mark Doliner <markdoliner@pidgin.im>
parents:
10595
diff
changeset
|
276 | |
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
277 | int byte_stream_putbs(ByteStream *bs, ByteStream *srcbs, int len) |
| 3952 | 278 | { |
| 279 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
280 | if (byte_stream_empty(srcbs) < len) |
| 3952 | 281 | return 0; /* XXX throw exception (underrun) */ |
| 282 | ||
|
13593
3450a7cede99
[gaim-migrate @ 15978]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
283 | if (byte_stream_empty(bs) < len) |
| 3952 | 284 | return 0; /* XXX throw exception (overflow) */ |
| 285 | ||
| 286 | memcpy(bs->data + bs->offset, srcbs->data + srcbs->offset, len); | |
| 287 | bs->offset += len; | |
| 288 | srcbs->offset += len; | |
| 289 | ||
| 290 | return len; | |
| 291 | } |