mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
exception name on -d
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
94a1bece4a
commit
ddd90c76e1
6 changed files with 108 additions and 53 deletions
23
ChangeLog
23
ChangeLog
|
@ -1,4 +1,11 @@
|
||||||
Thu Apr 16 01:38:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
Thu Apr 16 16:52:01 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||||
|
|
||||||
|
* eval.c (rb_longjmp): trace event on exception in raising
|
||||||
|
context, just before raising exception.
|
||||||
|
|
||||||
|
* struct.c (struct_s_members): forgot to check singletons.
|
||||||
|
|
||||||
|
* struct.c (struct_aref): members can be accessed by names too.
|
||||||
|
|
||||||
* array.c (ary_flatten): new method.
|
* array.c (ary_flatten): new method.
|
||||||
|
|
||||||
|
@ -6,6 +13,8 @@ Thu Apr 16 01:38:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||||
|
|
||||||
* object.c (any_to_s): remove class name restriction.
|
* object.c (any_to_s): remove class name restriction.
|
||||||
|
|
||||||
|
Thu Apr 16 01:38:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||||
|
|
||||||
* file.c (thread_flock): do not block other threads.
|
* file.c (thread_flock): do not block other threads.
|
||||||
|
|
||||||
* eval.c (thread_trap_eval): signals are now delivered to the
|
* eval.c (thread_trap_eval): signals are now delivered to the
|
||||||
|
@ -14,6 +23,14 @@ Thu Apr 16 01:38:02 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||||
|
|
||||||
* string.c (str_new4): need not to duplicate frozen strings.
|
* string.c (str_new4): need not to duplicate frozen strings.
|
||||||
|
|
||||||
|
Wed Apr 15 12:24:32 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||||
|
|
||||||
|
* config.sub: x68 condition restored.
|
||||||
|
|
||||||
|
Wed Apr 15 08:33:47 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
|
||||||
|
|
||||||
|
* struct.c (struct_inspect): remove restriction for struct names.
|
||||||
|
|
||||||
Wed Apr 15 01:22:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
Wed Apr 15 01:22:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||||
|
|
||||||
* string.c (str_dup_frozen): do not duplicate frozen strings.
|
* string.c (str_dup_frozen): do not duplicate frozen strings.
|
||||||
|
@ -28,6 +45,10 @@ Wed Apr 15 01:22:56 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||||
|
|
||||||
* io.c (f_p): ditto.
|
* io.c (f_p): ditto.
|
||||||
|
|
||||||
|
Tue Apr 14 22:18:17 1998 Tadayoshi Funaba <tadf@kt.rim.or.jp>
|
||||||
|
|
||||||
|
* struct.c (struct_aref): should not subtract negative index.
|
||||||
|
|
||||||
Tue Apr 14 11:34:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
Tue Apr 14 11:34:50 1998 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||||
|
|
||||||
* experimental release 1.1b9_10.
|
* experimental release 1.1b9_10.
|
||||||
|
|
4
config.sub
vendored
4
config.sub
vendored
|
@ -662,6 +662,10 @@ case $basic_machine in
|
||||||
orion105)
|
orion105)
|
||||||
basic_machine=clipper-highlevel
|
basic_machine=clipper-highlevel
|
||||||
;;
|
;;
|
||||||
|
human)
|
||||||
|
basic_machine=m68k-sharp
|
||||||
|
os=-human
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|
16
eval.c
16
eval.c
|
@ -2672,13 +2672,12 @@ rb_longjmp(tag, mesg, at)
|
||||||
if (NIL_P(errinfo) && NIL_P(mesg)) {
|
if (NIL_P(errinfo) && NIL_P(mesg)) {
|
||||||
errinfo = exc_new(eRuntimeError, 0, 0);
|
errinfo = exc_new(eRuntimeError, 0, 0);
|
||||||
}
|
}
|
||||||
#if 1
|
|
||||||
if (debug) {
|
if (debug && !NIL_P(errinfo)) {
|
||||||
fprintf(stderr, "Exception `%s' occurred at %s:%d\n",
|
fprintf(stderr, "Exception `%s' at %s:%d\n",
|
||||||
rb_class2name(CLASS_OF(errinfo)),
|
rb_class2name(CLASS_OF(errinfo)),
|
||||||
sourcefile, sourceline);
|
sourcefile, sourceline);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if (!NIL_P(at)) {
|
if (!NIL_P(at)) {
|
||||||
errat = check_errat(at);
|
errat = check_errat(at);
|
||||||
}
|
}
|
||||||
|
@ -2695,13 +2694,12 @@ rb_longjmp(tag, mesg, at)
|
||||||
}
|
}
|
||||||
str_freeze(errinfo);
|
str_freeze(errinfo);
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
if (debug) {
|
|
||||||
error_print();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
trap_restore_mask();
|
trap_restore_mask();
|
||||||
|
if (trace_func && tag != TAG_FATAL) {
|
||||||
|
call_trace_func("raise", sourcefile, sourceline,
|
||||||
|
the_frame->self, the_frame->last_func);
|
||||||
|
}
|
||||||
JUMP_TAG(tag);
|
JUMP_TAG(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -541,10 +541,8 @@ static VALUE
|
||||||
tcp_s_open(class, host, serv)
|
tcp_s_open(class, host, serv)
|
||||||
VALUE class, host, serv;
|
VALUE class, host, serv;
|
||||||
{
|
{
|
||||||
VALUE s;
|
|
||||||
Check_SafeStr(host);
|
Check_SafeStr(host);
|
||||||
s = open_inet(class, host, serv, INET_CLIENT);
|
return open_inet(class, host, serv, INET_CLIENT);
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SOCKS
|
#ifdef SOCKS
|
||||||
|
@ -553,7 +551,6 @@ socks_s_open(class, host, serv)
|
||||||
VALUE class, host, serv;
|
VALUE class, host, serv;
|
||||||
{
|
{
|
||||||
static init = 0;
|
static init = 0;
|
||||||
VALUE s;
|
|
||||||
|
|
||||||
if (init == 0) {
|
if (init == 0) {
|
||||||
SOCKSinit("ruby");
|
SOCKSinit("ruby");
|
||||||
|
@ -561,8 +558,7 @@ socks_s_open(class, host, serv)
|
||||||
}
|
}
|
||||||
|
|
||||||
Check_SafeStr(host);
|
Check_SafeStr(host);
|
||||||
s = open_inet(class, host, serv, INET_SOCKS);
|
return open_inet(class, host, serv, INET_SOCKS);
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -572,13 +568,12 @@ tcp_svr_s_open(argc, argv, class)
|
||||||
VALUE *argv;
|
VALUE *argv;
|
||||||
VALUE class;
|
VALUE class;
|
||||||
{
|
{
|
||||||
VALUE arg1, arg2, s;
|
VALUE arg1, arg2;
|
||||||
|
|
||||||
if (rb_scan_args(argc, argv, "11", &arg1, &arg2) == 2)
|
if (rb_scan_args(argc, argv, "11", &arg1, &arg2) == 2)
|
||||||
s = open_inet(class, arg1, arg2, INET_SERVER);
|
return open_inet(class, arg1, arg2, INET_SERVER);
|
||||||
else
|
else
|
||||||
s = open_inet(class, 0, arg1, INET_SERVER);
|
return open_inet(class, 0, arg1, INET_SERVER);
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
@ -807,10 +802,7 @@ static VALUE
|
||||||
udp_s_open(class)
|
udp_s_open(class)
|
||||||
VALUE class;
|
VALUE class;
|
||||||
{
|
{
|
||||||
VALUE s;
|
return sock_new(class, socket(AF_INET, SOCK_DGRAM, 0));
|
||||||
|
|
||||||
s = sock_new(class, socket(AF_INET, SOCK_DGRAM, 0));
|
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -953,9 +945,7 @@ static VALUE
|
||||||
unix_s_sock_open(sock, path)
|
unix_s_sock_open(sock, path)
|
||||||
VALUE sock, path;
|
VALUE sock, path;
|
||||||
{
|
{
|
||||||
VALUE s;
|
return open_unix(sock, path, 0);
|
||||||
s = open_unix(sock, path, 0);
|
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
@ -979,9 +969,7 @@ static VALUE
|
||||||
unix_svr_s_open(sock, path)
|
unix_svr_s_open(sock, path)
|
||||||
VALUE sock, path;
|
VALUE sock, path;
|
||||||
{
|
{
|
||||||
VALUE s;
|
return open_unix(sock, path, 1);
|
||||||
s = open_unix(sock, path, 1);
|
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
## ftplib.rb
|
## ftplib.rb
|
||||||
|
|
||||||
# Author: Shugo Maeda <shugo@po.aianet.ne.jp>
|
# Author: Shugo Maeda <shugo@po.aianet.ne.jp>
|
||||||
# Version: $Revision: 1.6 $
|
# Version: $Revision: 1.7 $
|
||||||
|
|
||||||
## Code:
|
## Code:
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ class FTPProtoError < FTPError; end
|
||||||
|
|
||||||
class FTP
|
class FTP
|
||||||
|
|
||||||
RCS_ID = %q$Id: ftplib.rb,v 1.6 1998/03/01 08:49:57 shugo Exp shugo $
|
RCS_ID = %q$Id: ftplib.rb,v 1.7 1998/04/13 12:34:24 shugo Exp shugo $
|
||||||
|
|
||||||
include MonitorMixin
|
include MonitorMixin
|
||||||
|
|
||||||
|
@ -444,9 +444,18 @@ class FTP
|
||||||
def size(filename)
|
def size(filename)
|
||||||
voidcmd("TYPE I")
|
voidcmd("TYPE I")
|
||||||
resp = sendcmd("SIZE " + filename)
|
resp = sendcmd("SIZE " + filename)
|
||||||
if resp[0, 3] == "213"
|
if resp[0, 3] != "213"
|
||||||
return resp[3 .. -1].strip.to_i
|
raise FTPReplyError, resp
|
||||||
end
|
end
|
||||||
|
return resp[3..-1].strip
|
||||||
|
end
|
||||||
|
|
||||||
|
MDTM_REGEXP = /^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/
|
||||||
|
|
||||||
|
def mtime(filename)
|
||||||
|
str = mdtm(filename)
|
||||||
|
ary = str.scan(MDTM_REGEXP)[0].collect {|i| i.to_i}
|
||||||
|
return Time.gm(*ary)
|
||||||
end
|
end
|
||||||
|
|
||||||
def mkdir(dirname)
|
def mkdir(dirname)
|
||||||
|
|
71
struct.c
71
struct.c
|
@ -14,19 +14,29 @@ ID rb_frame_last_func();
|
||||||
VALUE cStruct;
|
VALUE cStruct;
|
||||||
extern VALUE mEnumerable;
|
extern VALUE mEnumerable;
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
class_of(obj)
|
||||||
|
VALUE obj;
|
||||||
|
{
|
||||||
|
obj = CLASS_OF(obj);
|
||||||
|
if (FL_TEST(obj, FL_SINGLETON))
|
||||||
|
return RCLASS(obj)->super;
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
struct_s_members(obj)
|
struct_s_members(obj)
|
||||||
VALUE obj;
|
VALUE obj;
|
||||||
{
|
{
|
||||||
struct RArray *member;
|
VALUE member, ary;
|
||||||
VALUE ary, *p, *pend;
|
VALUE *p, *pend;
|
||||||
|
|
||||||
member = RARRAY(rb_iv_get(obj, "__member__"));
|
member = rb_iv_get(obj, "__member__");
|
||||||
if (NIL_P(member)) {
|
if (NIL_P(member)) {
|
||||||
Fatal("non-initialized struct");
|
Bug("non-initialized struct");
|
||||||
}
|
}
|
||||||
ary = ary_new2(member->len);
|
ary = ary_new2(RARRAY(member)->len);
|
||||||
p = member->ptr; pend = p + member->len;
|
p = RARRAY(member)->ptr; pend = p + RARRAY(member)->len;
|
||||||
while (p < pend) {
|
while (p < pend) {
|
||||||
ary_push(ary, str_new2(rb_id2name(FIX2INT(*p))));
|
ary_push(ary, str_new2(rb_id2name(FIX2INT(*p))));
|
||||||
p++;
|
p++;
|
||||||
|
@ -39,7 +49,7 @@ static VALUE
|
||||||
struct_members(obj)
|
struct_members(obj)
|
||||||
VALUE obj;
|
VALUE obj;
|
||||||
{
|
{
|
||||||
return struct_s_members(CLASS_OF(obj));
|
return struct_s_members(class_of(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
|
@ -47,11 +57,10 @@ struct_getmember(obj, id)
|
||||||
VALUE obj;
|
VALUE obj;
|
||||||
ID id;
|
ID id;
|
||||||
{
|
{
|
||||||
VALUE nstr, member, slot;
|
VALUE member, slot;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
nstr = CLASS_OF(obj);
|
member = rb_iv_get(class_of(obj), "__member__");
|
||||||
member = rb_iv_get(nstr, "__member__");
|
|
||||||
if (NIL_P(member)) {
|
if (NIL_P(member)) {
|
||||||
Bug("non-initialized struct");
|
Bug("non-initialized struct");
|
||||||
}
|
}
|
||||||
|
@ -100,11 +109,10 @@ static VALUE
|
||||||
struct_set(obj, val)
|
struct_set(obj, val)
|
||||||
VALUE obj, val;
|
VALUE obj, val;
|
||||||
{
|
{
|
||||||
VALUE nstr, member, slot;
|
VALUE member, slot;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
nstr = CLASS_OF(obj);
|
member = rb_iv_get(class_of(obj), "__member__");
|
||||||
member = rb_iv_get(nstr, "__member__");
|
|
||||||
if (NIL_P(member)) {
|
if (NIL_P(member)) {
|
||||||
Fatal("non-initialized struct");
|
Fatal("non-initialized struct");
|
||||||
}
|
}
|
||||||
|
@ -280,7 +288,6 @@ struct_inspect(s)
|
||||||
{
|
{
|
||||||
char *name = rb_class2name(CLASS_OF(s));
|
char *name = rb_class2name(CLASS_OF(s));
|
||||||
VALUE str, member;
|
VALUE str, member;
|
||||||
char buf[256];
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
member = rb_iv_get(CLASS_OF(s), "__member__");
|
member = rb_iv_get(CLASS_OF(s), "__member__");
|
||||||
|
@ -288,8 +295,9 @@ struct_inspect(s)
|
||||||
Fatal("non-initialized struct");
|
Fatal("non-initialized struct");
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(buf, "#<%s ", name);
|
str = str_new2("#<");
|
||||||
str = str_new2(buf);
|
str_cat(str, name, strlen(name));
|
||||||
|
str_cat(str, " ", 1);
|
||||||
for (i=0; i<RSTRUCT(s)->len; i++) {
|
for (i=0; i<RSTRUCT(s)->len; i++) {
|
||||||
VALUE str2, slot;
|
VALUE str2, slot;
|
||||||
char *p;
|
char *p;
|
||||||
|
@ -331,14 +339,41 @@ struct_clone(s)
|
||||||
return (VALUE)st;
|
return (VALUE)st;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
struct_aref_id(s, id)
|
||||||
|
VALUE s;
|
||||||
|
ID id;
|
||||||
|
{
|
||||||
|
VALUE member;
|
||||||
|
int i, len;
|
||||||
|
VALUE *p;
|
||||||
|
|
||||||
|
member = rb_iv_get(CLASS_OF(s), "__member__");
|
||||||
|
if (NIL_P(member)) {
|
||||||
|
Bug("non-initialized struct");
|
||||||
|
}
|
||||||
|
|
||||||
|
len = RARRAY(member)->len;
|
||||||
|
for (i=0; i<len; i++) {
|
||||||
|
if (FIX2INT(RARRAY(member)->ptr[i]) == id) {
|
||||||
|
return RSTRUCT(s)->ptr[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NameError("no member '%s' in struct", rb_id2name(id));
|
||||||
|
}
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
struct_aref(s, idx)
|
struct_aref(s, idx)
|
||||||
VALUE s, idx;
|
VALUE s, idx;
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (TYPE(idx) == T_STRING) {
|
||||||
|
return struct_aref_id(s, rb_to_id(idx));
|
||||||
|
}
|
||||||
|
|
||||||
i = NUM2INT(idx);
|
i = NUM2INT(idx);
|
||||||
if (i < 0) i = RSTRUCT(s)->len - i;
|
if (i < 0) i = RSTRUCT(s)->len + i;
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
IndexError("offset %d too small for struct(size:%d)", i, RSTRUCT(s)->len);
|
IndexError("offset %d too small for struct(size:%d)", i, RSTRUCT(s)->len);
|
||||||
if (RSTRUCT(s)->len <= i)
|
if (RSTRUCT(s)->len <= i)
|
||||||
|
@ -353,7 +388,7 @@ struct_aset(s, idx, val)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
i = NUM2INT(idx);
|
i = NUM2INT(idx);
|
||||||
if (i < 0) i = RSTRUCT(s)->len - i;
|
if (i < 0) i = RSTRUCT(s)->len + i;
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
IndexError("offset %d too small for struct(size:%d)", i, RSTRUCT(s)->len);
|
IndexError("offset %d too small for struct(size:%d)", i, RSTRUCT(s)->len);
|
||||||
if (RSTRUCT(s)->len <= i)
|
if (RSTRUCT(s)->len <= i)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue