summaryrefslogtreecommitdiff
path: root/error.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-11-24 00:26:52 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-11-24 00:26:52 +0000
commit3302b8fff571bfac2ac26376586d257f29fa44b3 (patch)
tree42b1b2b8aace93b164b42288cae9c2a133c4773d /error.c
parenta80eb26a188db79decadb82a459754c344dcf5a5 (diff)
* 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'error.c')
-rw-r--r--error.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/error.c b/error.c
index 6297584ecd..aeacc4d130 100644
--- a/error.c
+++ b/error.c
@@ -1247,10 +1247,26 @@ rb_check_frozen(VALUE obj)
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