From 65a5162550f58047974793cdc8067a970b2435c0 Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 13 Aug 1999 05:45:20 +0000 Subject: 1.4.0 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- error.c | 136 +++++++++++++++++++++++++--------------------------------------- 1 file changed, 52 insertions(+), 84 deletions(-) (limited to 'error.c') diff --git a/error.c b/error.c index 44ca067472..300c09fed0 100644 --- a/error.c +++ b/error.c @@ -6,7 +6,7 @@ $Date$ created at: Mon Aug 9 16:11:34 JST 1993 - Copyright (C) 1993-1998 Yukihiro Matsumoto + Copyright (C) 1993-1999 Yukihiro Matsumoto ************************************************/ @@ -45,10 +45,10 @@ err_snprintf(buf, len, fmt, args) } } -static void err_append _((char*)); +static void err_append _((const char*)); static void err_print(fmt, args) - char *fmt; + const char *fmt; va_list args; { char buf[BUFSIZ]; @@ -59,10 +59,10 @@ err_print(fmt, args) void #ifdef HAVE_STDARG_PROTOTYPES -rb_compile_error(char *fmt, ...) +rb_compile_error(const char *fmt, ...) #else rb_compile_error(fmt, va_alist) - char *fmt; + const char *fmt; va_dcl #endif { @@ -76,10 +76,10 @@ rb_compile_error(fmt, va_alist) void #ifdef HAVE_STDARG_PROTOTYPES -rb_compile_error_append(char *fmt, ...) +rb_compile_error_append(const char *fmt, ...) #else rb_compile_error_append(fmt, va_alist) - char *fmt; + const char *fmt; va_dcl #endif { @@ -94,10 +94,10 @@ rb_compile_error_append(fmt, va_alist) void #ifdef HAVE_STDARG_PROTOTYPES -rb_warn(char *fmt, ...) +rb_warn(const char *fmt, ...) #else rb_warn(fmt, va_alist) - char *fmt; + const char *fmt; va_dcl #endif { @@ -114,17 +114,17 @@ rb_warn(fmt, va_alist) /* rb_warning() reports only in verbose mode */ void #ifdef HAVE_STDARG_PROTOTYPES -rb_warning(char *fmt, ...) +rb_warning(const char *fmt, ...) #else rb_warning(fmt, va_alist) - char *fmt; + const char *fmt; va_dcl #endif { char buf[BUFSIZ]; va_list args; - if (!RTEST(rb_verbose)) return; + if (!RTEST(ruby_verbose)) return; snprintf(buf, BUFSIZ, "warning: %s", fmt); @@ -135,10 +135,10 @@ rb_warning(fmt, va_alist) void #ifdef HAVE_STDARG_PROTOTYPES -rb_bug(char *fmt, ...) +rb_bug(const char *fmt, ...) #else rb_bug(fmt, va_alist) - char *fmt; + const char *fmt; va_dcl #endif { @@ -146,7 +146,7 @@ rb_bug(fmt, va_alist) va_list args; snprintf(buf, BUFSIZ, "[BUG] %s", fmt); - rb_in_eval = 0; + ruby_in_eval = 0; va_init_list(args, fmt); err_print(buf, args); @@ -156,7 +156,7 @@ rb_bug(fmt, va_alist) static struct types { int type; - char *name; + const char *name; } builtin_types[] = { T_NIL, "nil", T_OBJECT, "Object", @@ -220,7 +220,10 @@ rb_check_type(x, t) #include VALUE rb_eException; -VALUE rb_eSystemExit, rb_eInterrupt, rb_eFatal; +VALUE rb_eSystemExit; +VALUE rb_eInterrupt; +VALUE rb_eSignal; +VALUE rb_eFatal; VALUE rb_eStandardError; VALUE rb_eRuntimeError; VALUE rb_eSyntaxError; @@ -238,8 +241,8 @@ VALUE rb_mErrno; VALUE rb_exc_new(etype, ptr, len) VALUE etype; - char *ptr; - int len; + const char *ptr; + long len; { VALUE exc = rb_obj_alloc(etype); @@ -250,7 +253,7 @@ rb_exc_new(etype, ptr, len) VALUE rb_exc_new2(etype, s) VALUE etype; - char *s; + const char *s; { return rb_exc_new(etype, s, strlen(s)); } @@ -283,20 +286,21 @@ exc_initialize(argc, argv, exc) } static VALUE -exc_new(argc, argv, self) +exc_exception(argc, argv, self) int argc; VALUE *argv; VALUE self; { VALUE etype, exc; + if (argc == 0) return self; if (argc == 1 && self == argv[0]) return self; etype = CLASS_OF(self); while (FL_TEST(etype, FL_SINGLETON)) { etype = RCLASS(etype)->super; } exc = rb_obj_alloc(etype); - rb_obj_call_init(exc); + rb_obj_call_init(exc, argc, argv); return exc; } @@ -337,7 +341,10 @@ static VALUE exc_backtrace(exc) VALUE exc; { - return rb_iv_get(exc, "bt"); + ID bt = rb_intern("bt"); + + if (!rb_ivar_defined(exc, bt)) return Qnil; + return rb_ivar_get(exc, bt); } static VALUE @@ -370,54 +377,15 @@ exc_set_backtrace(exc, bt) return rb_iv_set(exc, "bt", check_backtrace(bt)); } -static VALUE -exception(argc, argv) - int argc; - VALUE *argv; -{ - VALUE v = Qnil; - VALUE etype = rb_eStandardError; - int i; - ID id; - - if (argc == 0) { - rb_raise(rb_eArgError, "wrong # of arguments"); - } - rb_warn("Exception() is now obsolete"); - if (TYPE(argv[argc-1]) == T_CLASS) { - etype = argv[argc-1]; - argc--; - if (!rb_funcall(etype, '<', 1, rb_eException)) { - rb_raise(rb_eTypeError, "exception should be subclass of Exception"); - } - } - for (i=0; i