[Kazehakase-cvs] kazehakase-svn [3085] * ext/ruby/kz-rb-ext.c: added error check.

Back to archive index

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);




More information about the Kazehakase-cvs mailing list
Back to archive index