comparison libpurple/internal.h @ 29502:0aac63e8489f

propagate from branch 'im.pidgin.pidgin' (head 84b4f3d9c0a8e1306eb70e9db0003177e2782269) to branch 'im.pidgin.pidgin.next.minor' (head ff2751f3bf0343a572e3ab437dd01ff6efbaf336)
author John Bailey <rekkanoryo@rekkanoryo.org>
date Wed, 16 Sep 2009 16:25:59 +0000
parents 39716f7d2c93
children f2e0b8f38e14 da81195f635e
comparison
equal deleted inserted replaced
28635:0e4b43fc68c0 29502:0aac63e8489f
116 # include <netdb.h> 116 # include <netdb.h>
117 # include <signal.h> 117 # include <signal.h>
118 # include <unistd.h> 118 # include <unistd.h>
119 #endif 119 #endif
120 120
121 /* MAXPATHLEN should only be used with readlink() on glib < 2.4.0. For
122 * anything else, use g_file_read_link() or other dynamic functions. This is
123 * important because Hurd has no hard limits on path length. */
124 #if !GLIB_CHECK_VERSION(2,4,0)
125 # ifndef MAXPATHLEN
126 # ifdef PATH_MAX
127 # define MAXPATHLEN PATH_MAX
128 # else
129 # define MAXPATHLEN 1024
130 # endif
131 # endif
132 #endif
133
134 #ifndef HOST_NAME_MAX 121 #ifndef HOST_NAME_MAX
135 # define HOST_NAME_MAX 255 122 # define HOST_NAME_MAX 255
136 #endif 123 #endif
137 124
138 #include <glib.h> 125 #include <glib.h>
139 #if !GLIB_CHECK_VERSION(2,4,0) 126
140 # define G_MAXUINT32 ((guint32) 0xffffffff) 127 /* This wasn't introduced until Glib 2.14 :( */
141 #endif
142
143 #ifndef G_MAXSIZE
144 # if GLIB_SIZEOF_LONG == 8
145 # define G_MAXSIZE ((gsize) 0xffffffffffffffff)
146 # else
147 # define G_MAXSIZE ((gsize) 0xffffffff)
148 # endif
149 #endif
150
151 #ifndef G_MAXSSIZE 128 #ifndef G_MAXSSIZE
152 # if GLIB_SIZEOF_LONG == 8 129 # if GLIB_SIZEOF_LONG == 8
153 # define G_MAXSSIZE ((gssize) 0x7fffffffffffffff) 130 # define G_MAXSSIZE ((gssize) 0x7fffffffffffffff)
154 # else 131 # else
155 # define G_MAXSSIZE ((gssize) 0x7fffffff) 132 # define G_MAXSSIZE ((gssize) 0x7fffffff)
156 # endif 133 # endif
157 #endif 134 #endif
158 135
159 #if GLIB_CHECK_VERSION(2,6,0) 136 #include <glib/gstdio.h>
160 # include <glib/gstdio.h>
161 #endif
162
163 #if !GLIB_CHECK_VERSION(2,6,0)
164 # define g_freopen freopen
165 # define g_fopen fopen
166 # define g_rmdir rmdir
167 # define g_remove remove
168 # define g_unlink unlink
169 # define g_lstat lstat
170 # define g_stat stat
171 # define g_mkdir mkdir
172 # define g_rename rename
173 # define g_open open
174 #endif
175
176 #if !GLIB_CHECK_VERSION(2,8,0) && !defined _WIN32
177 # define g_access access
178 #endif
179
180 #if !GLIB_CHECK_VERSION(2,10,0)
181 # define g_slice_new(type) g_new(type, 1)
182 # define g_slice_new0(type) g_new0(type, 1)
183 # define g_slice_free(type, mem) g_free(mem)
184 #endif
185 137
186 #ifdef _WIN32 138 #ifdef _WIN32
187 #include "win32dep.h" 139 #include "win32dep.h"
188 #endif
189
190 /* ugly ugly ugly */
191 /* This is a workaround for the fact that G_GINT64_MODIFIER and G_GSIZE_FORMAT
192 * are only defined in Glib >= 2.4 */
193 #ifndef G_GINT64_MODIFIER
194 # if GLIB_SIZEOF_LONG == 8
195 # define G_GINT64_MODIFIER "l"
196 # else
197 # define G_GINT64_MODIFIER "ll"
198 # endif
199 #endif
200
201 #ifndef G_GSIZE_MODIFIER
202 # if GLIB_SIZEOF_LONG == 8
203 # define G_GSIZE_MODIFIER "l"
204 # else
205 # define G_GSIZE_MODIFIER ""
206 # endif
207 #endif
208
209 #ifndef G_GSIZE_FORMAT
210 # if GLIB_SIZEOF_LONG == 8
211 # define G_GSIZE_FORMAT "lu"
212 # else
213 # define G_GSIZE_FORMAT "u"
214 # endif
215 #endif
216
217 #ifndef G_GSSIZE_FORMAT
218 # if GLIB_SIZEOF_LONG == 8
219 # define G_GSSIZE_FORMAT "li"
220 # else
221 # define G_GSSIZE_FORMAT "i"
222 # endif
223 #endif
224
225 #ifndef G_GNUC_NULL_TERMINATED
226 # if __GNUC__ >= 4
227 # define G_GNUC_NULL_TERMINATED __attribute__((__sentinel__))
228 # else
229 # define G_GNUC_NULL_TERMINATED
230 # endif
231 #endif 140 #endif
232 141
233 #ifdef HAVE_CONFIG_H 142 #ifdef HAVE_CONFIG_H
234 #if SIZEOF_TIME_T == 4 143 #if SIZEOF_TIME_T == 4
235 # define PURPLE_TIME_T_MODIFIER "lu" 144 # define PURPLE_TIME_T_MODIFIER "lu"
240 #endif 149 #endif
241 #endif 150 #endif
242 151
243 #include <glib-object.h> 152 #include <glib-object.h>
244 153
245 #ifndef G_DEFINE_TYPE
246 #define G_DEFINE_TYPE(TypeName, type_name, TYPE_PARENT) \
247 \
248 static void type_name##_init (TypeName *self); \
249 static void type_name##_class_init (TypeName##Class *klass); \
250 static gpointer type_name##_parent_class = NULL; \
251 static void type_name##_class_intern_init (gpointer klass) \
252 { \
253 type_name##_parent_class = g_type_class_peek_parent (klass); \
254 type_name##_class_init ((TypeName##Class*) klass); \
255 } \
256 \
257 GType \
258 type_name##_get_type (void) \
259 { \
260 static GType g_define_type_id = 0; \
261 if (G_UNLIKELY (g_define_type_id == 0)) \
262 { \
263 g_define_type_id = \
264 g_type_register_static_simple (TYPE_PARENT, \
265 g_intern_static_string (#TypeName), \
266 sizeof (TypeName##Class), \
267 (GClassInitFunc)type_name##_class_intern_init, \
268 sizeof (TypeName), \
269 (GInstanceInitFunc)type_name##_init, \
270 (GTypeFlags) 0); \
271 } \
272 return g_define_type_id; \
273 } /* closes type_name##_get_type() */
274
275 #endif
276
277 /* Safer ways to work with static buffers. When using non-static 154 /* Safer ways to work with static buffers. When using non-static
278 * buffers, either use g_strdup_* functions (preferred) or use 155 * buffers, either use g_strdup_* functions (preferred) or use
279 * g_strlcpy/g_strlcpy directly. */ 156 * g_strlcpy/g_strlcpy directly. */
280 #define purple_strlcpy(dest, src) g_strlcpy(dest, src, sizeof(dest)) 157 #define purple_strlcpy(dest, src) g_strlcpy(dest, src, sizeof(dest))
281 #define purple_strlcat(dest, src) g_strlcat(dest, src, sizeof(dest)) 158 #define purple_strlcat(dest, src) g_strlcat(dest, src, sizeof(dest))