glib2 1.0.0-x86-mingw32 → 1.0.1-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ChangeLog CHANGED
@@ -1,3 +1,110 @@
1
+ 2011-09-18 Kouhei Sutou <kou@cozmixng.org>
2
+
3
+ * ext/glib2/rbgutil_callback.c: don't include unistd.h on Win32
4
+ environment.
5
+
6
+ * ext/glib2/rbgutil_callback.c (queue_callback_request): use
7
+ G_GSSIZE_FORMAT instead of 'z' for portability.
8
+
9
+ * lib/glib2.rb (GLib#__add_one_arg_setter): cleanup.
10
+
11
+ * ext/glib2/rbgutil_callback.c (queue_callback_request): add
12
+ missing 'z' for size_t format parameter.
13
+
14
+ * lib/glib2.rb (GLib.__add_one_arg_setter): convert method names
15
+ to String not Symbol to work on Ruby 1.8.
16
+
17
+ * test/glib-test-init.rb: require "rubygems".
18
+
19
+ * ext/glib2/rbgutil_callback.c (queue_callback_request): suppress
20
+ a warning. (variable ‘written’ set but not used
21
+ [-Wunused-but-set-variable])
22
+
23
+ * ext/glib2/rbgutil_callback.c, ext/glib2/rbgprivate.h: work
24
+ rb_errinfo() on Ruby 1.8 in all files.
25
+
26
+ * ext/glib2/rbglib.c, ext/glib2/rbglib.h, ext/glib2/glib2.def:
27
+ rbg_cstr2rval_with_free() -> rbg_cstr2rval_free().
28
+
29
+ * ext/glib2/rbglib.c: don't export internal functions.
30
+
31
+ * ext/glib2/rbglib.c (rbg_filename_to_ruby_body)
32
+ (rbg_filename_to_ruby_ensure): don't define on Ruby 1.8.
33
+
34
+ * ext/glib2/rbglib.c (rbg_filename_to_ruby): use
35
+ rb_external_str_new_with_enc().
36
+
37
+ * ext/glib2/rbglib.h: 1.0.0 -> 1.0.1.
38
+
39
+ 2011-09-16 Nikolai Weibull <now@bitwi.se>
40
+
41
+ * lib/glib2.rb: Remove unused variable.
42
+ * ext/glib2/rbglib.c: Don’t use ALLOCA_N() on user-supplied input.
43
+ * ext/glib2/rbglib.c, ext/glib2/rbglib.h, ext/glib2/glib2.def: Remove
44
+ rbg_rval2argv() and RVAL2ARGV().
45
+ * glib2/ext/glib2/rbglib_spawn.c: Use RVAL2STRV() instead of
46
+ RVAL2ARGV().
47
+
48
+ 2011-09-15 Nikolai Weibull <now@bitwi.se>
49
+
50
+ * ext/glib2/rbgobj_strv.c: Plug memory leak.
51
+ * ext/glib2/rbgutil.h: Add G_REPLACE_SET_PROPERTY(),
52
+ G_REPLACE_GET_PROPERTY(), and G_REPLACE_ACTION() macros for replacing
53
+ automatically defined property getters and setters and actions (from
54
+ G_SIGNAL_ACTION). These are primarily useful for making it clear why
55
+ we’re undefining a method and then redefining it.
56
+
57
+ 2011-09-14 Nikolai Weibull <now@bitwi.se>
58
+
59
+ * ext/glib2/rbglib_iochannel.c: Fix broken code under Win32.
60
+ * ext/glib2/*.c: Fix warnings on Win32.
61
+ * ext/glib2/glib2.def: Add new externs.
62
+
63
+ 2011-09-12 Nikolai Weibull <now@bitwi.se>
64
+
65
+ * lib/glib2.rb (__add_one_arg_setter): Ruby 1.9-proof this method.
66
+ * ext/glib2/rbglib.c: Fix coding style.
67
+ * ext/glib2/rbglib.c: Don’t use StringValue(RARRAY_PTR(ary)[i]), as
68
+ that changes the Array.
69
+ * ext/glib2/rbglib.c: Add rbg_strv2rval().
70
+ * ext/glib2/rbglib.h: Add RVAL2STRV and STRV2RVAL().
71
+ * ext/glib2/rbgobj_strv.c: Use RVAL2STRV() and STRV2RVAL().
72
+ * ext/glib2/rbglib.c: Ensure that memory is freed.
73
+ * ext/glib2/rbglib.h: Add CSTRFILENAME2RVAL().
74
+ * ext/glib2/rbglib.c: Add rbg_strv2rval_free().
75
+ * ext/glib2/rbglib.h: Add RVAL2STRV_FREE().
76
+
77
+ 2011-09-10 Nikolai Weibull <now@bitwi.se>
78
+
79
+ * ChangeLog: Fix date header for previous entry.
80
+ * lib/mkmf-gnome2.rb: Make last change backwards compatible with older
81
+ RubyGems. I don’t like RubyGems.
82
+ * ext/glib2/rbglib.c (rbg_rval2cstr_filename): Fix allocation.
83
+ * ext/glib2/rbglib_bookmarkfile.c: Fix RVAL2CSTRFILENAME calls.
84
+
85
+ 2011-09-09 Nikolai Weibull <now@bitwi.se>
86
+
87
+ * lib/mkmf-gnome2.rb: Use new RubyGems APIs.
88
+ * ext/glib2/*.c: Fix all warnings generated with gcc 4.4.5.
89
+ * ext/glib2/*.c: Fix all RVAL2CSTR calls.
90
+
91
+ 2011-08-04 Kouhei Sutou <kou@cozmixng.org>
92
+
93
+ * ext/glib2/rbglib_iochannel.c (ioc_win32_socket_initialize): use
94
+ rb_w32_get_osfhandle() to get raw socket handle on Windows.
95
+ Suggested by NAKAMURA Usaku. Thanks!!!
96
+
97
+ 2011-08-03 Kouhei Sutou <kou@cozmixng.org>
98
+
99
+ * ext/glib2/rbglib_iochannel.c (ioc_s_open): add missing Windows
100
+ support.
101
+ Reported by OBATA Akio. Thanks!!!
102
+
103
+ 2011-07-13 Kouhei Sutou <kou@cozmixng.org>
104
+
105
+ * ext/glib2/rbglib_iochannel.c (ioc_win32_socket_initialize): fix
106
+ variable name.
107
+
1
108
  2011-06-30 Kouhei Sutou <kou@cozmixng.org>
2
109
 
3
110
  * ext/glib2/rbglib_iochannel.c: bind g_io_channel_win32_new_socket().
@@ -56,14 +56,25 @@ EXPORTS
56
56
  g_value_set_ruby_value
57
57
  g_key_file_get_type
58
58
  rbg_rval_inspect
59
+ rbg_string_value_ptr
59
60
  rbg_rval2cstr
60
61
  rbg_rval2cstr_accept_nil
61
62
  rbg_cstr2rval
63
+ rbg_cstr2rval_len
64
+ rbg_cstr2rval_with_encoding
65
+ rbg_cstr2rval_len_with_encoding
66
+ rbg_cstr2rval_free
62
67
  rbg_cstr2rval_with_free
68
+ rbg_filename_to_ruby
63
69
  rbg_filename_to_ruby_free
64
70
  rbg_filename_from_ruby
65
71
  rbg_filename_gslist_to_array_free
66
- rbg_string_value_ptr
72
+ rbg_rval2strv
73
+ rbg_rval2strv_accept_nil
74
+ rbg_rval2strv_dup
75
+ rbg_rval2strv_dup_accept_nil
76
+ rbg_strv2rval
77
+ rbg_strv2rval_free
67
78
  rbgutil_id_module_eval DATA
68
79
  rbgutil_def_setters
69
80
  rbgutil_glist2ary
@@ -43,24 +43,24 @@ extern void Init_glib_unicode();
43
43
  extern void Init_glib_keyfile();
44
44
  extern void Init_glib_bookmark_file();
45
45
 
46
- gchar *
46
+ const gchar *
47
47
  rbg_rval2cstr(VALUE *str)
48
48
  {
49
49
  StringValue(*str);
50
+
50
51
  #ifdef HAVE_RUBY_ENCODING_H
51
- if (rb_enc_get(*str) != rb_utf8_encoding()) {
52
+ if (rb_enc_get(*str) != rb_utf8_encoding())
52
53
  *str = rb_str_export_to_enc(*str, rb_utf8_encoding());
53
- }
54
54
  #endif
55
+
55
56
  return RSTRING_PTR(*str);
56
57
  }
57
58
 
58
59
  const gchar *
59
60
  rbg_rval_inspect(VALUE object)
60
61
  {
61
- VALUE inspected;
62
+ VALUE inspected = rb_funcall(object, id_inspect, 0);
62
63
 
63
- inspected = rb_funcall(object, id_inspect, 0);
64
64
  return RVAL2CSTR(inspected);
65
65
  }
66
66
 
@@ -70,25 +70,22 @@ rbg_string_value_ptr(volatile VALUE *ptr)
70
70
  return rb_string_value_ptr(ptr);
71
71
  }
72
72
 
73
- gchar *
73
+ const gchar *
74
74
  rbg_rval2cstr_accept_nil(VALUE *str)
75
75
  {
76
76
  return NIL_P(*str) ? NULL : RVAL2CSTR(*str);
77
77
  }
78
78
 
79
79
  VALUE
80
- rbg_cstr2rval(const gchar* str)
80
+ rbg_cstr2rval(const gchar *str)
81
81
  {
82
- if (!str)
83
- return Qnil;
84
-
85
- return CSTR2RVAL_LEN(str, strlen(str));
82
+ return str != NULL ? CSTR2RVAL_LEN(str, strlen(str)) : Qnil;
86
83
  }
87
84
 
88
85
  VALUE
89
- rbg_cstr2rval_len(const gchar* str, gsize len)
86
+ rbg_cstr2rval_len(const gchar *str, gsize len)
90
87
  {
91
- if (!str)
88
+ if (str == NULL)
92
89
  return Qnil;
93
90
 
94
91
  #ifdef HAVE_RUBY_ENCODING_H
@@ -99,76 +96,126 @@ rbg_cstr2rval_len(const gchar* str, gsize len)
99
96
  }
100
97
 
101
98
  VALUE
102
- rbg_cstr2rval_with_encoding(const gchar* str, const gchar *encoding)
99
+ rbg_cstr2rval_with_encoding(const gchar *str, const gchar *encoding)
103
100
  {
104
- if (!str)
105
- return Qnil;
106
-
107
- return CSTR2RVAL_LEN_ENC(str, strlen(str), encoding);
101
+ return str != NULL ? CSTR2RVAL_LEN_ENC(str, strlen(str), encoding) : Qnil;
108
102
  }
109
103
 
110
104
  VALUE
111
- rbg_cstr2rval_len_with_encoding(const gchar* str, gsize len,
105
+ rbg_cstr2rval_len_with_encoding(const gchar *str, gsize len,
112
106
  const gchar *encoding)
113
107
  {
114
- if (!str)
108
+ if (str == NULL)
115
109
  return Qnil;
116
110
 
117
111
  #ifdef HAVE_RUBY_ENCODING_H
118
- {
119
- rb_encoding *rb_encoding;
120
-
121
- if (encoding) {
122
- rb_encoding = rb_enc_find(encoding);
123
- } else {
124
- rb_encoding = rb_utf8_encoding();
125
- }
126
- return rb_external_str_new_with_enc(str, len, rb_encoding);
127
- }
112
+ return rb_external_str_new_with_enc(str, len,
113
+ encoding != NULL ?
114
+ rb_enc_find(encoding) :
115
+ rb_utf8_encoding());
128
116
  #else
129
117
  return rb_str_new(str, len);
130
118
  #endif
131
119
  }
132
120
 
133
121
  static VALUE
134
- rbg_cstr2rval_with_free_body(VALUE str)
122
+ rbg_cstr2rval_free_body(VALUE str)
135
123
  {
136
124
  return CSTR2RVAL((const gchar *)str);
137
125
  }
138
126
 
139
127
  static VALUE
140
- rbg_cstr2rval_with_free_ensure(VALUE str)
128
+ rbg_cstr2rval_free_ensure(VALUE str)
141
129
  {
142
130
  g_free((gchar *)str);
143
131
 
144
132
  return Qnil;
145
133
  }
146
134
 
135
+ VALUE
136
+ rbg_cstr2rval_free(gchar *str)
137
+ {
138
+ return str != NULL? rb_ensure(rbg_cstr2rval_free_body, (VALUE)str,
139
+ rbg_cstr2rval_free_ensure, (VALUE)str) : Qnil;
140
+ }
141
+
142
+ /* just for backward compatibility. */
147
143
  VALUE
148
144
  rbg_cstr2rval_with_free(gchar *str)
149
145
  {
150
- return str ? rb_ensure(rbg_cstr2rval_with_free_body, (VALUE)str,
151
- rbg_cstr2rval_with_free_ensure, (VALUE)str) : Qnil;
146
+ return rbg_cstr2rval_free(str);
152
147
  }
153
148
 
154
149
  #ifdef HAVE_RUBY_ENCODING_H
155
150
  static rb_encoding *filename_encoding_if_not_utf8;
156
151
  #endif
157
152
 
153
+ #ifdef HAVE_RUBY_ENCODING_H
154
+ static VALUE
155
+ rbg_filename_to_ruby_body(VALUE filename)
156
+ {
157
+ const gchar *filename_utf8 = (const gchar *)filename;
158
+ VALUE rb_filename;
159
+
160
+ rb_filename = rb_external_str_new_with_enc(filename_utf8,
161
+ strlen(filename_utf8),
162
+ rb_utf8_encoding());
163
+
164
+ /* if needed, change encoding of Ruby String to filename encoding, so that
165
+ upcoming File operations will work properly */
166
+ return filename_encoding_if_not_utf8 != NULL ?
167
+ rb_str_export_to_enc(rb_filename, filename_encoding_if_not_utf8) :
168
+ rb_filename;
169
+ }
170
+
171
+ static VALUE
172
+ rbg_filename_to_ruby_ensure(VALUE filename)
173
+ {
174
+ g_free((gchar *)filename);
175
+
176
+ return Qnil;
177
+ }
178
+ #endif
179
+
158
180
  VALUE
159
- rbg_filename_to_ruby_free(gchar *filename)
181
+ rbg_filename_to_ruby(const gchar *filename)
160
182
  {
161
183
  #ifdef HAVE_RUBY_ENCODING_H
162
184
  gchar *filename_utf8;
185
+ gsize written;
163
186
  GError *error = NULL;
187
+
188
+ if (filename == NULL)
189
+ return Qnil;
190
+
191
+ if (filename_encoding_if_not_utf8 == NULL)
192
+ return CSTR2RVAL(filename);
193
+
194
+ filename_utf8 = g_filename_to_utf8(filename, -1, NULL, &written, &error);
195
+ if (error != NULL)
196
+ RAISE_GERROR(error);
197
+
198
+ return rb_ensure(rbg_filename_to_ruby_body, (VALUE)filename_utf8,
199
+ rbg_filename_to_ruby_ensure, (VALUE)filename_utf8);
200
+ #else
201
+ return CSTR2RVAL(filename);
202
+ #endif
203
+ }
204
+
205
+ VALUE
206
+ rbg_filename_to_ruby_free(gchar *filename)
207
+ {
208
+ #ifdef HAVE_RUBY_ENCODING_H
209
+ gchar *filename_utf8;
164
210
  gsize written;
165
- VALUE rb_filename = Qnil;
166
211
 
167
212
  if (filename == NULL)
168
213
  return Qnil;
169
-
214
+
170
215
  /* convert filename to UTF-8 if needed */
171
216
  if (filename_encoding_if_not_utf8 != NULL) {
217
+ GError *error = NULL;
218
+
172
219
  filename_utf8 = g_filename_to_utf8(filename, -1, NULL, &written, &error);
173
220
  g_free(filename);
174
221
  if (error != NULL)
@@ -177,20 +224,8 @@ rbg_filename_to_ruby_free(gchar *filename)
177
224
  filename_utf8 = filename;
178
225
  }
179
226
 
180
- /* create Ruby String in UTF-8 */
181
- rb_filename = rb_external_str_new_with_enc(filename_utf8,
182
- strlen(filename_utf8),
183
- rb_utf8_encoding());
184
- g_free(filename_utf8);
185
-
186
- /* if needed, change encoding of Ruby String to filename encoding, so that
187
- upcoming File operations will work properly */
188
- if (filename_encoding_if_not_utf8 != NULL) {
189
- return rb_str_export_to_enc(rb_filename, filename_encoding_if_not_utf8);
190
- } else {
191
- return rb_filename;
192
- }
193
-
227
+ return rb_ensure(rbg_filename_to_ruby_body, (VALUE)filename_utf8,
228
+ rbg_filename_to_ruby_ensure, (VALUE)filename_utf8);
194
229
  #else
195
230
  return CSTR2RVAL_FREE(filename);
196
231
  #endif
@@ -200,44 +235,198 @@ gchar *
200
235
  rbg_filename_from_ruby(VALUE filename)
201
236
  {
202
237
  #ifdef HAVE_RUBY_ENCODING_H
203
- GError *error = NULL;
204
238
  gchar *retval;
205
239
  gsize written;
240
+ GError *error = NULL;
206
241
 
207
242
  /* if needed, change encoding of Ruby String to UTF-8 */
208
243
  StringValue(filename);
209
- if (rb_enc_get(filename) != rb_utf8_encoding()) {
244
+ if (rb_enc_get(filename) != rb_utf8_encoding())
210
245
  filename = rb_str_export_to_enc(filename, rb_utf8_encoding());
211
- }
212
246
 
213
247
  /* convert it to filename encoding if needed */
214
- if (filename_encoding_if_not_utf8 != NULL) {
215
- retval = g_filename_from_utf8(RSTRING_PTR(filename), -1, NULL, &written, &error);
216
- if (error != NULL)
217
- RAISE_GERROR(error);
218
- } else {
219
- retval = RSTRING_PTR(filename);
220
- }
248
+ if (filename_encoding_if_not_utf8 == NULL)
249
+ return g_strdup(RSTRING_PTR(filename));
221
250
 
222
- return retval;
251
+ retval = g_filename_from_utf8(RSTRING_PTR(filename), -1, NULL, &written, &error);
252
+ if (error != NULL)
253
+ RAISE_GERROR(error);
223
254
 
255
+ return retval;
224
256
  #else
225
- return RVAL2CSTR(filename);
257
+ return g_strdup(RVAL2CSTR(filename));
226
258
  #endif
227
259
  }
228
260
 
229
- VALUE
230
- rbg_filename_gslist_to_array_free(GSList *list)
261
+ static VALUE
262
+ rbg_filename_gslist_to_array_free_body(VALUE list)
231
263
  {
232
- GSList *l;
233
264
  VALUE ary = rb_ary_new();
234
- for (l = list; l != NULL; l = g_slist_next(l)) {
235
- rb_ary_push(ary, rbg_filename_to_ruby_free(l->data));
236
- }
265
+ GSList *p;
266
+
267
+ for (p = (GSList *)list; p != NULL; p = g_slist_next(p))
268
+ rb_ary_push(ary, CSTRFILENAME2RVAL(p->data));
269
+
270
+ return ary;
271
+ }
272
+
273
+ static VALUE
274
+ rbg_filename_gslist_to_array_free_ensure(VALUE val)
275
+ {
276
+ GSList *list = (GSList *)val;
277
+ GSList *p;
278
+
279
+ for (p = list; p != NULL; p = g_slist_next(p))
280
+ g_free((gchar *)p->data);
281
+
237
282
  g_slist_free(list);
283
+
284
+ return Qnil;
285
+ }
286
+
287
+ VALUE
288
+ rbg_filename_gslist_to_array_free(GSList *list)
289
+ {
290
+ return rb_ensure(rbg_filename_gslist_to_array_free_body, (VALUE)list,
291
+ rbg_filename_gslist_to_array_free_ensure, (VALUE)list);
292
+ }
293
+
294
+ struct rval2strv_args {
295
+ VALUE ary;
296
+ long n;
297
+ const gchar **strings;
298
+ };
299
+
300
+ static VALUE
301
+ rbg_rval2strv_body(VALUE value)
302
+ {
303
+ long i;
304
+ struct rval2strv_args *args = (struct rval2strv_args *)value;
305
+
306
+ for (i = 0; i < args->n; i++)
307
+ args->strings[i] = RVAL2CSTR(RARRAY_PTR(args->ary)[i]);
308
+ args->strings[args->n] = NULL;
309
+
310
+ return Qnil;
311
+ }
312
+
313
+ static VALUE
314
+ rbg_rval2strv_rescue(VALUE value)
315
+ {
316
+ struct rval2strv_args *args = (struct rval2strv_args *)value;
317
+
318
+ g_free(args->strings);
319
+
320
+ rb_exc_raise(rb_errinfo());
321
+ }
322
+
323
+ const gchar **
324
+ rbg_rval2strv(VALUE value)
325
+ {
326
+ struct rval2strv_args args;
327
+
328
+ args.ary = rb_ary_to_ary(value);
329
+ args.n = RARRAY_LEN(args.ary);
330
+ args.strings = g_new(const gchar *, args.n + 1);
331
+
332
+ rb_rescue(rbg_rval2strv_body, (VALUE)&args,
333
+ rbg_rval2strv_rescue, (VALUE)&args);
334
+
335
+ return args.strings;
336
+ }
337
+
338
+ const gchar **
339
+ rbg_rval2strv_accept_nil(VALUE ary)
340
+ {
341
+ return NIL_P(ary) ? NULL : rbg_rval2strv(ary);
342
+ }
343
+
344
+ struct rval2strv_dup_args {
345
+ VALUE ary;
346
+ long n;
347
+ gchar **strings;
348
+ };
349
+
350
+ static VALUE
351
+ rbg_rval2strv_dup_body(VALUE value)
352
+ {
353
+ long i;
354
+ struct rval2strv_dup_args *args = (struct rval2strv_dup_args *)value;
355
+
356
+ for (i = 0; i < args->n; i++)
357
+ args->strings[i] = g_strdup(RVAL2CSTR(RARRAY_PTR(args->ary)[i]));
358
+ args->strings[args->n] = NULL;
359
+
360
+ return Qnil;
361
+ }
362
+
363
+ static VALUE
364
+ rbg_rval2strv_dup_rescue(VALUE value)
365
+ {
366
+ struct rval2strv_dup_args *args = (struct rval2strv_dup_args *)value;
367
+
368
+ g_free(args->strings);
369
+
370
+ rb_exc_raise(rb_errinfo());
371
+ }
372
+
373
+ gchar **
374
+ rbg_rval2strv_dup(VALUE value)
375
+ {
376
+ struct rval2strv_dup_args args;
377
+
378
+ args.ary = rb_ary_to_ary(value);
379
+ args.n = RARRAY_LEN(args.ary);
380
+ args.strings = g_new(gchar *, args.n + 1);
381
+
382
+ rb_rescue(rbg_rval2strv_dup_body, (VALUE)&args,
383
+ rbg_rval2strv_dup_rescue, (VALUE)&args);
384
+
385
+ return args.strings;
386
+ }
387
+
388
+ gchar **
389
+ rbg_rval2strv_dup_accept_nil(VALUE ary)
390
+ {
391
+ return NIL_P(ary) ? NULL : rbg_rval2strv_dup(ary);
392
+ }
393
+
394
+ VALUE
395
+ rbg_strv2rval(const gchar **strings)
396
+ {
397
+ VALUE ary;
398
+ const gchar **p;
399
+
400
+ if (strings == NULL)
401
+ return Qnil;
402
+
403
+ ary = rb_ary_new();
404
+ for (p = strings; *p != NULL; p++)
405
+ rb_ary_push(ary, CSTR2RVAL(*p));
406
+
238
407
  return ary;
239
408
  }
240
409
 
410
+ static VALUE
411
+ rbg_strv2rval_free_body(VALUE strings)
412
+ {
413
+ return STRV2RVAL((const gchar **)strings);
414
+ }
415
+
416
+ static VALUE
417
+ rbg_strv2rval_free_ensure(VALUE strings)
418
+ {
419
+ g_strfreev((gchar **)strings);
420
+
421
+ return Qnil;
422
+ }
423
+
424
+ VALUE
425
+ rbg_strv2rval_free(gchar **strings)
426
+ {
427
+ return rb_ensure(rbg_strv2rval_free_body, (VALUE)strings,
428
+ rbg_strv2rval_free_ensure, (VALUE)strings);
429
+ }
241
430
 
242
431
  #if 0
243
432
  /*