[前][次][番号順一覧][スレッド一覧]

ruby-changes:14080

From: akr <ko1@a...>
Date: Tue, 24 Nov 2009 09:27:10 +0900 (JST)
Subject: [ruby-changes:14080] Ruby:r25893 (trunk): * include/ruby/intern.h (rb_strerrno): declared.

akr	2009-11-24 09:26:52 +0900 (Tue, 24 Nov 2009)

  New Revision: 25893

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25893

  Log:
    * include/ruby/intern.h (rb_strerrno): declared.
    
    * template/known_errors.inc.tmpl: generate defined_error() and
      undefined_error() instead of set_syserr.
    
    * error.c (Init_syserr): define defined_error() and undefined_error()
      to follow the above change.
      (rb_strerrno): defined.
    
    * thread_pthread.c: show error message and errno macro name with
      rb_bug.

  Modified files:
    trunk/ChangeLog
    trunk/error.c
    trunk/include/ruby/intern.h
    trunk/template/known_errors.inc.tmpl
    trunk/thread_pthread.c

Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h	(revision 25892)
+++ include/ruby/intern.h	(revision 25893)
@@ -200,6 +200,7 @@
 NORETURN(void rb_load_fail(const char*));
 NORETURN(void rb_error_frozen(const char*));
 void rb_check_frozen(VALUE);
+char *rb_strerrno(int);
 /* eval.c */
 int rb_sourceline(void);
 const char *rb_sourcefile(void);
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 25892)
+++ ChangeLog	(revision 25893)
@@ -1,3 +1,17 @@
+Tue Nov 24 09:18:33 2009  Tanaka Akira  <akr@f...>
+
+	* include/ruby/intern.h (rb_strerrno): declared.
+
+	* template/known_errors.inc.tmpl: generate defined_error() and
+	  undefined_error() instead of set_syserr.
+
+	* error.c (Init_syserr): define defined_error() and undefined_error()
+	  to follow the above change.
+	  (rb_strerrno): defined.
+
+	* thread_pthread.c: show error message and errno macro name with
+	  rb_bug.
+
 Mon Nov 23 16:06:53 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* thread_pthread.c (RUBY_STACK_MIN, RUBY_STACK_SPACE): delay for
Index: thread_pthread.c
===================================================================
--- thread_pthread.c	(revision 25892)
+++ thread_pthread.c	(revision 25893)
@@ -34,7 +34,7 @@
 {
     int r;
     if ((r = pthread_mutex_lock(lock)) != 0) {
-	rb_bug("pthread_mutex_lock: %d", r);
+	rb_bug("pthread_mutex_lock: %s (%s)", strerror(r), rb_strerrno(r));
     }
 }
 
@@ -43,7 +43,7 @@
 {
     int r;
     if ((r = pthread_mutex_unlock(lock)) != 0) {
-	rb_bug("native_mutex_unlock return non-zero: %d", r);
+	rb_bug("pthread_mutex_unlock: %s (%s)", strerror(r), rb_strerrno(r));
     }
 }
 
@@ -56,7 +56,7 @@
 	    return EBUSY;
 	}
 	else {
-	    rb_bug("native_mutex_trylock return non-zero: %d", r);
+	    rb_bug("pthread_mutex_trylock: %s (%s)", strerror(r), rb_strerrno(r));
 	}
     }
     return 0;
@@ -67,7 +67,7 @@
 {
     int r = pthread_mutex_init(lock, 0);
     if (r != 0) {
-	rb_bug("native_mutex_initialize return non-zero: %d", r);
+	rb_bug("pthread_mutex_init: %s (%s)", strerror(r), rb_strerrno(r));
     }
 }
 
@@ -78,7 +78,7 @@
 {
     int r = pthread_mutex_destroy(lock);
     if (r != 0) {
-	rb_bug("native_mutex_destroy return non-zero: %d", r);
+	rb_bug("pthread_mutex_destroy: %s (%s)", strerror(r), rb_strerrno(r));
     }
 }
 
