annotate src/gaim_buffer.c @ 13623:51d436a267ac

[gaim-migrate @ 16009] Use the GSlice allocator (for logs and log sets) when compiling with glib 2.10 or greater and eliminate some unnecessary memory zeroing. This cuts the log loading time in half for one of Luke's contacts. committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Tue, 11 Apr 2006 16:06:24 +0000
parents 64bae3cbec8d
children 71a6a6b22149
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13200
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
1 /*
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
2 * @file gaim_buffer.h Buffer Utility Functions
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
3 * @ingroup core
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
4 *
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
5 * Gaim is the legal property of its developers, whose names are too numerous
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
7 * source distribution.
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
8 *
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
13 *
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
18 *
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
22 */
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
23 #include "internal.h"
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
24
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
25 #include "gaim_buffer.h"
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
26
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
27 #define DEFAULT_BUF_SIZE 256
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
28
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
29 GaimCircBuffer *
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
30 gaim_circ_buffer_new(gsize growsize) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
31 GaimCircBuffer *buf = g_new0(GaimCircBuffer, 1);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
32 buf->growsize = growsize ? growsize : DEFAULT_BUF_SIZE;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
33 return buf;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
34 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
35
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
36 void gaim_circ_buffer_destroy(GaimCircBuffer *buf) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
37 g_free(buf->buffer);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
38 g_free(buf);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
39 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
40
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
41 static void grow_circ_buffer(GaimCircBuffer *buf, gsize len) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
42 int in_offset = 0, out_offset = 0;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
43 int start_buflen = buf->buflen;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
44
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
45 while ((buf->buflen - buf->bufused) < len)
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
46 buf->buflen += buf->growsize;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
47
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
48 if (buf->inptr != NULL) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
49 in_offset = buf->inptr - buf->buffer;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
50 out_offset = buf->outptr - buf->buffer;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
51 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
52 buf->buffer = g_realloc(buf->buffer, buf->buflen);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
53
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
54 /* adjust the fill and remove pointer locations */
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
55 if (buf->inptr == NULL) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
56 buf->inptr = buf->outptr = buf->buffer;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
57 } else {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
58 buf->inptr = buf->buffer + in_offset;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
59 buf->outptr = buf->buffer + out_offset;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
60 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
61
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
62 /* If the fill pointer is wrapped to before the remove
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
63 * pointer, we need to shift the data */
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
64 if (in_offset < out_offset) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
65 int shift_n = MIN(buf->buflen - start_buflen,
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
66 in_offset);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
67 memcpy(buf->buffer + start_buflen, buf->buffer,
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
68 shift_n);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
69
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
70 /* If we couldn't fit the wrapped read buffer
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
71 * at the end */
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
72 if (shift_n < in_offset) {
13209
72414fe08156 [gaim-migrate @ 15573]
Daniel Atallah <daniel.atallah@gmail.com>
parents: 13200
diff changeset
73 memmove(buf->buffer,
13200
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
74 buf->buffer + shift_n,
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
75 in_offset - shift_n);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
76 buf->inptr = buf->buffer +
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
77 (in_offset - shift_n);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
78 } else {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
79 buf->inptr = buf->buffer +
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
80 start_buflen + in_offset;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
81 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
82 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
83 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
84
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
85 void gaim_circ_buffer_append(GaimCircBuffer *buf, gconstpointer src, gsize len) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
86
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
87 int len_stored;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
88
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
89 /* Grow the buffer, if necessary */
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
90 if ((buf->buflen - buf->bufused) < len)
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
91 grow_circ_buffer(buf, len);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
92
13212
64bae3cbec8d [gaim-migrate @ 15576]
Mark Doliner <mark@kingant.net>
parents: 13209
diff changeset
93 /* If there is not enough room to copy all of src before hitting
64bae3cbec8d [gaim-migrate @ 15576]
Mark Doliner <mark@kingant.net>
parents: 13209
diff changeset
94 * the end of the buffer then we will need to do two copies.
64bae3cbec8d [gaim-migrate @ 15576]
Mark Doliner <mark@kingant.net>
parents: 13209
diff changeset
95 * One copy from inptr to the end of the buffer, and the
64bae3cbec8d [gaim-migrate @ 15576]
Mark Doliner <mark@kingant.net>
parents: 13209
diff changeset
96 * second copy from the start of the buffer to the end of src. */
64bae3cbec8d [gaim-migrate @ 15576]
Mark Doliner <mark@kingant.net>
parents: 13209
diff changeset
97 if (buf->inptr >= buf->outptr)
13200
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
98 len_stored = MIN(len, buf->buflen
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
99 - (buf->inptr - buf->buffer));
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
100 else
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
101 len_stored = len;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
102
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
103 memcpy(buf->inptr, src, len_stored);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
104
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
105 if (len_stored < len) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
106 memcpy(buf->buffer, src + len_stored, len - len_stored);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
107 buf->inptr = buf->buffer + (len - len_stored);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
108 } else if ((buf->buffer - buf->inptr) == len_stored) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
109 buf->inptr = buf->buffer;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
110 } else {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
111 buf->inptr += len_stored;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
112 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
113
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
114 buf->bufused += len;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
115 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
116
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
117 gsize gaim_circ_buffer_get_max_read(GaimCircBuffer *buf) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
118 int max_read;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
119
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
120 if (buf->bufused == 0)
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
121 max_read = 0;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
122 else if ((buf->outptr - buf->inptr) >= 0)
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
123 max_read = buf->buflen - (buf->outptr - buf->buffer);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
124 else
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
125 max_read = buf->inptr - buf->outptr;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
126
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
127 return max_read;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
128 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
129
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
130 gboolean gaim_circ_buffer_mark_read(GaimCircBuffer *buf, gsize len) {
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
131 g_return_val_if_fail(gaim_circ_buffer_get_max_read(buf) >= len, FALSE);
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
132
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
133 buf->outptr += len;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
134 buf->bufused -= len;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
135 /* wrap to the start if we're at the end */
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
136 if ((buf->outptr - buf->buffer) == buf->buflen)
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
137 buf->outptr = buf->buffer;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
138
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
139 return TRUE;
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
140 }
33bef17125c2 [gaim-migrate @ 15563]
Daniel Atallah <daniel.atallah@gmail.com>
parents:
diff changeset
141