summaryrefslogtreecommitdiff
path: root/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'error.c')
-rw-r--r--error.c313
1 files changed, 127 insertions, 186 deletions
diff --git a/error.c b/error.c
index 564358c83b..a7f8ac8144 100644
--- a/error.c
+++ b/error.c
@@ -26,10 +26,7 @@
int sys_nerr = 256;
#endif
-extern char *sourcefile;
-extern int sourceline;
-
-int nerrs;
+int ruby_nerrs;
static void
err_snprintf(buf, len, fmt, args)
@@ -37,11 +34,11 @@ err_snprintf(buf, len, fmt, args)
int len;
va_list args;
{
- if (!sourcefile) {
+ if (!ruby_sourcefile) {
vsnprintf(buf, len, fmt, args);
}
else {
- int n = snprintf(buf, len, "%s:%d: ", sourcefile, sourceline);
+ int n = snprintf(buf, len, "%s:%d: ", ruby_sourcefile, ruby_sourceline);
if (len > n) {
vsnprintf((char*)buf+n, len-n, fmt, args);
}
@@ -62,9 +59,9 @@ err_print(fmt, args)
void
#ifdef HAVE_STDARG_PROTOTYPES
-Error(char *fmt, ...)
+rb_compile_error(char *fmt, ...)
#else
-Error(fmt, va_alist)
+rb_compile_error(fmt, va_alist)
char *fmt;
va_dcl
#endif
@@ -74,14 +71,14 @@ Error(fmt, va_alist)
va_init_list(args, fmt);
err_print(fmt, args);
va_end(args);
- nerrs++;
+ ruby_nerrs++;
}
void
#ifdef HAVE_STDARG_PROTOTYPES
-Error_Append(char *fmt, ...)
+rb_compile_error_append(char *fmt, ...)
#else
-Error_Append(fmt, va_alist)
+rb_compile_error_append(fmt, va_alist)
char *fmt;
va_dcl
#endif
@@ -97,9 +94,9 @@ Error_Append(fmt, va_alist)
void
#ifdef HAVE_STDARG_PROTOTYPES
-Warn(char *fmt, ...)
+rb_warn(char *fmt, ...)
#else
-Warn(fmt, va_alist)
+rb_warn(fmt, va_alist)
char *fmt;
va_dcl
#endif
@@ -114,12 +111,12 @@ Warn(fmt, va_alist)
va_end(args);
}
-/* Warning() reports only in verbose mode */
+/* rb_warning() reports only in verbose mode */
void
#ifdef HAVE_STDARG_PROTOTYPES
-Warning(char *fmt, ...)
+rb_warning(char *fmt, ...)
#else
-Warning(fmt, va_alist)
+rb_warning(fmt, va_alist)
char *fmt;
va_dcl
#endif
@@ -127,7 +124,7 @@ Warning(fmt, va_alist)
char buf[BUFSIZ];
va_list args;
- if (!RTEST(verbose)) return;
+ if (!RTEST(rb_verbose)) return;
snprintf(buf, BUFSIZ, "warning: %s", fmt);
@@ -138,9 +135,9 @@ Warning(fmt, va_alist)
void
#ifdef HAVE_STDARG_PROTOTYPES
-Bug(char *fmt, ...)
+rb_bug(char *fmt, ...)
#else
-Bug(fmt, va_alist)
+rb_bug(fmt, va_alist)
char *fmt;
va_dcl
#endif
@@ -205,68 +202,68 @@ rb_check_type(x, t)
etype = "Fixnum";
}
else if (rb_special_const_p(x)) {
- etype = RSTRING(obj_as_string(x))->ptr;
+ etype = RSTRING(rb_obj_as_string(x))->ptr;
}
else {
etype = rb_class2name(CLASS_OF(x));
}
- TypeError("wrong argument type %s (expected %s)",
- etype, type->name);
+ rb_raise(rb_eTypeError, "wrong argument type %s (expected %s)",
+ etype, type->name);
}
type++;
}
- Bug("unknown type 0x%x", t);
+ rb_bug("unknown type 0x%x", t);
}
}
/* exception classes */
#include <errno.h>
-VALUE eException;
-VALUE eSystemExit, eInterrupt, eFatal;
-VALUE eStandardError;
-VALUE eRuntimeError;
-VALUE eSyntaxError;
-VALUE eTypeError;
-VALUE eArgError;
-VALUE eNameError;
-VALUE eIndexError;
-VALUE eLoadError;
-VALUE eSecurityError;
-VALUE eNotImpError;
-
-VALUE eSystemCallError;
-VALUE mErrno;
+VALUE rb_eException;
+VALUE rb_eSystemExit, rb_eInterrupt, rb_eFatal;
+VALUE rb_eStandardError;
+VALUE rb_eRuntimeError;
+VALUE rb_eSyntaxError;
+VALUE rb_eTypeError;
+VALUE rb_eArgError;
+VALUE rb_eNameError;
+VALUE rb_eIndexError;
+VALUE rb_eLoadError;
+VALUE rb_eSecurityError;
+VALUE rb_eNotImpError;
+
+VALUE rb_eSystemCallError;
+VALUE rb_mErrno;
VALUE
-exc_new(etype, ptr, len)
+rb_exc_new(etype, ptr, len)
VALUE etype;
char *ptr;
unsigned len;
{
- VALUE exc = obj_alloc(etype);
+ VALUE exc = rb_obj_alloc(etype);
- rb_iv_set(exc, "mesg", str_new(ptr, len));
+ rb_iv_set(exc, "mesg", rb_str_new(ptr, len));
return exc;
}
VALUE
-exc_new2(etype, s)
+rb_exc_new2(etype, s)
VALUE etype;
char *s;
{
- return exc_new(etype, s, strlen(s));
+ return rb_exc_new(etype, s, strlen(s));
}
VALUE
-exc_new3(etype, str)
+rb_exc_new3(etype, str)
VALUE etype, str;
{
char *s;
int len;
s = str2cstr(str, &len);
- return exc_new(etype, s, len);
+ return rb_exc_new(etype, s, len);
}
static VALUE
@@ -278,7 +275,7 @@ exc_initialize(argc, argv, exc)
VALUE mesg;
if (rb_scan_args(argc, argv, "01", &mesg) == 0) {
- mesg = str_new(0, 0);
+ mesg = rb_str_new(0, 0);
}
else {
STR2CSTR(mesg); /* ensure mesg can be converted to String */
@@ -289,7 +286,7 @@ exc_initialize(argc, argv, exc)
}
static VALUE
-exc_new_method(argc, argv, self)
+exc_new(argc, argv, self)
int argc;
VALUE *argv;
VALUE self;
@@ -301,8 +298,8 @@ exc_new_method(argc, argv, self)
while (FL_TEST(etype, FL_SINGLETON)) {
etype = RCLASS(etype)->super;
}
- exc = obj_alloc(etype);
- obj_call_init(exc);
+ exc = rb_obj_alloc(etype);
+ rb_obj_call_init(exc);
return exc;
}
@@ -321,17 +318,17 @@ exc_inspect(exc)
VALUE str, klass;
klass = CLASS_OF(exc);
- exc = obj_as_string(exc);
+ exc = rb_obj_as_string(exc);
if (RSTRING(exc)->len == 0) {
- return str_dup(rb_class_path(klass));
+ return rb_str_dup(rb_class_path(klass));
}
- str = str_new2("#<");
+ str = rb_str_new2("#<");
klass = rb_class_path(klass);
- str_concat(str, klass);
- str_cat(str, ":", 1);
- str_concat(str, exc);
- str_cat(str, ">", 1);
+ rb_str_concat(str, klass);
+ rb_str_cat(str, ":", 1);
+ rb_str_concat(str, exc);
+ rb_str_cat(str, ">", 1);
return str;
}
@@ -353,13 +350,13 @@ check_backtrace(bt)
if (!NIL_P(bt)) {
int t = TYPE(bt);
- if (t == T_STRING) return ary_new3(1, bt);
+ if (t == T_STRING) return rb_ary_new3(1, bt);
if (t != T_ARRAY) {
- TypeError(err);
+ rb_raise(rb_eTypeError, err);
}
for (i=0;i<RARRAY(bt)->len;i++) {
if (TYPE(RARRAY(bt)->ptr[i]) != T_STRING) {
- TypeError(err);
+ rb_raise(rb_eTypeError, err);
}
}
}
@@ -379,34 +376,35 @@ exception(argc, argv)
VALUE *argv;
{
VALUE v = Qnil;
- VALUE etype = eStandardError;
+ VALUE etype = rb_eStandardError;
int i;
ID id;
if (argc == 0) {
- ArgError("wrong # of arguments");
+ rb_raise(rb_eArgError, "wrong # of arguments");
}
- Warn("Exception() is now obsolete");
+ rb_warn("Exception() is now obsolete");
if (TYPE(argv[argc-1]) == T_CLASS) {
etype = argv[argc-1];
argc--;
- if (!rb_funcall(etype, '<', 1, eException)) {
- TypeError("exception should be subclass of Exception");
+ if (!rb_funcall(etype, '<', 1, rb_eException)) {
+ rb_raise(rb_eTypeError, "exception should be subclass of Exception");
}
}
for (i=0; i<argc; i++) { /* argument check */
id = rb_to_id(argv[i]);
if (!rb_id2name(id)) {
- ArgError("argument needs to be symbol or string");
+ rb_raise(rb_eArgError, "argument needs to be symbol or string");
}
if (!rb_is_const_id(id)) {
- ArgError("identifier `%s' needs to be constant", rb_id2name(id));
+ rb_raise(rb_eArgError, "identifier `%s' needs to be constant",
+ rb_id2name(id));
}
}
for (i=0; i<argc; i++) {
- v = rb_define_class_under(the_class,
+ v = rb_define_class_under(ruby_class,
rb_id2name(rb_to_id(argv[i])),
- eStandardError);
+ rb_eStandardError);
}
return v;
}
@@ -479,7 +477,7 @@ set_syserr(i, name)
VALUE *list;
int ix, offset;
#endif
- VALUE error = rb_define_class_under(mErrno, name, eSystemCallError);
+ VALUE error = rb_define_class_under(rb_mErrno, name, rb_eSystemCallError);
rb_define_const(error, "Errno", INT2FIX(i));
#ifdef __BEOS__
i -= B_GENERAL_ERROR_BASE;
@@ -534,144 +532,87 @@ static void init_syserr _((void));
void
Init_Exception()
{
- eException = rb_define_class("Exception", cObject);
- rb_define_method(eException, "new", exc_new_method, -1);
- rb_define_method(eException, "initialize", exc_initialize, -1);
- rb_define_method(eException, "to_s", exc_to_s, 0);
- rb_define_method(eException, "to_str", exc_to_s, 0);
- rb_define_method(eException, "message", exc_to_s, 0);
- rb_define_method(eException, "inspect", exc_inspect, 0);
- rb_define_method(eException, "backtrace", exc_backtrace, 0);
- rb_define_method(eException, "set_backtrace", exc_set_backtrace, 1);
-
- eSystemExit = rb_define_class("SystemExit", eException);
- eFatal = rb_define_class("fatal", eException);
- eInterrupt = rb_define_class("Interrupt", eException);
-
- eStandardError = rb_define_class("StandardError", eException);
- eSyntaxError = rb_define_class("SyntaxError", eStandardError);
- eTypeError = rb_define_class("TypeError", eStandardError);
- eArgError = rb_define_class("ArgumentError", eStandardError);
- eNameError = rb_define_class("NameError", eStandardError);
- eIndexError = rb_define_class("IndexError", eStandardError);
- eLoadError = rb_define_class("LoadError", eStandardError);
-
- eRuntimeError = rb_define_class("RuntimeError", eStandardError);
- eSecurityError = rb_define_class("SecurityError", eStandardError);
- eNotImpError = rb_define_class("NotImplementError", eException);
+ rb_eException = rb_define_class("Exception", rb_cObject);
+ rb_define_method(rb_eException, "new", exc_new, -1);
+ rb_define_method(rb_eException, "initialize", exc_initialize, -1);
+ rb_define_method(rb_eException, "to_s", exc_to_s, 0);
+ rb_define_method(rb_eException, "to_str", exc_to_s, 0);
+ rb_define_method(rb_eException, "message", exc_to_s, 0);
+ rb_define_method(rb_eException, "inspect", exc_inspect, 0);
+ rb_define_method(rb_eException, "backtrace", exc_backtrace, 0);
+ rb_define_method(rb_eException, "set_backtrace", exc_set_backtrace, 1);
+
+ rb_eSystemExit = rb_define_class("SystemExit", rb_eException);
+ rb_eFatal = rb_define_class("fatal", rb_eException);
+ rb_eInterrupt = rb_define_class("Interrupt", rb_eException);
+
+ rb_eStandardError = rb_define_class("StandardError", rb_eException);
+ rb_eSyntaxError = rb_define_class("SyntaxError", rb_eStandardError);
+ rb_eTypeError = rb_define_class("TypeError", rb_eStandardError);
+ rb_eArgError = rb_define_class("ArgumentError", rb_eStandardError);
+ rb_eNameError = rb_define_class("NameError", rb_eStandardError);
+ rb_eIndexError = rb_define_class("IndexError", rb_eStandardError);
+ rb_eLoadError = rb_define_class("LoadError", rb_eStandardError);
+
+ rb_eRuntimeError = rb_define_class("RuntimeError", rb_eStandardError);
+ rb_eSecurityError = rb_define_class("SecurityError", rb_eStandardError);
+ rb_eNotImpError = rb_define_class("NotImplementError", rb_eException);
init_syserr();
rb_define_global_function("Exception", exception, -1);
}
-#define RAISE_ERROR(klass,fmt) {\
- va_list args;\
- char buf[BUFSIZ];\
- va_init_list(args,fmt);\
- vsnprintf(buf, BUFSIZ, fmt, args);\
- va_end(args);\
- rb_raise(exc_new2(klass, buf));\
-}
-
void
#ifdef HAVE_STDARG_PROTOTYPES
-Raise(VALUE exc, char *fmt, ...)
+rb_raise(VALUE exc, char *fmt, ...)
#else
-Raise(exc, fmt, va_alist)
+rb_raise(exc, fmt, va_alist)
VALUE exc;
char *fmt;
va_dcl
#endif
{
- RAISE_ERROR(exc, fmt);
-}
-
-void
-#ifdef HAVE_STDARG_PROTOTYPES
-TypeError(char *fmt, ...)
-#else
-TypeError(fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
-{
- RAISE_ERROR(eTypeError, fmt);
-}
-
-void
-#ifdef HAVE_STDARG_PROTOTYPES
-ArgError(char *fmt, ...)
-#else
-ArgError(fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
-{
- RAISE_ERROR(eArgError, fmt);
-}
+ va_list args;
+ char buf[BUFSIZ];
-void
-#ifdef HAVE_STDARG_PROTOTYPES
-NameError(char *fmt, ...)
-#else
-NameError(fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
-{
- RAISE_ERROR(eNameError, fmt);
+ va_init_list(args,fmt);
+ vsnprintf(buf, BUFSIZ, fmt, args);
+ va_end(args);
+ rb_exc_raise(rb_exc_new2(exc, buf));
}
void
#ifdef HAVE_STDARG_PROTOTYPES
-IndexError(char *fmt, ...)
+rb_loaderror(char *fmt, ...)
#else
-IndexError(fmt, va_alist)
+rb_loaderror(fmt, va_alist)
char *fmt;
va_dcl
#endif
{
- RAISE_ERROR(eIndexError, fmt);
-}
+ va_list args;
+ char buf[BUFSIZ];
-void
-#ifdef HAVE_STDARG_PROTOTYPES
-Fail(char *fmt, ...)
-#else
-Fail(fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
-{
- RAISE_ERROR(eRuntimeError, fmt);
+ va_init_list(args, fmt);
+ vsnprintf(buf, BUFSIZ, fmt, args);
+ va_end(args);
+ rb_exc_raise(rb_exc_new2(rb_eLoadError, buf));
}
void
rb_notimplement()
{
- Raise(eNotImpError,
- "The %s() function is unimplemented on this machine",
- rb_id2name(the_frame->last_func));
-}
-
-void
-#ifdef HAVE_STDARG_PROTOTYPES
-LoadError(char *fmt, ...)
-#else
-LoadError(fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
-{
- RAISE_ERROR(eLoadError, fmt);
+ rb_raise(rb_eNotImpError,
+ "The %s() function is unimplemented on this machine",
+ rb_id2name(ruby_frame->last_func));
}
void
#ifdef HAVE_STDARG_PROTOTYPES
-Fatal(char *fmt, ...)
+rb_fatal(char *fmt, ...)
#else
-Fatal(fmt, va_alist)
+rb_fatal(fmt, va_alist)
char *fmt;
va_dcl
#endif
@@ -684,7 +625,7 @@ Fatal(fmt, va_alist)
va_end(args);
rb_in_eval = 0;
- rb_fatal(exc_new2(eFatal, buf));
+ rb_exc_fatal(rb_exc_new2(rb_eFatal, buf));
}
void
@@ -702,7 +643,7 @@ rb_sys_fail(mesg)
err = strerror(errno);
if (mesg) {
- buf = ALLOCA_N(char, strlen(err)+strlen(mesg)+1);
+ buf = ALLOCA_N(char, strlen(err)+strlen(mesg)+4);
sprintf(buf, "%s - %s", err, mesg);
}
else {
@@ -740,10 +681,10 @@ rb_sys_fail(mesg)
else {
ee = syserr_list[n];
}
- ee = exc_new2(ee, buf);
+ ee = rb_exc_new2(ee, buf);
#endif
rb_iv_set(ee, "errno", INT2FIX(n));
- rb_raise(ee);
+ rb_exc_raise(ee);
}
static void
@@ -752,10 +693,10 @@ init_syserr()
#ifdef __BEOS__
int i, ix, offset;
#endif
- eSystemCallError = rb_define_class("SystemCallError", eStandardError);
- rb_define_method(eSystemCallError, "errno", syserr_errno, 0);
+ rb_eSystemCallError = rb_define_class("SystemCallError", rb_eStandardError);
+ rb_define_method(rb_eSystemCallError, "errno", syserr_errno, 0);
- mErrno = rb_define_module("Errno");
+ rb_mErrno = rb_define_module("Errno");
#ifdef __BEOS__
for (i = 0; syserr_index[i].n != 0; i++) {
ix = syserr_index[i].ix;
@@ -1140,18 +1081,18 @@ static void
err_append(s)
char *s;
{
- extern VALUE errinfo;
+ extern VALUE rb_errinfo;
if (rb_in_eval) {
- if (NIL_P(errinfo)) {
- errinfo = exc_new2(eSyntaxError, s);
+ if (NIL_P(rb_errinfo)) {
+ rb_errinfo = rb_exc_new2(rb_eSyntaxError, s);
}
else {
- VALUE str = str_to_str(errinfo);
+ VALUE str = rb_str_to_str(rb_errinfo);
- str_cat(str, "\n", 1);
- str_cat(str, s, strlen(s));
- errinfo = exc_new3(eSyntaxError, str);
+ rb_str_cat(str, "\n", 1);
+ rb_str_cat(str, s, strlen(s));
+ rb_errinfo = rb_exc_new3(rb_eSyntaxError, str);
}
}
else {