svnno****@sourc*****
svnno****@sourc*****
Wed Mar 28 13:56:38 JST 2007
Revision: 3085 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=kazehakase&view=rev&rev=3085 Author: kous Date: 2007-03-28 13:56:37 +0900 (Wed, 28 Mar 2007) Log Message: ----------- * ext/ruby/kz-rb-ext.c: added error check. Modified Paths: -------------- kazehakase/trunk/ChangeLog kazehakase/trunk/ext/ruby/kz-rb-ext.c Modified: kazehakase/trunk/ChangeLog =================================================================== --- kazehakase/trunk/ChangeLog 2007-03-28 04:31:20 UTC (rev 3084) +++ kazehakase/trunk/ChangeLog 2007-03-28 04:56:37 UTC (rev 3085) @@ -1,5 +1,7 @@ 2007-03-28 Kouhei Sutou <kou****@cozmi*****> + * ext/ruby/kz-rb-ext.c: added error check. + * ext/ruby/kz-rb-ext.c: used KZ_GET_SYSTEM_KZ_DATA_DIR instead of KZ_GET_SYSTEM_DATA_DIR. Modified: kazehakase/trunk/ext/ruby/kz-rb-ext.c =================================================================== --- kazehakase/trunk/ext/ruby/kz-rb-ext.c 2007-03-28 04:31:20 UTC (rev 3084) +++ kazehakase/trunk/ext/ruby/kz-rb-ext.c 2007-03-28 04:56:37 UTC (rev 3085) @@ -139,7 +139,39 @@ #endif } +static VALUE +_require_init_pre_rb (VALUE user_data) +{ + rb_funcall(Qnil, rb_intern("require"), 1, rb_str_new2(INIT_PRE_RB)); + return Qnil; +} +static VALUE +_require_init_pre_rb_rescue (VALUE user_data, VALUE error) +{ + VALUE class_name, message; + + rb_define_const(mKz, "ENABLE", Qfalse); + + g_warning("failed to load: %s", INIT_PRE_RB); + + class_name = rb_funcall(rb_funcall(error, rb_intern("class"), 0), + rb_intern("name"), 0); + message = rb_funcall(error, rb_intern("message"), 0); + g_warning(" %s: %s", + StringValueCStr(class_name), StringValueCStr(message)); + + return Qnil; +} + +static void +require_init_pre_rb (void) +{ + rb_rescue2(_require_init_pre_rb, Qnil, + _require_init_pre_rb_rescue, Qnil, rb_eException, + NULL); +} + void kz_rb_ext_init (gpointer initial_address) { @@ -168,9 +200,7 @@ rb_ary_unshift(rb_load_path, rb_str_new2(KZ_GET_SYSTEM_RUBY_EXT_DIR)); Init_kz(); - - rb_funcall(Qnil, rb_intern("require"), 1, rb_str_new2(INIT_PRE_RB)); - + require_init_pre_rb(); if (RTEST(rb_const_get(mKz, rb_intern("ENABLE")))) { _kz_rb_app_init(mKz, kz_app); _kz_rb_window_init(mKz);