@@ -87,7 +87,7 @@
 {
     int r = pthread_cond_init(cond, 0);
     if (r != 0) {
-	rb_bug("native_cond_initialize return non-zero: %d", r);
+	rb_bug("pthread_cond_init: %s (%s)", strerror(r), rb_strerrno(r));
     }
 }
 
@@ -96,7 +96,7 @@
 {
     int r = pthread_cond_destroy(cond);
     if (r != 0) {
-	rb_bug("native_cond_destroy return non-zero: %d", r);
+	rb_bug("pthread_cond_destroy: %s (%s)", strerror(r), rb_strerrno(r));
     }
 }
 
@@ -304,7 +304,7 @@
 }
 
 #define CHECK_ERR(expr) \
-    {int err = (expr); if (err) {rb_bug("err: %d - %s", err, #expr);}}
+    {int err = (expr); if (err) {rb_bug("%s: %s (%s)", #expr, strerror(err), rb_strerrno(err));}}
 
 static int
 native_thread_init_stack(rb_thread_t *th)
@@ -621,7 +621,7 @@
 		thread_debug("native_sleep: pthread_cond_wait start\n");
 		r = pthread_cond_wait(&th->native_thread_data.sleep_cond,
 				      &th->interrupt_lock);
-                if (r) rb_bug("pthread_cond_wait: %d", r);
+                if (r) rb_bug("pthread_cond_wait: %s (%s)", strerror(r), rb_strerrno(r));
 		thread_debug("native_sleep: pthread_cond_wait end\n");
 	    }
 	    else {
@@ -630,7 +630,7 @@
 			     (unsigned long)ts.tv_sec, ts.tv_nsec);
 		r = pthread_cond_timedwait(&th->native_thread_data.sleep_cond,
 					   &th->interrupt_lock, &ts);
-		if (r && r != ETIMEDOUT) rb_bug("pthread_cond_timedwait: %d", r);
+		if (r && r != ETIMEDOUT) rb_bug("pthread_cond_timedwait: %s (%s)", strerror(r), rb_strerrno(r));
 
 		thread_debug("native_sleep: pthread_cond_timedwait end (%d)\n", r);
 	    }
@@ -763,7 +763,7 @@
 	else if (err == 0 || err == EINTR) {
 	    if (rb_signal_buff_size() == 0) break;
 	}
-	else rb_bug("thread_timer/timedwait: %d", err);
+	else rb_bug("thread_timer/timedwait: %s (%s)", strerror(err), rb_strerrno(err));
 
 #if !defined(__CYGWIN__) && !defined(__SYMBIAN32__)
 	if (signal_thread_list_anchor.next) {
Index: error.c
===================================================================
--- error.c	(revision 25892)
+++ error.c	(revision 25893)
@@ -1247,12 +1247,28 @@
     if (OBJ_FROZEN(obj)) rb_error_frozen(rb_obj_classname(obj));
 }
 
-void Init_syserr(void)
+void
+Init_syserr(void)
 {
     rb_eNOERROR = set_syserr(0, "NOERROR");
+#define defined_error(name, num) set_syserr(num, name);
+#define undefined_error(name) set_syserr(0, name);
 #include "known_errors.inc"
+#undef defined_error
+#undef undefined_error
 }
 
+char *
+rb_strerrno(int err)
+{
+#define defined_error(name, num) if (err == num) return name;
+#define undefined_error(name) 
+#include "known_errors.inc"
+#undef defined_error
+#undef undefined_error
+    return "NOERROR";
+}
+
 static void
 err_append(const char *s)
 {
Index: template/known_errors.inc.tmpl
===================================================================
--- template/known_errors.inc.tmpl	(revision 25892)
+++ template/known_errors.inc.tmpl	(revision 25893)
@@ -7,8 +7,8 @@
 % error_names = ARGF.read.split(/\s+/)
 % error_names.each do |name|
 #ifdef <%=name%>
-        set_syserr(<%=name%>, "<%=name%>");
+        defined_error("<%=name%>", <%=name%>)
 #else
-        set_syserr(0, "<%=name%>");
+        undefined_error("<%=name%>")
 #endif
 % end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]