mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
*** empty log message ***
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
be1fea072c
commit
2e23ebc601
11 changed files with 102 additions and 29 deletions
27
ChangeLog
27
ChangeLog
|
@ -1,3 +1,30 @@
|
|||
Wed Oct 13 02:17:05 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||
|
||||
* dir.c (dir_s_glob): iterate over generated matching filenames if
|
||||
the block is given to the method.
|
||||
|
||||
* array.c (rb_ary_at): new methods; at, first, last.
|
||||
|
||||
* hash.c (rb_hash_fetch): raises exception unless the default
|
||||
value is supplied.
|
||||
|
||||
* hash.c (rb_hash_s_create): need not remove nil from value.
|
||||
|
||||
* hash.c (rb_hash_aset): setting value to nil does not remove key
|
||||
anymore.
|
||||
|
||||
Tue Oct 12 22:29:04 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||
|
||||
* io.c (io_read): length may be 0 or negative.
|
||||
|
||||
Tue Oct 12 13:26:27 1999 Jun-ichiro itojun Hagino <itojun@itojun.org>
|
||||
|
||||
* signal.c (posix_signal): RETSIGTYPE may be void.
|
||||
|
||||
Tue Oct 12 03:28:03 1999 EGUCHI Osamu <eguchi@shizuokanet.ne.jp>
|
||||
|
||||
* array.c (rb_ary_delete_at): allows negative position.
|
||||
|
||||
Mon Oct 11 17:42:25 1999 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
|
||||
|
||||
* parse.y (rb_intern): should generate distinct ID_ATTRSET symbols
|
||||
|
|
11
ToDo
11
ToDo
|
@ -1,5 +1,6 @@
|
|||
Language Spec.
|
||||
|
||||
- def foo; .. rescue .. end
|
||||
* compile time string concatenation, "hello" "world" => "helloworld"
|
||||
* ../... outside condition invokes operator method too.
|
||||
* %w(a\ b\ c abc) => ["a b c", "abc"]
|
||||
|
@ -15,7 +16,6 @@ Language Spec.
|
|||
|
||||
Hacking Interpreter
|
||||
|
||||
* hash[key] = nil may not remove entry; hashes may have nil as the value.
|
||||
* RUBYOPT environment variable
|
||||
* non-blocking open (e.g. named pipe) for thread
|
||||
* avoid blocking with gethostbyname/gethostbyaddr
|
||||
|
@ -27,7 +27,9 @@ Hacking Interpreter
|
|||
|
||||
Standard Libraries
|
||||
|
||||
* Array#{first,last,at}
|
||||
- hash[key] = nil may not remove entry; hashes may have nil as the value.
|
||||
- Array#{first,last,at}
|
||||
- Dir.glob(pat){|f|...}
|
||||
* Struct::new([name,]member,...) ??
|
||||
* String#scanf(?)
|
||||
* Object#fmt(?)
|
||||
|
@ -37,11 +39,10 @@ Standard Libraries
|
|||
* Stream or Port, abstract superclass of IO ?
|
||||
* String#{pred,prev}, String#downto
|
||||
* optional stepsize argument for succ()
|
||||
* Dir.glob(pat){|f|...}
|
||||
|
||||
Extension Libraries
|
||||
|
||||
* FastCGI ruby
|
||||
- FastCGI ruby
|
||||
* ptk.rb pTk wrapper that is compatible to tk.rb
|
||||
|
||||
Ruby Libraries
|
||||
|
@ -56,4 +57,4 @@ Tools
|
|||
|
||||
Misc
|
||||
|
||||
* publish Ruby books
|
||||
- publish Ruby books
|
||||
|
|
47
array.c
47
array.c
|
@ -416,6 +416,29 @@ rb_ary_aref(argc, argv, ary)
|
|||
return rb_ary_entry(ary, NUM2LONG(arg1));
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_ary_at(ary, pos)
|
||||
VALUE ary, pos;
|
||||
{
|
||||
return rb_ary_entry(ary, NUM2LONG(pos));
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_ary_first(ary)
|
||||
VALUE ary;
|
||||
{
|
||||
if (RARRAY(ary)->len == 0) return Qnil;
|
||||
return RARRAY(ary)->ptr[0];
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_ary_last(ary)
|
||||
VALUE ary;
|
||||
{
|
||||
if (RARRAY(ary)->len == 0) return Qnil;
|
||||
return RARRAY(ary)->ptr[RARRAY(ary)->len-1];
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_ary_index(ary, val)
|
||||
VALUE ary;
|
||||
|
@ -940,22 +963,19 @@ rb_ary_delete_at(ary, at)
|
|||
VALUE ary;
|
||||
VALUE at;
|
||||
{
|
||||
long i1, i2, pos;
|
||||
long i, pos = NUM2LONG(at), len = RARRAY(ary)->len;
|
||||
VALUE del = Qnil;
|
||||
|
||||
if (pos >= len) return Qnil;
|
||||
if (pos < 0) pos += len;
|
||||
if (pos < 0) return Qnil;
|
||||
|
||||
rb_ary_modify(ary);
|
||||
pos = NUM2LONG(at);
|
||||
for (i1 = i2 = 0; i1 < RARRAY(ary)->len; i1++) {
|
||||
if (i1 == pos) {
|
||||
del = RARRAY(ary)->ptr[i1];
|
||||
continue;
|
||||
}
|
||||
if (i1 != i2) {
|
||||
RARRAY(ary)->ptr[i2] = RARRAY(ary)->ptr[i1];
|
||||
}
|
||||
i2++;
|
||||
del = RARRAY(ary)->ptr[pos];
|
||||
for (i = pos + 1; i < len; i++, pos++) {
|
||||
RARRAY(ary)->ptr[pos] = RARRAY(ary)->ptr[i];
|
||||
}
|
||||
RARRAY(ary)->len = i2;
|
||||
RARRAY(ary)->len = pos;
|
||||
|
||||
return del;
|
||||
}
|
||||
|
@ -1445,6 +1465,9 @@ Init_Array()
|
|||
|
||||
rb_define_method(rb_cArray, "[]", rb_ary_aref, -1);
|
||||
rb_define_method(rb_cArray, "[]=", rb_ary_aset, -1);
|
||||
rb_define_method(rb_cArray, "at", rb_ary_at, 1);
|
||||
rb_define_method(rb_cArray, "first", rb_ary_first, 0);
|
||||
rb_define_method(rb_cArray, "last", rb_ary_last, 0);
|
||||
rb_define_method(rb_cArray, "concat", rb_ary_concat, 1);
|
||||
rb_define_method(rb_cArray, "<<", rb_ary_push, 1);
|
||||
rb_define_method(rb_cArray, "push", rb_ary_push_method, -1);
|
||||
|
|
8
dir.c
8
dir.c
|
@ -570,6 +570,14 @@ dir_s_glob(dir, str)
|
|||
}
|
||||
if (buf != buffer)
|
||||
free(buf);
|
||||
if (rb_iterator_p()) {
|
||||
long len = RARRAY(ary)->len;
|
||||
VALUE *ptr = RARRAY(ary)->ptr;
|
||||
|
||||
while (len--) {
|
||||
rb_yield(*ptr++);
|
||||
}
|
||||
}
|
||||
return ary;
|
||||
}
|
||||
|
||||
|
|
8
hash.c
8
hash.c
|
@ -264,7 +264,6 @@ rb_hash_s_create(argc, argv, klass)
|
|||
hash = rb_hash_new2(klass);
|
||||
|
||||
for (i=0; i<argc; i+=2) {
|
||||
if (NIL_P(argv[i+1])) continue;
|
||||
st_insert(RHASH(hash)->tbl, argv[i], argv[i+1]);
|
||||
}
|
||||
|
||||
|
@ -363,6 +362,9 @@ rb_hash_fetch(argc, argv, hash)
|
|||
}
|
||||
return rb_yield(argv[0]);
|
||||
}
|
||||
if (argc == 1) {
|
||||
rb_raise(rb_eIndexError, "key not found");
|
||||
}
|
||||
return if_none;
|
||||
}
|
||||
return val;
|
||||
|
@ -521,10 +523,6 @@ rb_hash_aset(hash, key, val)
|
|||
VALUE hash, key, val;
|
||||
{
|
||||
rb_hash_modify(hash);
|
||||
if (NIL_P(val)) {
|
||||
rb_hash_delete(hash, key);
|
||||
return Qnil;
|
||||
}
|
||||
if (TYPE(key) != T_STRING || st_lookup(RHASH(hash)->tbl, key, 0)) {
|
||||
st_insert(RHASH(hash)->tbl, key, val);
|
||||
}
|
||||
|
|
4
io.c
4
io.c
|
@ -482,11 +482,15 @@ io_read(argc, argv, io)
|
|||
}
|
||||
|
||||
len = NUM2INT(length);
|
||||
if (len < 0) {
|
||||
rb_raise(rb_eArgError, "negative length %d given", len);
|
||||
}
|
||||
GetOpenFile(io, fptr);
|
||||
rb_io_check_readable(fptr);
|
||||
|
||||
if (feof(fptr->f)) return Qnil;
|
||||
str = rb_str_new(0, len);
|
||||
if (len == 0) return str;
|
||||
|
||||
READ_CHECK(fptr->f);
|
||||
n = io_fread(RSTRING(str)->ptr, len, fptr->f);
|
||||
|
|
10
parse.y
10
parse.y
|
@ -1182,8 +1182,18 @@ primary : literal
|
|||
}
|
||||
f_arglist
|
||||
compstmt
|
||||
rescue
|
||||
opt_else
|
||||
ensure
|
||||
kEND
|
||||
{
|
||||
if ($6) $5 = NEW_RESCUE($5, $6, $7);
|
||||
else if ($7) {
|
||||
rb_warn("else without rescue is useless");
|
||||
$5 = block_append($5, $7);
|
||||
}
|
||||
if ($8) $5 = NEW_ENSURE($5, $8);
|
||||
|
||||
/* NOEX_PRIVATE for toplevel */
|
||||
$$ = NEW_DEFN($2, $4, $5, class_nest?0:1);
|
||||
fixpos($$, $4);
|
||||
|
|
|
@ -9,6 +9,8 @@ if File.exist? CONFIG['LIBRUBY_SO']
|
|||
dldpath = "SHLIB_PATH"
|
||||
when /-aix/
|
||||
dldpath = "LIBPATH"
|
||||
when /-beos/
|
||||
dldpath = "LIBRARY_PATH"
|
||||
else
|
||||
dldpath = "LD_LIBRARY_PATH"
|
||||
end
|
||||
|
|
2
signal.c
2
signal.c
|
@ -298,7 +298,7 @@ posix_signal(signum, handler)
|
|||
sigact.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */
|
||||
#endif
|
||||
#ifdef SA_NOCLDWAIT
|
||||
if (signum == SIGCHLD && handler == (RETSIGTYPE)SIG_IGN)
|
||||
if (signum == SIGCHLD && handler == SIG_IGN)
|
||||
sigact.sa_flags |= SA_NOCLDWAIT;
|
||||
#endif
|
||||
sigaction(signum, &sigact, 0);
|
||||
|
|
4
st.c
4
st.c
|
@ -79,8 +79,8 @@ static long primes[] = {
|
|||
32 + 5,
|
||||
64 + 3,
|
||||
128 + 3,
|
||||
256 + 29,
|
||||
512 + 17,
|
||||
256 + 27,
|
||||
512 + 9,
|
||||
1024 + 9,
|
||||
2048 + 5,
|
||||
4096 + 83,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#define RUBY_VERSION "1.4.2"
|
||||
#define RUBY_RELEASE_DATE "1999-09-18"
|
||||
#define RUBY_VERSION_CODE 142
|
||||
#define RUBY_RELEASE_CODE 19990918
|
||||
#define RUBY_VERSION "1.5.0"
|
||||
#define RUBY_RELEASE_DATE "1999-10-12"
|
||||
#define RUBY_VERSION_CODE 150
|
||||
#define RUBY_RELEASE_CODE 19991012
|
||||
|
|
Loading…
Reference in a new issue