summaryrefslogtreecommitdiff
path: root/spec/ruby/core/array/one_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/array/one_spec.rb')
-rw-r--r--spec/ruby/core/array/one_spec.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/spec/ruby/core/array/one_spec.rb b/spec/ruby/core/array/one_spec.rb
new file mode 100644
index 0000000000..0c61907881
--- /dev/null
+++ b/spec/ruby/core/array/one_spec.rb
@@ -0,0 +1,13 @@
+require_relative '../../spec_helper'
+require_relative 'shared/iterable_and_tolerating_size_increasing'
+
+describe "Array#one?" do
+ @value_to_return = -> _ { false }
+ it_behaves_like :array_iterable_and_tolerating_size_increasing, :one?
+
+ it "ignores the block if there is an argument" do
+ -> {
+ ['bar', 'foobar'].one?(/foo/) { false }.should == true
+ }.should complain(/given block not used/)
+ end
+end
able summary='file diffstat' width='100%'> -rw-r--r--README.EXT.ja46
-rw-r--r--README.ja19
-rw-r--r--ToDo14
-rw-r--r--array.c1516
-rw-r--r--ascii.c67
-rw-r--r--bcc32/Makefile.sub85
-rw-r--r--bcc32/README.bcc3225
-rwxr-xr-x[-rw-r--r--]bcc32/configure.bat8
-rw-r--r--bcc32/mkexports.rb39
-rw-r--r--bcc32/setup.mak16
-rw-r--r--bignum.c445
-rw-r--r--bin/irb4
-rw-r--r--bin/rdoc2
-rw-r--r--class.c287
-rw-r--r--common.mk266
-rw-r--r--compar.c46
-rw-r--r--config.sub6
-rw-r--r--configure.in278
-rw-r--r--cygwin/GNUmakefile.in6
-rw-r--r--defines.h34
-rw-r--r--dir.c1511
-rw-r--r--distruby.rb59
-rwxr-xr-x[-rw-r--r--]djgpp/configure.bat0
-rw-r--r--dln.c206
-rw-r--r--dln.h10
-rw-r--r--dmyext.c2
-rw-r--r--doc/forwardable.rd4
-rw-r--r--doc/forwardable.rd.ja4
-rw-r--r--doc/irb/irb-tools.rd.ja4
-rw-r--r--doc/irb/irb.rd4
-rw-r--r--doc/irb/irb.rd.ja4
-rw-r--r--doc/shell.rd4
-rw-r--r--doc/shell.rd.ja4
-rw-r--r--enum.c626
-rw-r--r--enumerator.c364
-rw-r--r--env.h58
-rw-r--r--error.c368
-rw-r--r--euc_jp.c228
-rw-r--r--eval.c5717
-rw-r--r--ext/.document6
-rw-r--r--ext/Setup5
-rw-r--r--ext/Setup.atheos4
-rw-r--r--ext/Setup.dj4
-rw-r--r--ext/Setup.emx4
-rw-r--r--ext/Setup.nt4
-rw-r--r--ext/Setup.x684
-rw-r--r--ext/Win32API/Win32API.c28
-rw-r--r--ext/bigdecimal/.cvsignore1
-rw-r--r--ext/bigdecimal/bigdecimal.c38
-rw-r--r--ext/bigdecimal/bigdecimal.h12
-rw-r--r--ext/bigdecimal/bigdecimal_en.html9
-rw-r--r--ext/bigdecimal/bigdecimal_ja.html7
-rw-r--r--ext/curses/.cvsignore1
-rw-r--r--ext/curses/curses.c223
-rw-r--r--ext/dbm/.cvsignore1
-rw-r--r--ext/dbm/dbm.c262
-rw-r--r--ext/dbm/extconf.rb60
-rw-r--r--ext/digest/.cvsignore1
-rw-r--r--ext/digest/bubblebabble/bubblebabble.c142
-rw-r--r--ext/digest/bubblebabble/depend3
-rw-r--r--ext/digest/bubblebabble/extconf.rb6
-rw-r--r--ext/digest/defs.h10
-rw-r--r--ext/digest/digest.c693
-rw-r--r--ext/digest/digest.h30
-rw-r--r--ext/digest/digest.txt113
-rw-r--r--ext/digest/digest.txt.ja111
-rw-r--r--ext/digest/extconf.rb6
-rw-r--r--ext/digest/lib/digest.rb46
-rw-r--r--ext/digest/lib/digest/hmac.rb269
-rw-r--r--ext/digest/lib/md5.rb14
-rw-r--r--ext/digest/lib/sha1.rb14
-rw-r--r--ext/digest/md5/.cvsignore1
-rw-r--r--ext/digest/md5/extconf.rb4
-rw-r--r--ext/digest/md5/md5.c28
-rw-r--r--ext/digest/md5/md5.h11
-rw-r--r--ext/digest/md5/md5init.c25
-rw-r--r--ext/digest/md5/md5ossl.c25
-rw-r--r--ext/digest/md5/md5ossl.h7
-rw-r--r--ext/digest/rmd160/.cvsignore1
-rw-r--r--ext/digest/rmd160/depend2
-rw-r--r--ext/digest/rmd160/extconf.rb6
-rw-r--r--ext/digest/rmd160/rmd160.c11
-rw-r--r--ext/digest/rmd160/rmd160.h18
-rw-r--r--ext/digest/rmd160/rmd160hl.c96
-rw-r--r--ext/digest/rmd160/rmd160init.c28
-rw-r--r--ext/digest/rmd160/rmd160ossl.c43
-rw-r--r--ext/digest/rmd160/rmd160ossl.h6
-rw-r--r--ext/digest/sha1/.cvsignore1
-rw-r--r--ext/digest/sha1/depend2
-rw-r--r--ext/digest/sha1/extconf.rb6
-rw-r--r--ext/digest/sha1/sha1.c24
-rw-r--r--ext/digest/sha1/sha1.h19
-rw-r--r--ext/digest/sha1/sha1hl.c102
-rw-r--r--ext/digest/sha1/sha1init.c32
-rw-r--r--ext/digest/sha1/sha1ossl.c43
-rw-r--r--ext/digest/sha1/sha1ossl.h9
-rw-r--r--ext/digest/sha2/.cvsignore1
-rw-r--r--ext/digest/sha2/depend2
-rw-r--r--ext/digest/sha2/extconf.rb5
-rw-r--r--ext/digest/sha2/lib/digest/sha2.rb73
-rw-r--r--ext/digest/sha2/sha2.c26
-rw-r--r--ext/digest/sha2/sha2.h38
-rw-r--r--ext/digest/sha2/sha2hl.c252
-rw-r--r--ext/digest/sha2/sha2init.c25
-rw-r--r--ext/digest/test.sh7
-rw-r--r--ext/dl/.cvsignore2
-rw-r--r--ext/dl/cfunc.c509
-rw-r--r--ext/dl/cptr.c483
-rw-r--r--ext/dl/depend49
-rw-r--r--ext/dl/dl.c779
-rw-r--r--ext/dl/dl.def59
-rw-r--r--ext/dl/dl.h361
-rw-r--r--ext/dl/doc/dl.txt266
-rw-r--r--ext/dl/extconf.rb197
-rw-r--r--ext/dl/h2rb500
-rw-r--r--ext/dl/handle.c180
-rw-r--r--ext/dl/install.rb49
-rw-r--r--ext/dl/lib/dl/callback.rb69
-rw-r--r--ext/dl/lib/dl/cparser.rb109
-rw-r--r--ext/dl/lib/dl/func.rb141
-rw-r--r--ext/dl/lib/dl/import.rb416
-rw-r--r--ext/dl/lib/dl/pack.rb173
-rw-r--r--ext/dl/lib/dl/stack.rb140
-rw-r--r--ext/dl/lib/dl/struct.rb346
-rw-r--r--ext/dl/lib/dl/types.rb273
-rw-r--r--ext/dl/lib/dl/value.rb108
-rw-r--r--ext/dl/lib/dl/win32.rb25
-rw-r--r--ext/dl/mkcall.rb62
-rw-r--r--ext/dl/mkcallback.rb227
-rw-r--r--ext/dl/mkcbtable.rb18
-rw-r--r--ext/dl/ptr.c1067
-rw-r--r--ext/dl/sample/c++sample.C35
-rw-r--r--ext/dl/sample/c++sample.rb60
-rw-r--r--ext/dl/sample/drives.rb70
-rw-r--r--ext/dl/sample/getch.rb5
-rw-r--r--ext/dl/sample/libc.rb69
-rw-r--r--ext/dl/sample/msgbox.rb19
-rw-r--r--ext/dl/sample/msgbox2.rb18
-rw-r--r--ext/dl/sample/stream.rb87
-rw-r--r--ext/dl/sym.c992
-rw-r--r--ext/dl/test/libtest.def28
-rw-r--r--ext/dl/test/test.c247
-rw-r--r--ext/dl/test/test.rb306
-rw-r--r--ext/dl/test/test_all.rb11
-rw-r--r--ext/dl/test/test_base.rb52
-rw-r--r--ext/dl/test/test_dl2.rb111
-rw-r--r--ext/dl/test/test_func.rb62
-rw-r--r--ext/dl/test/test_import.rb154
-rw-r--r--ext/dl/test/test_win32.rb53
-rw-r--r--ext/dl/type.rb115
-rw-r--r--ext/enumerator/.cvsignore (renamed from ext/digest/bubblebabble/.cvsignore)2
-rw-r--r--ext/enumerator/enumerator.c298
-rw-r--r--ext/enumerator/enumerator.txt102
-rw-r--r--ext/enumerator/extconf.rb2
-rw-r--r--ext/etc/.cvsignore1
-rw-r--r--ext/etc/etc.c79
-rw-r--r--ext/etc/extconf.rb4
-rw-r--r--ext/extmk.rb102
-rw-r--r--ext/fcntl/.cvsignore1
-rw-r--r--ext/fcntl/fcntl.c2
-rw-r--r--ext/gdbm/.cvsignore1
-rw-r--r--ext/gdbm/gdbm.c810
-rw-r--r--ext/iconv/.cvsignore1
-rw-r--r--ext/iconv/charset_alias.rb4
-rw-r--r--ext/iconv/extconf.rb1
-rw-r--r--ext/iconv/iconv.c602
-rw-r--r--ext/iconv/mkwrapper.rb53
-rw-r--r--ext/io/wait/.cvsignore1
-rw-r--r--ext/io/wait/extconf.rb2
-rw-r--r--ext/io/wait/wait.c101
-rw-r--r--ext/nkf/.cvsignore1
-rw-r--r--ext/nkf/lib/kconv.rb39
-rw-r--r--ext/nkf/nkf-utf8/nkf.c794
-rw-r--r--ext/nkf/nkf.c78
-rw-r--r--ext/openssl/extconf.rb4
-rw-r--r--ext/openssl/lib/net/ftptls.rb4
-rw-r--r--ext/openssl/lib/net/telnets.rb4
-rw-r--r--ext/openssl/lib/openssl.rb4
-rw-r--r--ext/openssl/lib/openssl/bn.rb4
-rw-r--r--ext/openssl/lib/openssl/buffering.rb12
-rw-r--r--ext/openssl/lib/openssl/cipher.rb4
-rw-r--r--ext/openssl/lib/openssl/digest.rb4
-rw-r--r--ext/openssl/lib/openssl/ssl.rb4
-rw-r--r--ext/openssl/lib/openssl/x509.rb4
-rw-r--r--ext/openssl/openssl_missing.c2
-rw-r--r--ext/openssl/openssl_missing.h2
-rw-r--r--ext/openssl/ossl.c10
-rw-r--r--ext/openssl/ossl.h31
-rw-r--r--ext/openssl/ossl_asn1.c54
-rw-r--r--ext/openssl/ossl_asn1.h2
-rw-r--r--ext/openssl/ossl_bio.c23
-rw-r--r--ext/openssl/ossl_bio.h2
-rw-r--r--ext/openssl/ossl_bn.c14
-rw-r--r--ext/openssl/ossl_bn.h2
-rw-r--r--ext/openssl/ossl_cipher.c62
-rw-r--r--ext/openssl/ossl_cipher.h2
-rw-r--r--ext/openssl/ossl_config.c14
-rw-r--r--ext/openssl/ossl_config.h2
-rw-r--r--ext/openssl/ossl_digest.c8
-rw-r--r--ext/openssl/ossl_digest.h2
-rw-r--r--ext/openssl/ossl_engine.c12
-rw-r--r--ext/openssl/ossl_engine.h2
-rw-r--r--ext/openssl/ossl_hmac.c14
-rw-r--r--ext/openssl/ossl_hmac.h2
-rw-r--r--ext/openssl/ossl_ns_spki.c15
-rw-r--r--ext/openssl/ossl_ns_spki.h2
-rw-r--r--ext/openssl/ossl_ocsp.c26
-rw-r--r--ext/openssl/ossl_ocsp.h2
-rw-r--r--ext/openssl/ossl_pkcs12.c4
-rw-r--r--ext/openssl/ossl_pkcs12.h2
-rw-r--r--ext/openssl/ossl_pkcs5.h6
-rw-r--r--ext/openssl/ossl_pkcs7.c12
-rw-r--r--ext/openssl/ossl_pkcs7.h2
-rw-r--r--ext/openssl/ossl_pkey.c19
-rw-r--r--ext/openssl/ossl_pkey.h2
-rw-r--r--ext/openssl/ossl_pkey_dh.c13
-rw-r--r--ext/openssl/ossl_pkey_dsa.c13
-rw-r--r--ext/openssl/ossl_pkey_rsa.c32
-rw-r--r--ext/openssl/ossl_rand.c16
-rw-r--r--ext/openssl/ossl_rand.h2
-rw-r--r--ext/openssl/ossl_ssl.c57
-rw-r--r--ext/openssl/ossl_ssl.h2
-rw-r--r--ext/openssl/ossl_version.h2
-rw-r--r--ext/openssl/ossl_x509.c2
-rw-r--r--ext/openssl/ossl_x509.h2
-rw-r--r--ext/openssl/ossl_x509attr.c14
-rw-r--r--ext/openssl/ossl_x509cert.c14
-rw-r--r--ext/openssl/ossl_x509crl.c18
-rw-r--r--ext/openssl/ossl_x509ext.c26
-rw-r--r--ext/openssl/ossl_x509name.c20
-rw-r--r--ext/openssl/ossl_x509req.c12
-rw-r--r--ext/openssl/ossl_x509revoked.c10
-rw-r--r--ext/openssl/ossl_x509store.c6
-rw-r--r--ext/openssl/ruby_missing.h2
-rw-r--r--ext/pty/.cvsignore1
-rw-r--r--ext/pty/pty.c75
-rw-r--r--ext/racc/cparse/.cvsignore1
-rw-r--r--ext/racc/cparse/README10
-rw-r--r--ext/racc/cparse/cparse.c64
-rw-r--r--ext/racc/cparse/extconf.rb2
-rw-r--r--ext/readline/.cvsignore1
-rw-r--r--ext/readline/readline.c227
-rw-r--r--ext/ripper/.cvsignore8
-rw-r--r--ext/ripper/README30
-rw-r--r--ext/ripper/depend32
-rw-r--r--ext/ripper/eventids2.c277
-rw-r--r--ext/ripper/extconf.rb20
-rw-r--r--ext/ripper/lib/ripper.rb4
-rw-r--r--ext/ripper/lib/ripper/core.rb70
-rw-r--r--ext/ripper/lib/ripper/filter.rb70
-rw-r--r--ext/ripper/lib/ripper/lexer.rb179
-rw-r--r--ext/ripper/lib/ripper/sexp.rb100
-rwxr-xr-xext/ripper/tools/generate-param-macros.rb14
-rwxr-xr-xext/ripper/tools/generate.rb152
-rwxr-xr-xext/ripper/tools/preproc.rb91
-rwxr-xr-xext/ripper/tools/strip.rb12
-rw-r--r--ext/sdbm/.cvsignore1
-rw-r--r--ext/sdbm/_sdbm.c103
-rw-r--r--ext/sdbm/init.c291
-rw-r--r--ext/socket/.cvsignore2
-rw-r--r--ext/socket/depend6
-rw-r--r--ext/socket/extconf.rb35
-rw-r--r--ext/socket/getaddrinfo.c43
-rw-r--r--ext/socket/getnameinfo.c15
-rw-r--r--ext/socket/mkconstants.rb262
-rw-r--r--ext/socket/socket.c1794
-rw-r--r--ext/socket/sockport.h4
-rw-r--r--ext/stringio/.cvsignore1
-rw-r--r--ext/stringio/README4
-rw-r--r--ext/stringio/stringio.c279
-rw-r--r--ext/strscan/.cvsignore1
-rw-r--r--ext/strscan/depend4
-rw-r--r--ext/strscan/strscan.c100
-rw-r--r--ext/syck/.cvsignore1
-rw-r--r--ext/syck/bytecode.c4
-rw-r--r--ext/syck/emitter.c20
-rw-r--r--ext/syck/handler.c6
-rw-r--r--ext/syck/implicit.c6
-rw-r--r--ext/syck/node.c8
-rw-r--r--ext/syck/rubyext.c280
-rw-r--r--ext/syck/syck.c6
-rw-r--r--ext/syck/syck.h22
-rw-r--r--ext/syck/token.c4
-rw-r--r--ext/syck/yaml2byte.c6
-rw-r--r--ext/syslog/.cvsignore1
-rw-r--r--ext/syslog/extconf.rb2
-rw-r--r--ext/syslog/syslog.c6
-rw-r--r--ext/syslog/syslog.txt2
-rw-r--r--ext/syslog/test.rb2
-rw-r--r--ext/tk/.cvsignore2
-rw-r--r--ext/tk/ChangeLog.tkextlib40
-rw-r--r--ext/tk/README.1st13
-rw-r--r--ext/tk/lib/tk.rb5
-rw-r--r--ext/tk/lib/tk/after.rb2
-rw-r--r--ext/tk/lib/tk/canvas.rb2
-rw-r--r--ext/tk/lib/tk/entry.rb2
-rw-r--r--ext/tk/lib/tk/font.rb10
-rw-r--r--ext/tk/lib/tk/itemconfig.rb15
-rw-r--r--ext/tk/lib/tk/scrollbox.rb2
-rw-r--r--ext/tk/lib/tk/spinbox.rb2
-rw-r--r--ext/tk/lib/tk/text.rb2
-rw-r--r--ext/tk/lib/tk/timer.rb2
-rw-r--r--ext/tk/lib/tkclass.rb2
-rw-r--r--ext/tk/lib/tkextlib/SUPPORT_STATUS42
-rw-r--r--ext/tk/lib/tkextlib/blt.rb4
-rw-r--r--ext/tk/lib/tkextlib/blt/container.rb20
-rw-r--r--ext/tk/lib/tkextlib/blt/table.rb102
-rw-r--r--ext/tk/lib/tkextlib/tile.rb5
-rw-r--r--ext/tk/lib/tkextlib/tile/sizegrip.rb25
-rw-r--r--ext/tk/lib/tkextlib/tile/style.rb4
-rw-r--r--ext/tk/lib/tkextlib/tile/tcombobox.rb6
-rw-r--r--ext/tk/lib/tkextlib/tile/tnotebook.rb10
-rw-r--r--ext/tk/lib/tkextlib/tile/treeview.rb1117
-rw-r--r--ext/tk/lib/tkextlib/version.rb6
-rw-r--r--ext/tk/sample/editable_listbox.rb69
-rw-r--r--ext/tk/sample/irbtkw.rbw119
-rw-r--r--ext/tk/sample/tcltklib/sample2.rb2
-rw-r--r--ext/tk/sample/tkextlib/tile/repeater.tcl2
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/keramik.tcl2
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/keramik/pkgIndex.tcl2
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/kroc/pkgIndex.tcl2
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/pkgIndex.tcl2
-rw-r--r--ext/tk/sample/tkextlib/tile/themes/plastik/plastik.tcl2
-rw-r--r--ext/tk/sample/tkextlib/tile/toolbutton.tcl2
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page3/index.html2
-rw-r--r--ext/tk/sample/tktextio.rb547
-rw-r--r--ext/tk/stubs.c54
-rw-r--r--ext/tk/tcltklib.c255
-rw-r--r--ext/tk/tkutil/tkutil.c233
-rw-r--r--ext/win32ole/extconf.rb5
-rw-r--r--ext/win32ole/sample/excel2.rb10
-rw-r--r--ext/win32ole/sample/olegen.rb4
-rw-r--r--ext/win32ole/tests/testNIL2VTEMPTY.rb28
-rw-r--r--ext/win32ole/tests/testOLEEVENT.rb91
-rw-r--r--ext/win32ole/tests/testOLEMETHOD.rb92
-rw-r--r--ext/win32ole/tests/testOLEPARAM.rb65
-rw-r--r--ext/win32ole/tests/testOLETYPE.rb96
-rw-r--r--ext/win32ole/tests/testOLEVARIABLE.rb49
-rw-r--r--ext/win32ole/tests/testVARIANT.rb32
-rw-r--r--ext/win32ole/tests/testWIN32OLE.rb55
-rw-r--r--ext/win32ole/tests/test_ole_methods.rb (renamed from test/win32ole/test_ole_methods.rb)0
-rw-r--r--ext/win32ole/tests/test_propertyputref.rb19
-rw-r--r--ext/win32ole/tests/test_word.rb (renamed from test/win32ole/test_word.rb)0
-rw-r--r--ext/win32ole/tests/testall.rb13
-rw-r--r--ext/win32ole/win32ole.c2303
-rw-r--r--ext/zlib/.cvsignore1
-rw-r--r--ext/zlib/doc/zlib.rd2
-rw-r--r--ext/zlib/extconf.rb2
-rw-r--r--ext/zlib/zlib.c800
-rw-r--r--file.c1027
-rw-r--r--gc.c560
-rw-r--r--hash.c833
-rw-r--r--ia64.s33
-rw-r--r--inits.c74
-rw-r--r--instruby.rb297
-rw-r--r--intern.h954
-rw-r--r--io.c3292
-rw-r--r--keywords87
-rw-r--r--lex.c227
-rw-r--r--lib/.document1
-rw-r--r--lib/abbrev.rb2
-rw-r--r--lib/base64.rb15
-rw-r--r--lib/benchmark.rb2
-rw-r--r--lib/cgi-lib.rb272
-rw-r--r--lib/cgi.rb130
-rw-r--r--lib/cgi/.document3
-rw-r--r--lib/cgi/session.rb43
-rw-r--r--lib/cgi/session/pstore.rb2
-rw-r--r--lib/complex.rb17
-rw-r--r--lib/csv.rb26
-rw-r--r--lib/date.rb576
-rw-r--r--lib/date/format.rb1483
-rw-r--r--lib/delegate.rb200
-rw-r--r--lib/drb/drb.rb14
-rw-r--r--lib/drb/extservm.rb7
-rw-r--r--lib/drb/invokemethod.rb2
-rw-r--r--lib/drb/observer.rb21
-rw-r--r--lib/drb/ssl.rb1
-rw-r--r--lib/e2mmap.rb2
-rw-r--r--lib/erb.rb8
-rw-r--r--lib/fileutils.rb156
-rw-r--r--lib/find.rb4
-rw-r--r--lib/forwardable.rb138
-rw-r--r--lib/generator.rb93
-rw-r--r--lib/getoptlong.rb23
-rw-r--r--lib/getopts.rb8
-rw-r--r--lib/ipaddr.rb4
-rw-r--r--lib/irb.rb6
-rw-r--r--lib/irb/cmd/chws.rb4
-rw-r--r--lib/irb/cmd/fork.rb6
-rw-r--r--lib/irb/cmd/help.rb4
-rw-r--r--lib/irb/cmd/load.rb4
-rw-r--r--lib/irb/cmd/nop.rb6
-rw-r--r--lib/irb/cmd/pushws.rb4
-rw-r--r--lib/irb/cmd/subirb.rb4
-rw-r--r--lib/irb/completion.rb6
-rw-r--r--lib/irb/context.rb4
-rw-r--r--lib/irb/ext/change-ws.rb4
-rw-r--r--lib/irb/ext/history.rb6
-rw-r--r--lib/irb/ext/loader.rb6
-rw-r--r--lib/irb/ext/math-mode.rb4
-rw-r--r--lib/irb/ext/multi-irb.rb6
-rw-r--r--lib/irb/ext/save-history.rb6
-rw-r--r--lib/irb/ext/tracer.rb4
-rw-r--r--lib/irb/ext/use-loader.rb4
-rw-r--r--lib/irb/ext/workspaces.rb4
-rw-r--r--lib/irb/extend-command.rb4
-rw-r--r--lib/irb/frame.rb4
-rw-r--r--lib/irb/help.rb4
-rw-r--r--lib/irb/init.rb10
-rw-r--r--lib/irb/input-method.rb10
-rw-r--r--lib/irb/lc/error.rb4
-rw-r--r--lib/irb/lc/help-message4
-rw-r--r--lib/irb/lc/ja/error.rb4
-rw-r--r--lib/irb/lc/ja/help-message4
-rw-r--r--lib/irb/locale.rb6
-rw-r--r--lib/irb/notifier.rb4
-rw-r--r--lib/irb/output-method.rb6
-rw-r--r--lib/irb/ruby-lex.rb8
-rw-r--r--lib/irb/ruby-token.rb10
-rw-r--r--lib/irb/slex.rb8
-rw-r--r--lib/irb/version.rb4
-rw-r--r--lib/irb/workspace.rb4
-rw-r--r--lib/irb/ws-for-case-2.rb4
-rw-r--r--lib/irb/xmp.rb6
-rw-r--r--lib/jcode.rb21
-rw-r--r--lib/logger.rb6
-rw-r--r--lib/mathn.rb84
-rw-r--r--lib/matrix.rb164
-rw-r--r--lib/mkmf.rb204
-rw-r--r--lib/monitor.rb31
-rw-r--r--lib/net/.document8
-rw-r--r--lib/net/ftp.rb193
-rw-r--r--lib/net/http.rb4
-rw-r--r--lib/net/https.rb10
-rw-r--r--lib/net/imap.rb288
-rw-r--r--lib/net/pop.rb217
-rw-r--r--lib/net/protocol.rb16
-rw-r--r--lib/net/smtp.rb466
-rw-r--r--lib/net/telnet.rb5
-rw-r--r--lib/observer.rb19
-rw-r--r--lib/open-uri.rb107
-rw-r--r--lib/open3.rb45
-rw-r--r--lib/optparse.rb182
-rw-r--r--lib/ostruct.rb7
-rw-r--r--lib/parsearg.rb6
-rw-r--r--lib/parsedate.rb44
-rw-r--r--lib/ping.rb49
-rw-r--r--lib/pp.rb60
-rw-r--r--lib/profiler.rb2
-rw-r--r--lib/pstore.rb21
-rw-r--r--lib/rational.rb7
-rw-r--r--lib/rdoc/generators/ri_generator.rb2
-rw-r--r--lib/rdoc/markup/simple_markup/inline.rb4
-rw-r--r--lib/rdoc/options.rb11
-rw-r--r--lib/rdoc/parsers/parse_c.rb10
-rw-r--r--lib/rdoc/parsers/parse_rb.rb23
-rw-r--r--lib/rdoc/rdoc.rb54
-rw-r--r--lib/rdoc/ri/ri_display.rb1
-rw-r--r--lib/rdoc/ri/ri_formatter.rb4
-rw-r--r--lib/rdoc/ri/ri_paths.rb4
-rw-r--r--lib/rdoc/ri/ri_writer.rb2
-rw-r--r--lib/resolv.rb993
-rw-r--r--lib/rexml/comment.rb24
-rw-r--r--lib/rexml/dtd/dtd.rb2
-rw-r--r--lib/rexml/element.rb23
-rw-r--r--lib/rexml/encoding.rb36
-rw-r--r--lib/rexml/encodings/UTF-16.rb3
-rw-r--r--lib/rexml/functions.rb4
-rw-r--r--lib/rexml/parsers/baseparser.rb17
-rw-r--r--lib/rexml/parsers/xpathparser.rb8
-rw-r--r--lib/rexml/rexml.rb8
-rw-r--r--lib/rexml/source.rb8
-rw-r--r--lib/rexml/xpath.rb14
-rw-r--r--lib/rexml/xpath_parser.rb40
-rw-r--r--lib/rinda/.document3
-rw-r--r--lib/rinda/ring.rb2
-rw-r--r--lib/rss/0.9.rb511
-rw-r--r--lib/rss/1.0.rb473
-rw-r--r--lib/rss/2.0.rb97
-rw-r--r--lib/rss/content.rb23
-rw-r--r--lib/rss/converter.rb15
-rw-r--r--lib/rss/dublincore.rb26
-rw-r--r--lib/rss/image.rb114
-rw-r--r--lib/rss/maker/base.rb36
-rw-r--r--lib/rss/maker/dublincore.rb6
-rw-r--r--lib/rss/maker/taxonomy.rb6
-rw-r--r--lib/rss/maker/trackback.rb8
-rw-r--r--lib/rss/parser.rb108
-rw-r--r--lib/rss/rss.rb319
-rw-r--r--lib/rss/syndication.rb27
-rw-r--r--lib/rss/taxonomy.rb126
-rw-r--r--lib/rss/trackback.rb106
-rw-r--r--lib/rss/utils.rb12
-rw-r--r--lib/runit/assert.rb7
-rw-r--r--lib/runit/testcase.rb2
-rw-r--r--lib/scanf.rb16
-rw-r--r--lib/set.rb27
-rw-r--r--lib/shell.rb11
-rw-r--r--lib/shell/builtin-command.rb4
-rw-r--r--lib/shell/command-processor.rb4
-rw-r--r--lib/shell/error.rb4
-rw-r--r--lib/shell/filter.rb4
-rw-r--r--lib/shell/process-controller.rb12
-rw-r--r--lib/shell/system-command.rb4
-rw-r--r--lib/shell/version.rb4
-rw-r--r--lib/shellwords.rb32
-rw-r--r--lib/soap/baseData.rb2
-rw-r--r--lib/soap/generator.rb20
-rw-r--r--lib/soap/mapping/registry.rb2
-rw-r--r--lib/soap/mapping/rubytypeFactory.rb18
-rw-r--r--lib/soap/mimemessage.rb2
-rw-r--r--lib/soap/property.rb2
-rw-r--r--lib/soap/rpc/proxy.rb11
-rw-r--r--lib/sync.rb20
-rw-r--r--lib/tempfile.rb12
-rw-r--r--lib/test/unit/assertions.rb8
-rw-r--r--lib/test/unit/autorunner.rb23
-rw-r--r--lib/test/unit/collector/dir.rb27
-rw-r--r--lib/test/unit/collector/objectspace.rb2
-rw-r--r--lib/test/unit/testcase.rb24
-rw-r--r--lib/test/unit/testresult.rb1
-rw-r--r--lib/test/unit/ui/console/testrunner.rb14
-rw-r--r--lib/test/unit/ui/fox/testrunner.rb50
-rw-r--r--lib/test/unit/ui/gtk/testrunner.rb84
-rw-r--r--lib/test/unit/ui/gtk2/testrunner.rb84
-rw-r--r--lib/test/unit/ui/testrunnermediator.rb2
-rw-r--r--lib/test/unit/ui/tk/testrunner.rb30
-rw-r--r--lib/test/unit/util/observable.rb4
-rw-r--r--lib/test/unit/util/procwrapper.rb6
-rw-r--r--lib/thread.rb13
-rw-r--r--lib/time.rb31
-rw-r--r--lib/tmpdir.rb6
-rw-r--r--lib/tracer.rb4
-rw-r--r--lib/uri.rb2
-rw-r--r--lib/uri/.document7
-rw-r--r--lib/uri/common.rb10
-rw-r--r--lib/uri/ftp.rb88
-rw-r--r--lib/uri/generic.rb3
-rw-r--r--lib/uri/http.rb51
-rw-r--r--lib/uri/https.rb6
-rw-r--r--lib/uri/ldap.rb2
-rw-r--r--lib/uri/mailto.rb47
-rw-r--r--lib/weakref.rb26
-rw-r--r--lib/webrick/cgi.rb21
-rw-r--r--lib/webrick/config.rb6
-rw-r--r--lib/webrick/cookie.rb6
-rw-r--r--lib/webrick/httpauth/basicauth.rb2
-rw-r--r--lib/webrick/httpauth/digestauth.rb1
-rw-r--r--lib/webrick/httpauth/htpasswd.rb2
-rw-r--r--lib/webrick/httpproxy.rb4
-rw-r--r--lib/webrick/httprequest.rb18
-rw-r--r--lib/webrick/httpresponse.rb13
-rw-r--r--lib/webrick/httpserver.rb15
-rw-r--r--lib/webrick/httpservlet/cgihandler.rb10
-rw-r--r--lib/webrick/httpservlet/erbhandler.rb2
-rw-r--r--lib/webrick/httpservlet/filehandler.rb2
-rw-r--r--lib/webrick/httputils.rb7
-rw-r--r--lib/webrick/server.rb3
-rw-r--r--lib/webrick/ssl.rb2
-rw-r--r--lib/webrick/utils.rb75
-rw-r--r--lib/xmlrpc/README.rdoc300
-rw-r--r--lib/xmlrpc/base64.rb2
-rw-r--r--lib/xmlrpc/client.rb2
-rw-r--r--lib/xmlrpc/config.rb2
-rw-r--r--lib/xmlrpc/create.rb8
-rw-r--r--lib/xmlrpc/datetime.rb4
-rw-r--r--lib/xmlrpc/httpserver.rb2
-rw-r--r--lib/xmlrpc/marshal.rb2
-rw-r--r--lib/xmlrpc/parser.rb2
-rw-r--r--lib/xmlrpc/server.rb2
-rw-r--r--lib/xmlrpc/utils.rb2
-rw-r--r--lib/xsd/codegen/gensupport.rb8
-rw-r--r--lib/yaml.rb2
-rw-r--r--lib/yaml/tag.rb2
-rw-r--r--main.c30
-rw-r--r--marshal.c293
-rw-r--r--math.c127
-rwxr-xr-xmdoc2man.rb2
-rw-r--r--misc/README13
-rw-r--r--misc/inf-ruby.el10
-rw-r--r--misc/rdebug.el136
-rw-r--r--misc/ruby-mode.el12
-rw-r--r--missing.h76
-rw-r--r--missing/acosh.c13
-rw-r--r--missing/dup2.c3
-rw-r--r--missing/erf.c12
-rw-r--r--missing/finite.c3
-rw-r--r--missing/flock.c12
-rw-r--r--missing/hypot.c3
-rw-r--r--missing/isinf.c15
-rw-r--r--missing/isnan.c8
-rw-r--r--missing/memcmp.c9
-rw-r--r--missing/memmove.c17
-rw-r--r--missing/os2.c25
-rw-r--r--missing/strcasecmp.c3
-rw-r--r--missing/strchr.c18
-rw-r--r--missing/strerror.c3
-rw-r--r--missing/strncasecmp.c6
-rw-r--r--missing/strstr.c11
-rw-r--r--missing/strtod.c2
-rw-r--r--missing/strtol.c9
-rw-r--r--missing/strtoul.c14
-rw-r--r--missing/vsnprintf.c149
-rw-r--r--mkconfig.rb20
-rw-r--r--node.h173
-rw-r--r--numeric.c708
-rw-r--r--object.c980
-rw-r--r--oniguruma.h909
-rw-r--r--pack.c296
-rw-r--r--parse.y5661
-rw-r--r--prec.c21
-rw-r--r--process.c886
-rw-r--r--random.c45
-rw-r--r--range.c256
-rw-r--r--re.c1002
-rw-r--r--re.h19
-rw-r--r--regcomp.c6017
-rw-r--r--regenc.c1028
-rw-r--r--regenc.h147
-rw-r--r--regerror.c371
-rw-r--r--regex.c4648
-rw-r--r--regex.h219
-rw-r--r--regexec.c3920
-rw-r--r--regint.h829
-rw-r--r--regparse.c5352
-rw-r--r--regparse.h328
-rw-r--r--ruby.c256
-rw-r--r--ruby.h446
-rw-r--r--rubyio.h81
-rw-r--r--rubysig.h18
-rw-r--r--rubytest.rb8
-rwxr-xr-xrunruby.rb4
-rw-r--r--sample/biorhythm.rb4
-rw-r--r--sample/cal.rb36
-rw-r--r--sample/occur.rb4
-rw-r--r--sample/openssl/c_rehash.rb4
-rw-r--r--sample/openssl/cipher.rb73
-rw-r--r--sample/openssl/gen_csr.rb1
-rw-r--r--sample/optparse/opttest.rb28
-rw-r--r--sample/ripper/ruby2html.rb112
-rw-r--r--sample/ripper/strip-comment.rb19
-rwxr-xr-xsample/rss/convert.rb69
-rw-r--r--sample/test.rb691
-rw-r--r--signal.c212
-rw-r--r--sjis.c238
-rw-r--r--sprintf.c389
-rw-r--r--st.c209
-rw-r--r--st.h40
-rw-r--r--string.c2479
-rw-r--r--struct.c368
-rw-r--r--test/dbm/test_dbm.rb39
-rw-r--r--test/digest/test_digest.rb30
-rw-r--r--test/digest/test_digest_hmac.rb3
-rw-r--r--test/fileutils/fileasserts.rb8
-rw-r--r--test/fileutils/test_dryrun.rb2
-rw-r--r--test/fileutils/test_fileutils.rb7
-rw-r--r--test/fileutils/test_nowrite.rb2
-rw-r--r--test/fileutils/test_verbose.rb2
-rw-r--r--test/gdbm/test_gdbm.rb39
-rw-r--r--test/inlinetest.rb59
-rw-r--r--test/io/nonblock/test_flush.rb1
-rw-r--r--test/net/http/test_http.rb382
-rw-r--r--test/net/imap/test_imap.rb14
-rw-r--r--test/openssl/test_asn1.rb2
-rw-r--r--test/openssl/test_ssl.rb14
-rw-r--r--test/optparse/test_getopts.rb31
-rw-r--r--test/readline/test_readline.rb2
-rw-r--r--test/rinda/test_rinda.rb8
-rw-r--r--test/rinda/test_tuplebag.rb172
-rw-r--r--test/ripper/dummyparser.rb517
-rw-r--r--test/ripper/test_files.rb19
-rw-r--r--test/ripper/test_parser_events.rb493
-rw-r--r--test/ripper/test_scanner_events.rb803
-rw-r--r--test/rss/rss-assertions.rb7
-rw-r--r--test/rss/rss-testcase.rb17
-rw-r--r--test/rss/test_1.0.rb20
-rw-r--r--test/rss/test_2.0.rb28
-rw-r--r--test/rss/test_content.rb2
-rw-r--r--test/rss/test_dublincore.rb4
-rw-r--r--test/rss/test_image.rb8
-rw-r--r--test/rss/test_maker_0.9.rb37
-rw-r--r--test/rss/test_maker_1.0.rb68
-rw-r--r--test/rss/test_maker_2.0.rb57
-rw-r--r--test/rss/test_maker_dc.rb20
-rw-r--r--test/rss/test_maker_taxo.rb10
-rw-r--r--test/rss/test_maker_trackback.rb5
-rw-r--r--test/rss/test_maker_xml-stylesheet.rb42
-rw-r--r--test/rss/test_parser.rb586
-rw-r--r--test/rss/test_parser_1.0.rb503
-rw-r--r--test/rss/test_parser_2.0.rb122
-rw-r--r--test/rss/test_setup_maker_0.9.rb36
-rw-r--r--test/rss/test_setup_maker_1.0.rb106
-rw-r--r--test/rss/test_setup_maker_2.0.rb75
-rw-r--r--test/rss/test_syndication.rb2
-rw-r--r--test/rss/test_taxonomy.rb2
-rw-r--r--test/rss/test_trackback.rb2
-rw-r--r--test/ruby/envutil.rb7
-rw-r--r--test/ruby/test_array.rb28
-rw-r--r--test/ruby/test_assignment.rb412
-rw-r--r--test/ruby/test_beginendblock.rb1
-rw-r--r--test/ruby/test_dir.rb6
-rw-r--r--test/ruby/test_env.rb24
-rw-r--r--test/ruby/test_eval.rb2
-rw-r--r--test/ruby/test_file.rb41
-rw-r--r--test/ruby/test_float.rb1
-rw-r--r--test/ruby/test_fnmatch.rb105
-rw-r--r--test/ruby/test_io.rb27
-rw-r--r--test/ruby/test_iterator.rb59
-rw-r--r--test/ruby/test_lambda.rb53
-rw-r--r--test/ruby/test_method.rb11
-rw-r--r--test/ruby/test_objectspace.rb2
-rw-r--r--test/ruby/test_pipe.rb1
-rw-r--r--test/ruby/test_proc.rb40
-rw-r--r--test/ruby/test_range.rb37
-rw-r--r--test/ruby/test_readpartial.rb2
-rw-r--r--test/ruby/test_regexp.rb27
-rw-r--r--test/ruby/test_settracefunc.rb1
-rw-r--r--test/ruby/test_signal.rb2
-rw-r--r--test/ruby/test_sprintf.rb141
-rw-r--r--test/ruby/test_stringchar.rb8
-rw-r--r--test/ruby/test_struct.rb28
-rw-r--r--test/ruby/test_system.rb9
-rw-r--r--test/ruby/test_variable.rb20
-rw-r--r--test/ruby/test_whileuntil.rb14
-rw-r--r--test/ruby/ut_eof.rb12
-rw-r--r--test/runner.rb4
-rw-r--r--test/scanf/data.txt6
-rw-r--r--test/scanf/test_scanf.rb310
-rw-r--r--test/scanf/test_scanfblocks.rb78
-rw-r--r--test/scanf/test_scanfio.rb19
-rw-r--r--test/sdbm/test_sdbm.rb17
-rw-r--r--test/soap/calc/test_calc_cgi.rb4
-rw-r--r--test/soap/header/test_authheader_cgi.rb4
-rw-r--r--test/soap/ssl/test_ssl.rb4
-rw-r--r--test/soap/wsdlDriver/test_calc.rb14
-rw-r--r--test/socket/test_socket.rb24
-rw-r--r--test/socket/test_tcp.rb28
-rw-r--r--test/socket/test_udp.rb32
-rw-r--r--test/test_generator.rb4
-rw-r--r--test/test_ipaddr.rb4
-rw-r--r--test/test_pp.rb4
-rw-r--r--test/test_prettyprint.rb4
-rw-r--r--test/test_set.rb4
-rw-r--r--test/test_shellwords.rb39
-rw-r--r--test/test_time.rb4
-rw-r--r--test/test_tsort.rb4
-rw-r--r--test/testunit/collector/test_dir.rb58
-rw-r--r--test/testunit/test_assertions.rb1
-rw-r--r--test/uri/test_ftp.rb22
-rw-r--r--test/uri/test_generic.rb2
-rw-r--r--test/webrick/test_cgi.rb9
-rw-r--r--test/webrick/test_cookie.rb33
-rw-r--r--test/webrick/test_filehandler.rb6
-rw-r--r--test/webrick/test_utils.rb64
-rw-r--r--test/webrick/utils.rb2
-rw-r--r--test/win32ole/test_folderitem2_invokeverb.rb79
-rw-r--r--test/win32ole/test_nil2vtempty.rb32
-rw-r--r--test/win32ole/test_propertyputref.rb24
-rw-r--r--test/win32ole/test_win32ole.rb44
-rw-r--r--test/win32ole/test_win32ole_event.rb99
-rw-r--r--test/win32ole/test_win32ole_method.rb135
-rw-r--r--test/win32ole/test_win32ole_param.rb84
-rw-r--r--test/win32ole/test_win32ole_type.rb142
-rw-r--r--test/win32ole/test_win32ole_typelib.rb95
-rw-r--r--test/win32ole/test_win32ole_variable.rb61
-rw-r--r--test/win32ole/test_win32ole_variant.rb109
-rw-r--r--test/win32ole/test_win32ole_variant_m.rb33
-rw-r--r--test/wsdl/any/test_any.rb14
-rw-r--r--test/wsdl/document/echo.rb92
-rw-r--r--test/wsdl/document/test_rpc.rb2
-rw-r--r--test/wsdl/qualified/lp.rb0
-rw-r--r--test/wsdl/ref/test_ref.rb14
-rw-r--r--test/wsdl/rpc/echoDriver.rb55
-rw-r--r--test/wsdl/rpc/echo_serviceClient.rb23
-rw-r--r--test/wsdl/simpletype/rpc/test_rpc.rb14
-rw-r--r--test/xmlrpc/webrick_testing.rb4
-rw-r--r--test/yaml/test_yaml.rb2
-rw-r--r--time.c913
-rw-r--r--utf8.c3764
-rw-r--r--util.c74
-rw-r--r--util.h23
-rw-r--r--variable.c651
-rw-r--r--version.c19
-rw-r--r--version.h22
-rw-r--r--vms/config.h193
-rw-r--r--vms/vms.h9
-rw-r--r--win32/Makefile.sub92
-rw-r--r--win32/README.win3227
-rwxr-xr-xwin32/configure.bat56
-rw-r--r--win32/dir.h13
-rw-r--r--win32/mkexports.rb150
-rw-r--r--win32/resource.rb22
-rw-r--r--win32/setup.mak23
-rw-r--r--win32/win32.c1391
-rw-r--r--win32/win32.h226
-rw-r--r--wince/Makefile.sub27
-rw-r--r--wince/README.wince19
-rwxr-xr-x[-rw-r--r--]wince/configure.bat2
-rw-r--r--wince/mkconfig_wce.rb7
-rw-r--r--wince/mkexports.rb35
-rw-r--r--wince/resource.rb96
-rw-r--r--x68/_dtos18.c2
-rw-r--r--x68/_round.c2
-rw-r--r--x68/fconvert.c2
-rw-r--r--x68/select.c2
813 files changed, 45416 insertions, 82143 deletions
diff --git a/.cvsignore b/.cvsignore
index 76c9bc0b78..9fd96ca149 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -3,18 +3,15 @@
*.rej
*.sav
*~
-.*.list
-.*.time
.ccmalloc
.ppack
.ext
.git
.svn
-.pc
+.rbconfig.time
COPYING.LIB
ChangeLog.pre-alpha
ChangeLog.pre1_1
-ChangeLog-1.8.0
Makefile
README.fat-patch
README.v6
@@ -29,13 +26,19 @@ config.h.in
config.log
config.status
configure
+foo.rb
libruby.so.*
miniruby
+miniruby.elhash
+miniruby.elhash2
+miniruby.orig2
+miniruby.plhash
+miniruby.plhash2
+modex.rb
newdate.rb
newver.rb
parse.c
-patches
-patches-master
+parse.y.try
pitest.rb
ppack
preview
@@ -46,6 +49,9 @@ riscos
rubicon
ruby
ruby-man.rd.gz
+rubyunit
+st.c.power
+this that
tmp
web
y.output
diff --git a/COPYING.ja b/COPYING.ja
index aa2a163848..933cc7cb9a 100644
--- a/COPYING.ja
+++ b/COPYING.ja
@@ -1,6 +1,6 @@
-$BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!%(BGPL (the GNU General
-Public License)$B%P!<%8%g%s(B2$B$^$?$O0J2<$K<($9>r7o$GK\%W%m%0%i%`(B
-$B$r:FG[I[$G$-$^$9!%(BGPL$B$K$D$$$F$O(BGPL$B%U%!%$%k$r;2>H$7$F2<$5$$!%(B
+$BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!%(BGPL(the GNU General
+Public License)$B$^$?$O0J2<$K<($9>r7o$GK\%W%m%0%i%`$r:FG[I[$G(B
+$B$-$^$9!%(BGPL$B$K$D$$$F$O(BGPL$B%U%!%$%k$r;2>H$7$F2<$5$$!%(B
1. $BJ#@=$O@)8B$J$/<+M3$G$9!%(B
diff --git a/ChangeLog b/ChangeLog
index 09651f36c5..772ef5d382 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,1888 +1,489 @@
-Tue Nov 7 18:35:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Aug 16 06:08:53 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (formal_assign): need to pack rest arg information in
- argc.
+ * sprintf.c (rb_f_sprintf): more checks for format argument.
+ [ruby-core:11569], [ruby-core:11570], [ruby-core:11571],
+ [ruby-core:11573]
-Tue Nov 7 18:05:01 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Thu Aug 16 05:39:31 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/lib/tk/itemconfig.rb: minor bug fix.
+ * bignum.c (bignorm): do not empty Bignum. [ruby-dev:31229]
-Tue Nov 7 17:52:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Aug 16 05:12:05 2007 pegacorn <subscriber.jp AT gmail.com>
- * class.c (rb_include_module): revert duplicate inclusion of
- modules. [ruby-dev:29793]
+ * ext/openssl/ossl.h: include ossl_pkcs5.h. [ruby-dev:31231]
-Tue Nov 7 17:18:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * ext/openssl/ossl_pkcs5.h: new file for PKCS5. [ruby-dev:31231]
- * eval.c (method_missing): update old argument adjustment.
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_s): use ossl_raise()
+ instead of rb_raise(). [ruby-dev:31222]
-Tue Nov 7 16:41:21 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/sdbm/_sdbm.c: DOSISH platforms need io.h. [ruby-dev:31232]
- * eval.c (when_check): need to splat for NODE_ARGSCAT as well.
- [ruby-dev:29860]
+ * ext/syck/syck.h: include stdlib.h for malloc() and free().
+ [ruby-dev:31232]
-Mon Nov 6 22:23:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * ext/syck/syck.h (syck_parser_set_input_type): prototype added.
+ [ruby-dev:31231]
- * string.c (Init_String): remove duplicated definition of
- Symbol#to_s.
+ * win32/win32.c: include mbstring.h for _mbspbrk(). [ruby-dev:31232]
-Mon Nov 6 18:54:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * win32.h (rb_w32_getcwd): prototype added. [ruby-dev:31232]
- * eval.c (svalue_to_avalue): need to splat but no error.
+Thu Aug 16 05:02:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c: new macros - YIELD_CALL, YIELD_VALUES.
+ * bignum.c (rb_cstr_to_inum): check leading non-digits.
+ [ruby-core:11691]
- * eval.c (rb_yield_values): specify YIELD_VALUES.
+Thu Aug 16 05:00:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
- * eval.c (rb_yield_0): use new macros.
+ * numeric.c (fix_pow): 0**2 should not raise floating point
+ exception. [ruby-dev:31216]
- * eval.c (proc_invoke): slightly modified to separate YIELD_CALL
- and YIELD_VALUES from YIELD_ARY_ARGS.
+Thu Aug 16 04:56:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (Init_Object): add nil.to_splat => [].
+ * win32/win32.c (CreateChild): enclose command line except for
+ command.com which can not handle quotes. [ruby-talk:258939]
-Mon Nov 6 15:41:55 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Thu Aug 16 04:54:45 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/lib/tk/itemconfig.rb: ext/tk/lib/tk/itemconfig.rb: bug
- fix on 'itemconfiginfo' method, and modify to make it easy to
- override 'itemconfiginfo' method.
+ * lib/mkmf.rb (link_command, cc_command, cpp_command): do not expand
+ ::CONFIG which is an alias of MAKEFILE_CONFIG.
- * ext/tk/lib/tkextlib/tile/treeview.rb : support Tile 0.7.8.
+Thu Aug 16 04:53:21 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/lib/tkextlib/version.rb : [new] add Tk::Tkextlib_RELEASE_DATE
- to get the information from scripts.
+ * struct.c (rb_struct_init_copy): disallow changing the size.
+ [ruby-dev:31168]
- * ext/tk/lib/tk.rb: load 'tkextlib/version.rb', and update RELEASE_DATE
+Thu Aug 16 04:52:11 2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * ext/tk/lib/tkextlib/SUPPORT_STATUS: update.
+ * random.c: documentation fix. srand(0) initializes PRNG with '0',
+ not with random_seed.
- * ext/tk/sample/editable_listbox.rb: [new] the listbox with editable
- items. It's one of the example about usage of Place geometry manager.
+Thu Aug 16 04:49:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/sample/tktextio.rb: improve the functions of TkTextIO class.
- Those are required by 'irbtkw.rbw'.
+ * bcc32/{Makefile.sub,setup.mak}: remove surplus slash from srcdir.
- * ext/tk/sample/irbtkw.rbw: [new] IRB on Ruby/Tk. It doesn't need any
- real console. IRB works on a text widget without I/O blocking. That
- is, thread switching on IRB will work properly, even if on Windows.
+Thu Aug 16 04:40:37 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Nov 6 00:42:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (arg_dup_check): vid may be nameless internal id.
-
-Sun Nov 5 19:52:19 2006 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb: updated based on date2 3.9.7.
-
-Sat Nov 4 13:09:31 2006 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb: accept NOMODSEQ. [ruby-core:9002]
-
-Fri Nov 3 00:16:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/socket/socket.c (ruby_getnameinfo__aix): AF_INET6 workaround
- for AIX. a patch from Yutaka Kanemoto <kinpoco AT gmail.com>.
- [ruby-dev:29744]
-
-Thu Nov 2 14:19:44 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/set.rb (Set#^): Fix XOR operation against a container that
- holds duplicate values. [ruby-core:9372]
-
-Thu Nov 2 10:00:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c: class Symbol is no longer subclass of String. also
- covers [ruby-core:09366]
-
-Thu Nov 2 08:21:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/xmlrpc/create.rb (XMLRPC::Create::conv2value): Symbol should
- come earlier than String.
-
- * lib/soap/mapping/rubytypeFactory.rb (RubytypeFactory::obj2soap):
- ditto.
-
- * lib/set.rb (TC_Set::test_s_new): strings are no longer
- Enumerable
-
- * lib/soap/property.rb (Property::load): ditto.
-
- * lib/webrick/httputils.rb (WEBrick::HTTPUtils::parse_header): ditto.
-
- * lib/soap/mimemessage.rb (MIMEMessage::Headers::parse): ditto.
-
-Thu Nov 2 09:08:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c: revert lfree shift/unshift boost patch to avoid unknown
- memory error.
-
-Wed Nov 1 23:24:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ruby.h (struct RArray): revert embedding ptr in RVALUE.
-
- * array.c: ditto.
-
-Wed Nov 1 23:01:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (hash): use Bob Jenkins' hash algorithm.
-
-Wed Nov 1 02:22:31 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/lib/digest/hmac.rb (Digest::HMAC::update): Minor
- optimization.
-
- * ext/digest/digest.c (rb_digest_instance_equal): Allow comparing
- a digest instance with another of a different class.
-
-Wed Nov 1 01:05:13 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * eval.c (rb_call0): fixed bug of zsuper with both of opt and rest.
- fixed: [ruby-list:42928]
-
-Tue Oct 31 17:03:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * time.c (time_dup): duplicate the class of original time.
- [ruby-core:09357]
-
- * lib/time.rb (Time::make_time, Time::rfc2822, Time::httpdate):
- should respect subclasses. [ruby-core:09357]
-
-Tue Oct 31 16:25:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (ary_shared_first): should address offset after
- ary_shared_array(). [ruby-core:09358]
-
-Mon Oct 30 23:40:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in (miniruby): add XLDFLAGS.
-
- * configure.in (aix): use -bE option for miniruby. [ruby-dev:29698]
-
- * dir.c (glob_helper): get rid of possible memory leak.
-
- * win32/win32.c (cmdglob, rb_w32_cmdvector, rb_w32_opendir,
- rb_w32_get_environ): not to use GC before initialization.
-
-Mon Oct 30 19:28:02 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * bignum.c (rb_big2str0): use better approximation.
-
-Mon Oct 30 18:35:33 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (rb_big2str0): wrong allocation length. a patch from
- U.Nakamura <usa at garbagecollect.jp> [ruby-dev:29710]
-
-Mon Oct 30 12:34:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_eval): fix commit miss. [ruby-dev:29707]
-
-Mon Oct 30 11:15:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * sprintf.c (rb_str_format): should preserve leading zero
- information for negative %b and %x. [ruby-talk:221347]
-
-Sun Oct 29 19:51:31 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * regexec.c: invalid offset value was used in STATE_CHECK_BUFF_INIT().
-
-Sat Oct 28 20:13:18 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * oniguruma.h: Version 4.4.5
-
- * regint.h: ditto.
-
- * regerror.c: ditto.
-
- * regexec.c: ditto.
-
- * regcomp.c ditto.
-
- * regparse.c ditto.
-
-Sat Oct 28 07:56:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * marshal.c (r_object0): missing break. [ruby-core:09345]
-
-Fri Oct 27 17:30:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enumerator.c (enum_each_cons): move RETURN_ENUMERATOR() after
- argument check.
-
-Thu Oct 26 21:05:48 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_verify): should clear error.
- (fix http://bugs.debian.org/394336)
-
- * ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): ditto.
-
-Thu Oct 26 15:23:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enumerator.c: remove by_slice and by_cons.
-
-Thu Oct 26 15:12:12 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/digest/digest.c (Init_digest): typo.
-
-Wed Oct 25 17:16:05 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * test/digest/test_digest_hmac.rb: added.
-
-Wed Oct 25 16:34:31 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/test.sh: make this script work again.
-
-Wed Oct 25 07:59:42 2006 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date/format.rb: updated based on date2 3.9.6.
- [ruby-core:09323]
-
-Wed Oct 25 00:58:19 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/mkexports.rb, win32/resource.rb: use unique variable names.
-
-Tue Oct 24 19:18:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enumerator.c (enumerator_by_slice): new method added.
-
- * enumerator.c (enumerator_by_cons): ditto.
-
-Tue Oct 24 18:56:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enumerator.c (enum_each_slice, enum_each_cons): returns
- Enumerable::Enumerator if no block is given. [ruby-dev:29246]
-
- * enumerator.c: remove methods: enum_with_index, enum_slice,
- enum_cons. [ruby-dev:29246]
-
-Tue Oct 24 18:51:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enum.c (enum_zip): add RETURN_ENUMERATOR() to zip method.
-
-Mon Oct 23 04:30:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * marshal.c (r_object0): use return value from proc given as the
- second argument to Marshal#load() to allow value replacement in
- the restoring data.
-
-Sun Oct 22 14:48:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * signal.c (Init_signal): avoid duplicated installation of SIGCHLD
- handler.
-
-Sun Oct 22 16:47:56 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_substr): should be infected with only original
- string, but not the shared string. fixed: [ruby-core:09152]
-
- * strnig.c (rb_str_new4): keep shared string untainted when orignal
- string is tainted. fixed: [ruby-dev:29672]
-
-Sun Oct 22 07:55:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_upcase, rb_str_downcase, rb_str_downcase,
- rb_str_upcase_bang, rb_str_downcase_bang, rb_str_swapcase_bang):
- add RDoc description that case conversion to be effective only
- in ASCII region.
-
-Sun Oct 22 05:20:34 2006 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
-
- * configure.in: alloca is broken; use C_ALLOCA instead.
- [ruby-dev:29416]
-
-Sat Oct 21 17:50:40 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/lib/digest.rb: Follow the framework updates.
-
-Fri Oct 20 22:00:43 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/lib/digest/hmac.rb: Complete half-boiled updates.
-
- * ext/digest/sha2/lib/digest/sha2.rb: Fix #initialize_clone().
-
-Fri Oct 20 20:28:37 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest: Prefix C constants with RUBY_ and C type names with
- rb_ to avoid name clash in writing extensions.
-
- * ext/digest: Introduce Digest::Class and Digest::Instance for
- ease of implementing subclasses and add-ons, inspried by
- gotoyuzo.
-
- * ext/digest: The Digest::Instance module now requires and assumes
- that any instance be resettable and clonable, and add some
- convenient instance methods such as "new()", for creating a new
- copy, parameter taking "digest()" and "hexdigest()", for instant
- calculation. These methods make digest instances work just like
- digest classes.
-
- * ext/digest/sha2/lib/digest/sha2.rb:
- Add the Digest::SHA2 class to wrap up SHA2 variants: SHA256,
- SHA384 and SHA512, hoping this module would make a decent
- example of a digest subclass written in Ruby.
-
- * ext/digest/lib/digest.rb: Adjust autoload entries for SHA2
- classes.
-
- * ext/digest/lib/digest/hmac.rb: Follow the framework updates.
-
-Fri Oct 20 10:47:43 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/mkmf.rb: fixed the bug of handling COMMON_MACROS.
-
-Fri Oct 20 08:42:38 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (NULLCMD): dummy command.
-
- * bcc32/Makefile.sub (post-install-*): Borland make cannot ignore
- command-less double-colon rules. [ruby-dev:29676]
-
-Fri Oct 20 00:37:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * bcc32/Makefile.sub ($(LIBRUBY_SO)): execute pre-link hook.
-
- * ext/extmk.rb: workaround for Borland make.
-
-Wed Oct 18 23:02:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_shift): shorten copy size. fixed: [ruby-list:42907]
-
- * signal.c (Init_signal): handle SIGTERM. fixed: [ruby-list:42895]
-
- * win32/win32.c (rb_w32_utime): allow NULL to set the current time.
- [ruby-talk:219248]
-
-Wed Oct 18 13:25:50 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_each_line): String#lines now works when a block
- is given. in other words, lines become an alias to each_line.
- [ruby-core:09218]
-
- * string.c (rb_str_each_byte): ditto for bytes in place of lines.
-
-Wed Oct 18 00:55:33 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_yylex): use particular enums. [ruby-core:09221]
-
-Tue Oct 17 22:03:08 2006 Minero Aoki <aamine@loveruby.net>
-
- * lib/erb.rb: String#each was removed, use #each_line instead.
-
-Tue Oct 17 12:27:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (ary_shared_array): should set NOEMBED flag for a copied
- array.
-
-Tue Oct 17 08:04:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_lines): now takes optional argument for the
- line separator.
-
- * io.c (rb_io_lines, rb_io_bytes): new methods.
-
-Mon Oct 16 23:33:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (rb_ary_unshift_m): a bug in lfree shift length
- calculation.
-
-Mon Oct 16 08:30:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * mkconfig.rb: *OBJS are not needed for extension libraries.
-
- * {bcc32,wince,win32}/Makefile.sub (config.status): fixed typo,
- missing comma.
-
-Mon Oct 16 00:44:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * pack.c (pack_unpack): execute block if given with unpacked value
- instead of creating an array. an idea from Tim Bray.
-
-Sun Oct 15 01:03:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit/collector/dir.rb (Collector::Dir#collect): append base
- directory but not prepend.
-
- * lib/test/unit/collector/dir.rb (Collector::Dir#collect_file): do not
- join with dot. fixed: [ruby-core:09179]
-
-Sat Oct 14 23:39:50 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (singleton): no need to re-create NODE_SELF() again.
- [ruby-core:09177]
-
-Sat Oct 14 23:25:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (parser_warning, parser_warn): some error message may
- contain format specifiers. a patch from Akinori MUSHA <knu at
- iDaemons.org>. [ruby-dev:29657]
-
- * regparse.c (onig_rb_warning, onig_rb_warn): ditto.
-
- * ext/bigdecimal/bigdecimal.c (VpException): ditto.
-
- * ext/dl/handle.c (rb_dlhandle_initialize): ditto.
-
- * ext/gdbm/gdbm.c (rb_gdbm_fatal): ditto.
-
-Sat Oct 14 08:15:42 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c, ext/digest/digest.h,
- ext/digest/md5/md5init.c, ext/digest/rmd160/rmd160init.c,
- ext/digest/sha1/sha1init.c, ext/digest/sha2/sha2init.c:
- Introduce API versioning.
-
- * ext/digest/digest.c, ext/digest/digest.h,
- ext/digest/md5/md5init.c, ext/digest/rmd160/rmd160init.c,
- ext/digest/sha1/sha1init.c, ext/digest/sha2/sha2init.c: Remove
- the constants DIGEST_LENGTH and BLOCK_LENGTH and turn them into
- instance methods digest_length() and block_length(). Class
- methods with the same names are also provided, which take extra
- parameters for a digest method.
-
- * ext/digest/lib/digest/hmac.rb: Completely redesign the somewhat
- bizarre API, now that Digest classes can take hashing
- parameters.
-
-Sat Oct 14 05:54:05 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c: Improve RDoc documentation further more.
-
-Sat Oct 14 04:33:33 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c: Improve RDoc documentation.
-
- * ext/digest/digest.c (Init_digest, rb_digest_base_s_digest,
- rb_digest_base_s_hexdigest): Make Digest::Base::digest() and
- Digest::Base::hexdigest() take extra arguments, which are passed
- through to the constructor in an internal call.
-
- * ext/digest/bubblebabble/bubblebabble.c
- (rb_digest_base_s_bubblebabble): Ditto for
- Digest::Base::bubblebabble().
-
-Sat Oct 14 00:55:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * bcc32/Makefile.sub (post-install-ext): no longer needed.
-
- * bcc32/configure.bat: get rid of a quirk of Borland make, which
- sets empty macro in command line to "1".
-
-Fri Oct 13 22:49:02 2006 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb: updated based on date2 3.9.5.
-
-Fri Oct 13 21:00:01 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/lib/digest.rb (Digest): Try to auto-load non-standard
- digest modules when a specified digest class is missing.
-
- * ext/digest/lib/digest.rb: Define Digest(name) for ease of
- dynamically selecting a hashing algorithm.
-
-Fri Oct 13 20:53:37 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c (Init_digest): Digest::Base.new() does no
- longer take an initial string to feed. This change allows
- subclasses to take hashing parameters. A statement such as
- ``md = Digest::MD5.new(s)'' can be easily rewritten as
- ``md = Digest::MD5.new << s'' or
- ``md = Digest::MD5.new.update(s)''.
-
-Fri Oct 13 20:51:55 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c, ext/digest/md5/md5init.c,
- ext/digest/rmd160/rmd160init.c, ext/digest/sha1/sha1init.c,
- ext/digest/sha2/sha2init.c: Add RDoc documentation.
-
- * ext/digest/digest.txt, ext/digest/digest.txt.ja: Removed in
- favor of embedded RDoc documentation.
-
-Fri Oct 13 20:38:12 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/bubblebabble, ext/digest/digest.c: Rip BubbleBabble
- support out of the base class and have a separate module named
- digest/bubblebabble.
-
-Fri Oct 13 19:53:59 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c (rb_digest_base_equal): Again, should call
- digest() of a subclass instead of the one defined in the base
- class.
-
-Fri Oct 13 18:19:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c: Class#inherited RDoc added. a patch from Daniel
- Berger <djberg96 at gmail.com> [ruby-core:08942]
-
-Fri Oct 13 02:42:00 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c (rb_digest_base_equal): Should call digest()
- of a subclass instead of the one defined in the base class.
-
-Fri Oct 13 02:30:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit/collector/dir.rb (Collector::Dir#collect): prepend
- base directory to load path.
-
- * lib/test/unit/collector/dir.rb (Collector::Dir#collect_file): should
- use the given File-like interface, but not File directly.
-
- * test/testunit/collector/test_dir.rb (TestDir::FileSystem): implement
- File-like methods correctly.
-
-Fri Oct 13 01:48:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/date.rb (Date::self.complete_hash): need to check if g is
- nil before dereference. [ruby-core:09116]
-
-Fri Oct 13 01:05:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_partition): RDoc update. a patch from
- Mauricio Fernandez <mfp at acm.org>. [ruby-core:09160]
-
- * hash.c (rb_hash_compare_by_id): ditto.
-
-Fri Oct 13 00:34:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_mod_cvar_defined): wrong id check. a patch from
- Mauricio Fernandez <mfp at acm.org>. [ruby-core:09158]
-
- * object.c (rb_mod_cvar_get): typo fixed. [ruby-core:09168]
-
- * object.c (rb_mod_cvar_set): ditto.
-
-Thu Oct 12 22:58:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (rb_hash_compare_by_id): somehow we lost renaming from
- Hash#identical. [ruby-core:09163]
-
-Thu Oct 12 18:25:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/tk/tkutil/tkutil.c (cbsubst_table_setup): need to handle new
- character literal (1 char string).
-
- * lib/mkmf.rb: shut up some warnings from tk's extconf.rb.
-
-Thu Oct 12 02:15:24 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/lib/digest/hmac.rb: Make use of String#bytes.
-
-Thu Oct 12 02:12:31 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c (get_digest_base_metadata): Use an instance
- variable of a class object instead of a class variable for
- metadata. This change is only crucial for ruby 1.8 because
- class variables are inherited to subclasses prior to 1.9, but
- applying it also to 1.9 will assure compatibilities.
-
- * ext/digest/md5/md5init.c (Init_md5): Ditto.
-
- * ext/digest/rmd160/rmd160init.c (Init_rmd160): Ditto.
-
- * ext/digest/sha1/sha1init.c (Init_sha1): Ditto.
-
- * ext/digest/sha2/sha2init.c (Init_sha2): Ditto.
-
-Wed Oct 11 21:36:47 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c (rb_digest_base_alloc,
- rb_digest_base_equal): Simplify the equality check and just
- compare resulted digests since state-level equality should
- not be so significant.
-
- * ext/digest/digest.h: Ditto.
-
- * ext/digest/*/*.[ch]: Ditto.
-
-Wed Oct 11 17:11:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_obj_define_method): add half boiled RDoc document.
-
-Wed Oct 11 16:57:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (rb_ary_replace): should shift lfree pointer before
- calling xfree.
-
-Wed Oct 11 15:07:42 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/lib/digest/hmac.rb: Add digest/hmac, which implements
- HMAC keyed-hashing algorithm.
-
-Wed Oct 11 15:03:55 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c (rb_digest_base_reset): Do not make
- recursive calls, but call initialize() when reset() is not
- defined in a subclass.
-
-Wed Oct 11 14:56:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/digest/sha1/sha1ossl.h: libssl 0.9.8c-3 defines no
- SHA_BLOCK_LENGTH.
-
-Wed Oct 11 14:03:31 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c (rb_digest_base_reset, Init_digest): Add
- Digest::Base#reset.
-
- * ext/digest/digest.h: Update the header comment.
-
- * ext/digest/md5/md5ossl.h, ext/digest/md5/md5init.c (Init_md5):
- Define DIGEST_LENGTH and BLOCK_LENGTH.
-
- * ext/digest/rmd160/rmd160init.c (Init_rmd160): Ditto.
-
- * ext/digest/sha1/sha1init.c (Init_sha1): Ditto.
-
- * ext/digest/sha2/sha2init.c (Init_sha2): Ditto.
-
- * ext/digest/depend, ext/digest/extconf.rb: Use $INSTALLFILES
- rather than adding make targets. [Pointed out by: nobu]
-
-Tue Oct 10 16:39:08 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c (hexdigest_str_new, bubblebabble_str_new):
- Perform StringValue() checks properly.
-
-Tue Oct 10 13:21:21 2006 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/sha1/depend, ext/digest/sha2/depend: Remove obsolete
- dependencies.
-
-Mon Oct 9 23:46:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/parsedate.rb: documentation patch from Konrad Meyer
- <konrad.meyer@gmail.com>. [ruby-doc:1238]
-
- * lib/open3.rb, lib/ping.rb: ditto.
-
-Mon Oct 9 23:40:58 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb, lib/fileutils.rb, lib/mkmf.rb, lib/optparse.rb,
- lib/shellwords.rb: get rid of shadowing outer local variable.
-
-Mon Oct 9 22:56:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/rexml/encoding.rb (REXML::Encoding::check_encoding): spaces
- are allowed around equal sign. [ruby-core:09032]
-
- * lib/rexml/parsers/baseparser.rb (REXML::Parsers::BaseParser): ditto.
-
-Mon Oct 9 01:56:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_obj_define_method): add new method
- Kernel#define_singleton_method. [ruby-list:42851]
-
-Sat Oct 7 23:53:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * sprintf.c (rb_f_sprintf): sign bit extension should not be done
+ if FPLUS flag is specified. [ruby-list:39224]
- * string.c (rb_str_scan): small documentation fix.
- [ruby-core:09007]
+Thu Aug 16 04:39:15 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
-Sat Oct 7 23:44:33 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * array.c (rb_ary_initialize): should call rb_ary_modify() first.
+ [ruby-core:11562]
- * bignum.c (rb_big_rshift): a bug in right shift of negative
- bignums. [ruby-core:09020]
+Thu Aug 16 04:38:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Oct 7 23:33:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * parse.y (yylex): return non-valid token for an invalid
+ instance/class variable name. a patch from from Yusuke ENDOH
+ <mame AT tsg.ne.jp>. [ruby-dev:31095]
- * eval.c (formal_assign): packed post splat arguments may conflict
- with normal arguments. [ruby-core:09021]
+Thu Aug 16 04:36:41 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_call0): ditto.
+ * parse.y (dsym): return non-null NODE even if yyerror(). based on a
+ patch from from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:31085]
-Sat Oct 7 11:53:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Aug 16 04:34:56 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (rb_mod_initialize): since module_eval no longer passes
- self, use module_exec instead. fixed: [ruby-dev:29637]
+ * process.c (proc_exec_v, rb_proc_exec): preserve errno.
-Sat Oct 7 00:27:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Aug 16 04:30:45 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * class.c (rb_include_module): remove unnecessary check.
- [ruby-talk:218402]
+ * variable.c (rb_path2class): get rid of dangling pointer caused by
+ optimized out value.
-Fri Oct 6 15:19:59 2006 Akinori MUSHA <knu@iDaemons.org>
+Thu Aug 16 04:24:28 2007 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/digest/depend: Fix header installation when the build
- directory is different from srcdir. [Pointed out by: eban]
+ * ext/dl/lib/dl/win32.rb: seems that dl doesn't accept void argument.
+ fixed [ruby-bugs:PR#5489].
-Fri Oct 6 09:56:31 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Aug 16 04:23:44 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * {bcc32,win32,wince}/Makefile.sub (config.status): shouldn't use
- copy command instead of install. use -run install.
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser): handle more
+ extensions. [ruby-dev:30972]
-Fri Oct 6 06:53:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Aug 16 04:14:17 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_yield_0): small refactoring.
+ * process.c (ruby_setreuid, ruby_setregid): rename to get rid of name
+ clash.
+Thu Aug 16 04:11:17 2007 Ryan Davis <ryand@zenspider.com>
- * parse.y (bparam_item): fixed bugs in handling parenthesized LHS.
+ * lib/rexml/dtd/dtd.rb: Fixed typo in code. Fixes bug #10420
-Fri Oct 6 04:47:07 2006 Akinori MUSHA <knu@iDaemons.org>
+Thu Aug 16 04:08:20 2007 Shugo Maeda <shugo@ruby-lang.org>
- * ext/digest/depend: Install digest.h.
+ * lib/net/imap.rb (ResponseParser#next_token): fixed
+ error message. (backported from HEAD)
-Fri Oct 6 04:27:40 2006 Akinori MUSHA <knu@iDaemons.org>
+ * lib/net/imap.rb (ResponseParser#parse_error): fixed
+ the condition not to refer @token.symbol unexpectedly.
+ Thanks, Dick Monahan. (backported from HEAD)
- * ext/digest/lib/md5.rb, ext/digest/lib/sha1.rb: Remove those
- compatibility stub libraries.
+Thu Aug 16 04:05:20 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
- * sample/openssl/c_rehash.rb: Use digest/md5 instead of obsolete md5.
+ * marshal.c (w_extended): erroneous check condition when dump
+ method is defined. [ruby-core:10646]
-Fri Oct 6 04:09:51 2006 Akinori MUSHA <knu@iDaemons.org>
+Sat Jun 9 10:40:00 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
- * ext/digest/digest.c: Make hexdigest() always call digest() internally.
+ * stable version 1.8.5-p52 released.
- * ext/digest/digest.c: Add bubblebabble().
+Thu Jun 7 14:53:46 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
-Fri Oct 6 02:38:42 2006 Akinori MUSHA <knu@iDaemons.org>
+ * eval.c (method_inspect): show proper class name.
+ [ruby-talk:248647], Thanks Calamitas.
- * ext/digest/digest.c: Allow subclassing in Ruby.
+Mon May 28 19:37:24 2007 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Oct 6 02:06:10 2006 Akinori MUSHA <knu@iDaemons.org>
+ * win32/win32.c (move_to_next_entry): revert r12338. not necessary
+ on ruby_1_8_5.
- * ext/digest/digest.c (hexdigest_str_new): Add a string size check.
+Sun May 27 05:52:37 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
-Thu Oct 5 19:28:35 2006 Akinori MUSHA <knu@iDaemons.org>
+ * eval.c (mnew): call of super via a method object should work again.
+ [ruby-talk:248647], Thanks Calamitas.
- * ext/digest/digest.[ch]: Since the argument order of
- hash_final_func_t was inconsistent with others, change it and
- rename to hash_finish_func_t to avoid confusion.
+ * test/ruby/test_method.rb (TestMethod::test_method_super): test for
+ above fix.
- * ext/digest/digest.[ch]: Remove and eliminate the use of
- hash_end_func_t. Implement hexdigest conversion in the base
- class.
+Wed May 23 06:51:46 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
- * ext/digest/md5/md5.c, ext/digest/md5/md5.h,
- ext/digest/md5/md5init.c, ext/digest/md5/md5ossl.c,
- ext/digest/md5/md5ossl.h: Remove MD5_End() and change
- MD5_Final() to MD5_Finish().
+ * lib/cgi.rb (CGI#[]): get rid of exceptions being raised.
+ [ruby-dev:30740], Thanks Kentaro KAWAMOTO.
- * ext/digest/rmd160/depend, ext/digest/rmd160/extconf.rb,
- ext/digest/rmd160/rmd160.c, ext/digest/rmd160/rmd160.h,
- ext/digest/rmd160/rmd160hl.c, ext/digest/rmd160/rmd160init.c,
- ext/digest/rmd160/rmd160ossl.c, ext/digest/rmd160/rmd160ossl.h:
- Remove unused functions RMD160_End(), RMD160_File(),
- RMD160_Data() and change RMD160_Final() to RMD160_Finish().
+Wed May 23 06:14:15 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/digest/sha1/extconf.rb, ext/digest/sha1/sha1.c,
- ext/digest/sha1/sha1.h, ext/digest/sha1/sha1hl.c,
- ext/digest/sha1/sha1init.c, ext/digest/sha1/sha1ossl.c,
- ext/digest/sha1/sha1ossl.h: Likewise.
+ * win32/win32.c (move_to_next_entry): loc also must move forward.
+ [ruby-talk:251987]
- * ext/digest/sha2/extconf.rb, ext/digest/sha2/sha2.c,
- ext/digest/sha2/sha2.h, ext/digest/sha2/sha2hl.c,
- ext/digest/sha2/sha2init.c: Likewise.
+Wed May 23 05:55:04 2007 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Oct 4 18:47:25 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+ * win32/win32.c (init_stdhandle): stderr should be without buffering,
+ but mswin32 use buffering when stderr is not connected to tty.
- * ext/tk/lib/tkextlib/*: bugfix and update
- (see ext/tk/ChangeLog.tkextlib).
+Wed May 23 03:33:55 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 4 17:25:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/monitor.rb (ConditionVariable#wait, mon_enter, mon_exit_for_cond):
+ ensures Thread.critical to be false. [ruby-talk:248300]
- * eval.c (rb_call): check protected visibility based on real self,
- not ruby_frame->self. [ruby-talk:217822]
+Wed May 23 03:25:13 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 4 15:46:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * util.c (ruby_strtod): exponent is radix 10. [ruby-talk:248272]
- * parse.y (block_param): should interpret single parenthesized
- left hand side expression.
+Wed May 23 02:09:32 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
-Wed Oct 4 08:52:30 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (rb_yield_0): should not clear state on TAG_NEXT when
+ it's invoked from within lambda body. [ruby-talk:248136]
- * test/optparse/test_getopts.rb: changed the class name of test case
- to get rid of conflict with test_optparse.rb.
+ * eval.c (proc_invoke): handle TAG_NEXT which would be caused by
+ next in the lambda body as well.
-Tue Oct 3 21:04:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Wed May 23 01:55:49 2007 NAKAMURA Usaku <usa@ruby-lang.org>
- * parse.y (dyna_in_block): inline using macro.
+ * win32/win32.c (rb_w32_fclose, rb_w32_close): need to save errno
+ before calling original fclose()/close().
- * parse.y (mlhs): simplifies the rule a bit.
+Wed May 23 01:42:29 2007 Shugo Maeda <shugo@ruby-lang.org>
- * parse.y (block_param): restrict block parameters to be local
- variables only.
+ * lib/net/imap.rb (disconnect): call shutdown for
+ SSLSocket. Thanks, Technorama Ltd.
- * test/ruby/test_iterator.rb (TestIterator::test_nested_iterator):
- update test suite to conform the last change.
+Wed May 23 01:28:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 3 02:31:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * error.c (rb_notimplement), io.c (pipe_open): removed definite
+ articles and UNIX manual section from messages. [ruby-dev:30690]
- * eval.c (splat_value): use "to_splat" instead of "to_ary" to
- prepare splat values as an array.
+ * io.c (pipe_open): raise NotImplementedError for command "-" on
+ platforms where fork(2) is not available. [ruby-dev:30681]
- * array.c (Init_Array): define to_splat.
+Wed May 23 00:06:19 2007 NAKAMURA Usaku <usa@ruby-lang.org>
- * range.c (range_to_splat): new method.
+ * ext/socket/socket.c (s_recv, s_recvfrom): some systems (such as
+ windows) doesn't set fromlen if the socket is connection-oriented.
+ reported by Bram Whillock in [ruby-core:10512] [ruby-Bugs#9061]
- * enumerator.c (enumerator_to_splat): ditto.
+Tue Mar 20 15:37:24 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
-Tue Oct 3 01:36:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * distruby.rb: Add zip generation.
- * string.c (rb_str_lines): returns an Enumerator instead of an
- array of lines.
+Fri Mar 16 21:48:11 2007 Akinori MUSHA <knu@iDaemons.org>
- * string.c (rb_str_bytes): a new method.
+ * ext/dl/dl.c (rb_ary2cary): Fix a bug in type validation;
+ submitted by sheepman <sheepman AT sheepman.sakura.ne.jp>
+ in [ruby-dev:30554].
-Mon Oct 2 23:47:55 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Mar 16 18:28:06 2007 Akinori MUSHA <knu@iDaemons.org>
- * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::COLLECTORS):
- base directory should be lower precedence. fixed: [ruby-dev:29622]
+ * ext/etc/etc.c (etc_getgrgid): Fix a bug in Etc::getgrgid()
+ always returning the (real) group entry of the running process;
+ reported by: UEDA Hiroyuki <ueda AT netforest.ad.jp>
+ in [ruby-dev:30586].
- * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner#options): typo.
+Wed Mar 14 12:30:00 2007 Shigeo Kobayashi <shigeo@tinyforest.jp>
- * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir#collect_file):
- load expanded path. fixed: [ruby-dev:29621]
+ * ext/bigdecimal/bigdecimal.c: BigDecimal("-.31") is now
+ treated as ("-0.31") not as ("0.31").
-Mon Oct 2 15:47:55 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Mar 16 18:05:40 2007 Akinori MUSHA <knu@iDaemons.org>
- * instruby.rb: batfile should be CRLF'ed.
+ * lib/cgi.rb (CGI::header): IIS >= 5.0 does not need the nph
+ assumption any more; submitted by MIYASAKA Masaru <alkaid AT
+ coral.ocn.ne.jp> in [ruby-dev:30537].
-Mon Oct 2 01:24:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Mar 13 17:29:43 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
- * common.mk (test-all): separate directory where running test cases
- from source tree.
+ * stable version 1.8.5-p35 released.
- * lib/test/unit/autorunner.rb (options): added --basedir, --workdir
- and --load-path options.
+Tue Mar 13 14:42:10 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
- * lib/test/unit/collector/dir.rb (recursive_collect, collect_file):
- base directory support.
+ * test/fileutils/fileasserts.rb: Fix wrong error message.
-Sun Oct 1 23:56:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/fileutils.rb (FileUtils::mv): Type Error; should utilize
+ Strings instead of Symbols here.
- * Makefile.in, common.mk, ext/extmk.rb, win{32,ce}/Makefile.in: keep
- LIBRUBY_SO unless need to be removed.
+Mon Mar 12 17:22:44 2007 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Oct 1 23:12:19 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/fileutils.rb (FileUtils::mv): fix incomplete backport of
+ FileUtils.mv changes at r11988
- * lib/optparse.rb (OptionParser#make_switch): pass arguments directly.
+Mon Mar 12 16:09:28 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Sep 30 15:11:26 2006 Tadayoshi Funaba <tadf@dotrb.org>
+ * mkconfig.rb (patchlevel): read from version.h.
- * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.4.
+Sun Mar 11 18:57:50 2007 Akinori MUSHA <knu@iDaemons.org>
-Fri Sep 29 13:18:24 2006 Akinori MUSHA <knu@iDaemons.org>
+ * misc/README: Add a note about ruby-electric.el.
- * ext/digest/lib/digest.rb (Digest): Require digest.so and fix the
- breakage. Point out by NAKAMURA Usaku in [ruby-dev:29619].
+ * misc/ruby-mode.el (ruby-non-block-do-re): Fix
+ ruby-non-block-do-re. [ruby-core:03719]
-Fri Sep 29 12:11:04 2006 WATANABE Hirofumi <eban@ruby-lang.org>
+ * misc/inf-ruby.el: Synchronize the comment section with trunk.
- * jcode.rb (succ!): call original succ! if $KCODE == 'n'.
- fixed: [ruby-talk:216845]
+ * misc/README, misc/rdebug.el: Add rdebug.el, Emacs ruby-debug
+ interface based on rubydb3x.el; submitted by Martin Nordholts
+ <enselic AT gmail.com> in [ruby-bugs:PR#9023].
-Fri Sep 29 11:43:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Mar 11 17:45:51 2007 Akinori MUSHA <knu@iDaemons.org>
- * lib/mkmf.rb (try_func): revert fallback checking undeclared function.
- fixed: [ruby-core:08949]
+ * ext/dl/mkcallback.rb (mkfunc): Make sure that a callback
+ function is found in the function table before trying to call
+ it; submitted by sheepman <sheepman AT sheepman.sakura.ne.jp>
+ in [ruby-dev:30524].
-Fri Sep 29 09:56:56 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Mar 6 18:58:37 2007 Keiju Ishitsuka <keiju@ruby-lang.org>
+
+ * lib/shell/process-controller.rb: fix thread synchronization
+ problem for [ruby-dev:30477].
+
+Sun Mar 4 23:53:27 2007 Minero Aoki <aamine@loveruby.net>
- * ext/extmk.rb: extout is needed for also clean.
- fixed: [ruby-core:08944]
+ * lib/fileutils.rb (mv): could not move a directory between
+ different filesystems. [ruby-dev:30411]
- * lib/optparse.rb (OptionParser::Switch#conv_arg): unsplat by
- Proc#call if no conversion is given.
+Sat Mar 3 21:41:31 2007 Akinori MUSHA <knu@iDaemons.org>
-Thu Sep 28 23:59:31 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (stack_check): Unset inline to fix build with GCC 3.4.6;
+ submitted by: NISHIMATSU Takeshi <t_nissie AT yahoo.co.jp> in
+ [ruby-list:43218].
+ cf. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24556
- * node.h (struct thread): declare win32_exception_list on cygwin and
- win32 regardless if it is implemented. Provisional fix for
- [ruby-core:08917].
+Sat Mar 3 16:30:39 2007 Akinori MUSHA <knu@iDaemons.org>
-Thu Sep 28 20:49:20 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+ * env.h (SCOPE_CLONE): Introduce a new scope flag to prevent a
+ local_tbl region from getting freed many times; submitted by
+ Chikanaga Tomoyuki <chikanag AT nippon-control-system.co.jp> in
+ [ruby-dev:30460].
- * lib/tmpdir.rb: use return value of getdir.call for length.
+ * eval.c (proc_invoke): Ditto.
-Wed Sep 27 22:08:16 2006 Akinori MUSHA <knu@iDaemons.org>
+ * gc.c (obj_free): Ditto.
- * ext/digest/md5/md5init.c (Init_md5): Now that we have digest.rb,
- require "digest" rather than "digest.so".
+ * parse.y (top_local_setup_gen): Ditto.
- * ext/digest/rmd160/rmd160init.c (Init_rmd160): Ditto.
+Sat Mar 3 15:41:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/digest/sha1/sha1init.c (Init_sha1): Ditto.
+ * parse.y (stmt, arg): should not omit lhs of OP_ASGN1 even if
+ empty. [ruby-dev:30452]
- * ext/digest/sha2/sha2init.c (Init_sha2): Ditto.
+Wed Feb 28 20:51:32 2007 URABE Shyouhei <shyouhei@ruby-lang.org>
-Wed Sep 27 21:21:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * pack.c (pack_unpack): properly ignore non-base64 octets such as
+ UTF-8 encoded BOMs; submitted by SOUMA Yutaka <holon@radastery.jp>
+ to fix [ruby-core:10437]
- * string.c (rb_str_startwith): rename startwith? to start_with?,
- endwith? to endwith?, respectively. [ruby-talk:216685]
+Wed Feb 28 00:08:11 2007 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
-Wed Sep 27 13:29:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * mkconfig.rb (RbConfig): add CONFIG['PATCHLEVEL']
- * lib/cgi.rb (CGI::TagMaker::nOE_element_def): replace to_s by
- join. some other methods as well. [ruby-dev:29613]
+ * common.mk: new target dist
-Wed Sep 27 01:04:49 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * distruby.rb: new file
- * lib/mkmf.rb (try_func): check function pointer first and macro next.
+Tue Feb 27 21:19:35 2007 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/mkmf.rb (have_type): simplified with typedef and sizeof.
+ * win32/win32.c (set_pioinfo_extra): new function for VC++8 SP1
+ workaround. [ruby-core:10259]
-Wed Sep 27 00:08:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * win32/win32.c (NtInitialize): call above function.
- * array.c (rb_ary_shift): shift/unshift performance boost patch,
- based on the patch from Eric Mahurin <eric_mahurin at yahoo.com>.
- [ruby-core:05861]
+Mon Feb 26 09:57:58 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
- * array.c (rb_ary_unshift_m): ditto.
+ * signal.c (ruby_signal): don't set SA_RESTART. a backport from
+ the HEAD. [ruby-talk:220937] [ruby-talk:147220]
- * array.c (ary_make_shared): ditto.
+Tue Feb 13 02:21:12 2007 Sam Roberts <sroberts@uniserve.com>
- * array.c (RESIZE_CAPA): ditto.
+ * io.c (rb_f_syscall): Fix buffer overflow with syscall
+ arguments. [ruby-bugs:PR#8541]
- * array.c (rb_ary_free): new function to free memory. code moved
- from gc.c.
+Sat Feb 10 09:33:47 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * string.c (rb_str_free): ditto.
+ * ext/win32ole/win32ole.c (ole_variant2val): sorry, fix the enbug.
-Tue Sep 26 23:57:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 10 09:08:01 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * lib/optparse.rb (OptionParser#getopts): use strings as key.
- fixed: [ruby-dev:29614]
+ * ext/win32ole/win32ole.c (ole_variant2val): fix compile error
+ on VC++.
-Tue Sep 26 15:29:55 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Feb 10 08:38:30 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * {win32,wince}/Makefile.sub (CPP): check predefined value.
+ * ext/win32ole/win32ole.c (ole_variant2val): fix the bug when
+ SAFEARRAY pointer is NULL.
-Tue Sep 26 07:55:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Tue Feb 6 20:41:39 2007 NAKAMURA Usaku <usa@ruby-lang.org>
- * array.c (rb_ary_shift): should not move memory region if array
- body is shared. a patch from Kent Sibilev <ksruby at gmail.com>.
- [ruby-core:08922]
+ * string.c (rb_str_sub_bang): calling rb_str_modify() should be just
+ before actually modifying the string.
+ fixed: [ruby-dev:30211] (originally reported by zunda)
-Mon Sep 25 23:10:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Sat Jan 27 15:20:11 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
- * dir.c (rb_push_glob): need not to check by FilePathValue().
- [ruby-dev:29599]
+ * parse.y (dyna_var_lookup): should not alter dvar->val not to
+ destroy living value. [ruby-core:10076]
- * dir.c (dir_globs): ditto.
+ * parse.y (dyna_init): ditto.
-Mon Sep 25 22:26:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jan 24 18:05:39 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
- * file.c (rb_path_end): skip root directory. fixed: [ruby-core:08913]
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): fix
+ regexp font-lock bug. [ruby-talk:235758]
- * lib/mkmf.rb (rm_f): get rid of NUL.
+Sun Jan 14 07:26:44 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * lib/mkmf.rb (init_mkmf): set default $LDFLAGS. Patch by Michal
- Suchanek <hramrach at centrum.cz>. [ruby-talk:216256]
+ * ext/win32ole/win32ole.c (ole_free, ole_type_free,
+ olemethod_free, olevariable_free, oleparam_free,
+ ole_event_free): fix memory leak. [ruby-core:09846]
-Mon Sep 25 15:06:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Tue Jan 9 12:29:20 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sample/test.rb: "print nil" now prints empty string.
+ * ext/etc/etc.c (etc_getpwuid, etc_getgrgid): fix to correctly
+ convert uid/gid from VALUE.
- * test/ruby/test_system.rb (TestSystem::test_system): ditto.
+ * ext/etc/etc.c (etc_getpwuid): ditto.
-Mon Sep 25 11:26:25 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Mon Dec 25 20:08:28 2006 URABE Shyouhei <shyouhei@ruby-lang.org>
- * hash.c (recursive_hash): remove unused local variable.
+ * ext/openssl/ossl.h: fixed compilation problem on gcc 3.2.
+ [ruby-talk:214786]
- * parse.y (parser_yylex): ditto.
+Mon Dec 25 10:40:40 2006 URABE Shyouhei <shyouhei@ruby-lang.org>
- * parse.y (rb_gc_mark_symbols): fix unmatched prototype .
+ * stable version 1.8.5-p12 released.
- * file.c (rb_get_path): check NUL byte in the path string.
+Sat Dec 16 04:02:10 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-Mon Sep 25 08:14:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * ext/tk/tcltklib.c: shouldn't run the killed thread at callback.
+ [ruby-talk: 227408]
- * array.c (rb_ary_shift): should clear shifting top element.
- [ruby-talk:216055]
+Fri Dec 15 17:21:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * array.c (rb_ary_shift): avoid creating shared object if array
- size is small.
+ * lib/rdoc/ri/ri_options.rb: prevent NameError. [ruby-dev:29597]
-Mon Sep 25 08:11:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Dec 14 23:37:38 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * random.c (rb_f_rand): RDoc typo fix. a patch from Frederick
- Cheung <fred at 82ask.com>. [ruby-talk:216047]
+ * dir.c (glob_helper): get rid of possible memory leak.
-Sun Sep 24 21:19:24 2006 Guy Decoux <ts@moulon.inra.fr>
+ * win32/win32.c (cmdglob, rb_w32_cmdvector, rb_w32_opendir,
+ rb_w32_get_environ): not to use GC before initialization.
- * gc.c (gc_mark_children): NODE_POSTEXE holds Ruby VALUE.
- [ruby-core:08912]
+Wed Dec 6 19:53:41 2006 WATANABE Hirofumi <eban@ruby-lang.org>
-Sun Sep 24 22:28:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (SITE_DIR): fixed to emtpy RUBY_SITE_LIB in config.h on
+ NetBSD. fixed: [ruby-dev:29358]
- * runruby.rb: extension library scripts moved into common directory.
+Mon Dec 4 10:43:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-Sun Sep 24 12:10:04 2006 Tadayoshi Funaba <tadf@dotrb.org>
+ * parse.y (dyna_init_gen): dvar initialization only if dvar is
+ assigned inner block. [ruby-talk:227402]
- * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.3.
+Mon Dec 4 10:22:26 2006 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
-Sun Sep 24 06:55:36 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * stable version 1.8.5-p2 released.
- * io.c (rb_io_print): no special handling for nil as well as puts.
- fixed: [ruby-dev:29586]
+Sun Dec 3 17:11:12 2006 Shugo Maeda <shugo@ruby-lang.org>
-Sun Sep 24 06:25:53 2006 why the lucky stiff <why@ruby-lang.org>
+ * lib/cgi.rb (CGI::QueryExtension::read_multipart): should quote
+ boundary. JVN#84798830
- * eval.c (rb_thread_save_context, rb_thread_restore_context):
- sandbox hook to save and restore sandbox state.
+Sun Nov 26 16:36:46 2006 URABE Shyouhei <shyouhei@ruby-lang.org>
- * eval.c (thread_no_ensure): added THREAD_NO_ENSURE thread flag.
+ * version.h: addition of RUBY_PATCHLEVEL.
+ * version.c: ditto.
- * eval.c (rb_thread_kill_bang): Thread#kill! uses the above flag
- to circumvent ensure, in order to prevent endless loops.
- contributed by MenTaLguY. [ruby-core:08768]
+Fri Nov 24 10:17:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * eval.c (rb_thread_kill): fix Thread#kill docs, which returns
- the thread object in all cases.
+ * bignum.c (bignorm): avoid segmentation. a patch from Hiroyuki
+ Ito <ZXB01226@nifty.com>. [ruby-list:43012]
- * node.h: expose the rb_jmpbuf_t and rb_thread_t structs, along
- with the thread flags. used by the sandbox extension.
+Thu Nov 2 15:43:39 2006 NAKAMURA Usaku <usa@ruby-lang.org>
- * ruby.h: extern rb_eThreadError, so sandbox can swap it.
+ * parse.y (primary): should set NODE even when compstmt is NULL.
+ merge from trunk. fixed: [ruby-dev:29732]
Sat Sep 23 21:34:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/cgi.rb (CGI::QueryExtension::read_multipart): CGI content
may be empty. a patch from Jamis Buck <jamis at 37signals.com>.
-Sat Sep 23 20:54:28 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * oniguruma.h: Version 4.4.4
-
- * regexec.c: ditto.
-
- * regcomp.c ditto.
-
-Sat Sep 23 08:35:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/rdoc/ri/ri_options.rb: prevent NameError. [ruby-dev:29597]
-
-Sat Sep 23 01:02:57 2006 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.2.
-
-Fri Sep 22 18:07:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_partition): no need to call rb_call_super(),
- since String is no longer includes Enumerable.
-
-Fri Sep 22 17:33:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (rb_hash_eql): new method to be used by Hash.
-
- * hash.c (rb_hash_hash): ditto.
-
-Fri Sep 22 06:53:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (rb_big_hash): use rb_memhash().
-
- * numeric.c (flo_hash): simplified. klass need not to affect
- resulting hash value.
-
-Fri Sep 22 02:06:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * .cvsignore: ignore timestamp files and installed list file.
-
-Fri Sep 22 01:36:34 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * instruby.rb: include FileUtils unconditionally.
-
-Fri Sep 22 00:36:05 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * numeric.c (Init_Numeric): fix_odd_p and fix_even_p are for Fixnum.
- patch from Ondrej Bilka <neleai at seznam.cz>. [ruby-core:08904]
-
-Thu Sep 21 22:56:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (no-install): not install rdoc actually.
-
- * common.mk (install-doc, no-install-doc): use instruby.rb.
-
- * instruby.rb: rdoc installation.
-
- * ext/extmk.rb: expand ruby executable names.
-
-Thu Sep 21 20:19:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (str_new3): embed shorter strings more eagerly.
-
-Thu Sep 21 17:44:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_startwith): a new method to check if a string
- starts with given prefix.
-
- * string.c (rb_str_endwith): the opposite of String#startwith?.
-
-Thu Sep 21 16:29:02 2006 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * rubytest.rb: use each_line instead of each.
-
-Thu Sep 21 15:06:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * numeric.c (int_odd_p): a new method to check even or odd.
- [RCR#337]
-
- * numeric.c (int_even_p): ditto.
-
-Thu Sep 21 13:55:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/etc/etc.c (etc_getpwuid): uid integer should be wraped in
- uid_t value. [ruby-core:08897]
-
- * ext/etc/etc.c (etc_getpwuid): uid_t may be bigger than plain
- 'int' type.
-
-Thu Sep 21 10:07:09 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_partition): RDoc typo fixed. [ruby-core:08898]
-
- * string.c (rb_str_rpartition): fixed separation seek bug.
-
-Thu Sep 21 09:38:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_lines): new method to split a string into lines.
-
- * string.c (Init_String): Strings are no longer Enumerable. use
- each_line or lines method explicitly.
-
- * string.c (Init_String): remove each method. use each_lines.
-
-Wed Sep 20 23:17:41 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (pre-install-doc): create data directory before install.
-
- * lib/mkmf.rb (dir_re): fixed typo.
-
- * lib/mkmf.rb (install_dirs): remove extra slash.
-
-Wed Sep 20 22:41:45 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * numeric.c (fix_mul): typo again. patch from Tadashi Saito
- <shiba at mail2.accsnet.ne.jp>. fixed: [ruby-core:08893]
-
-Wed Sep 20 19:32:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_partition): a new method to separate the string
- by a separator. taken from Python 2.5.
-
- * string.c (rb_str_rpartition): ditto.
-
-Wed Sep 20 09:49:40 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * {bcc32,win32,wince}/Makefile.sub (INSTALLED_LIST): need to define
- this macro to install.
-
-Wed Sep 20 09:43:10 2006 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb: allow extra spaces in responses.
- Thanks, Tom Soderlund.
-
-Wed Sep 20 09:25:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/gdbm/gdbm.c: add RDoc documentation. a patch from Peter
- Adolphs <futzilogik at users dot sourceforge dot net>.
- [ruby-doc:1223]
-
-Tue Sep 19 00:42:15 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * object.c (rb_obj_ivar_defined, rb_mod_cvar_defined): new methods,
- Kernel#instance_variable_defined? and Module#class_variable_defined?.
- [ruby-dev:29587]
-
- * lib/date/format.rb (Date::Bag#method_missing): use new method,
- instance_variable_defined? to check if an instance variable is
- defined. fixed: [ruby-dev:29554]
- -- This didn't fix anything.
-
-Tue Sep 19 00:07:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (sym_eql): fail early to gain performance.
-
- * string.c (sym_hash): cache hash value in aux.shared if possible.
-
- * gc.c (rb_obj_id): no need to treat symbols specially.
-
- * lib/fileutils.rb (FileUtils::FileUtils): singleton_methods() no
- longer return an array of strings, but of symbols.
-
- * lib/delegate.rb (DelegateClass): ditto.
-
-Mon Sep 18 15:29:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * dir.c (dir_s_glob): restore GC protection volatile variable.
- [ruby-dev:29588]
-
- * re.c (rb_reg_regcomp): ditto.
-
-Mon Sep 18 12:16:48 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * numeric.c (fix_mul): get rid of shift overflow.
-
-Mon Sep 18 10:47:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * dir.c (dir_s_glob): remove unused variable.
-
- * math.c (math_log): ditto.
-
- * re.c (rb_reg_regcomp): ditto.
-
- * eval.c (break_jump): ditto.
-
- * eval.c (rb_thread_yield_0): remove unused function.
-
-Sun Sep 17 23:44:58 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/rdoc.rb (RDoc::RDoc#document): scan only files modified
- after the previous generation.
-
-Sun Sep 17 17:42:13 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (install-doc): reverted.
-
- * instruby.rb: stores file name list without destdir prefix.
-
- * lib/rdoc/generators/ri_generator.rb: do not chdir twice.
-
-Sun Sep 17 10:42:10 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * numeric.c (fix_mul): fixed typo. fixed: [ruby-core:08885]
-
-Sat Sep 16 19:47:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * README.EXT: should mention new macros: RSTRING_PTR, RSTRING_LEN,
- RARRAY_PTR, RARRAY_LEN.
-
- * README.EXT.ja: ditto.
-
-Sat Sep 16 16:39:23 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in, common.in, instruby.rb, ext/extmk.rb, lib/mkmf.rb:
- use instruby.rb to install extensions instead of ext/extmk.rb.
-
- * instruby.rb: store installed list into the file.
-
- * ext/dbm/extconf.rb: allow multiple candidates for dbm-type.
-
- * ext/io/wait/extconf.rb: suspicious checking_for.
-
- * ext/pty/pty.c (establishShell): parent pid is not used.
-
- * ext/pty/pty.c (freeDevice): not used.
-
- * lib/mkmf.rb (checking_for): improved the messages.
-
-Sat Sep 16 11:03:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (ary_shared_first): should create embedded copies
- instead of sharing memory region for smaller arrays.
-
-Sat Sep 16 09:37:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * struct.c (inspect_struct): do not display a class name for
- anonymous struct. The member fields are sufficient.
-
-Fri Sep 15 20:22:15 2006 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf-8/nkf.c: imported nkf 2.0.8 rev.110.
- * Fix: check_bom cuts \xfe\xff\xXX\xXX of UTF-32LE.
- * Add support --ic=UTF-32.
- * Fix: can't guess UTF-16 and UTF-32.
- * Fix: can't decode beyond BMP of UTF-16LE.
-
- * ext/nkf/nkf.c (guess): Support UTF-32.
-
- * ext/nkf/lib/kconv.rb (kconv): Support UTF-32.
-
- * ext/nkf/lib/kconv.rb (to_utf32): new method.
-
-Fri Sep 15 05:23:24 2006 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf-8/nkf.c: imported nkf 2.0.8 2006-09-15.
- Add support for U+10000 - U+10FFFF
- Add support UTF-32
-
-Fri Sep 15 00:03:07 2006 Tanaka Akira <akr@fsij.org>
-
- * ext/digest/lib/digest.rb (Digest::Base.file): open a file in binary
- mode. suggested by Kazuhiro NISHIYAMA. [ruby-dev:29579]
-
-Thu Sep 14 17:21:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * numeric.c (fix_mul): avoid bignum multiplication as far as
- possible. a patch from Ondrej Bilka <neleai at seznam.cz>.
- [ruby-core:08825]
-
-Thu Sep 14 16:34:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_intern): allow zero length symbols.
- [ruby-core:08861]
-
-Thu Sep 14 16:11:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_intern): raise SecurityError only when $SAFE
- level is greater than zero. [ruby-core:08862]
-
- * parse.y (rb_interned_p): new function to check if a string is
- already interned.
-
- * string.c (str_to_id): use rb_str_intern().
-
-Thu Sep 14 14:37:45 2006 Tanaka Akira <akr@fsij.org>
-
- * ext/digest/lib/digest.rb (Digest::Base.file): new method.
- [ruby-dev:29572]
-
-Thu Sep 14 08:30:02 2006 Tanaka Akira <akr@fsij.org>
-
- * ext/digest/digest.c (rb_digest_base_inspect): new method.
- [ruby-dev:29573]
-
-Thu Sep 14 01:13:56 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * gc.c (ruby_init_stack): decrease "stack level too deep" in Windows.
- [ruby-dev:29569]
-
-Thu Sep 14 01:02:25 2006 Tanaka Akira <akr@fsij.org>
-
- * ext/digest/lib/digest.rb: new file.
- [ruby-dev:28689]
-
-Wed Sep 13 18:43:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * README.EXT: English adjustment. [ruby-core:08851] and
- [ruby-core:08852]
-
-Wed Sep 13 18:25:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-parse-partial): better here-doc support.
- a patch from Marshall T. Vandegrift <llasram at gmail.com>.
- [ruby-core:08804]
-
-Wed Sep 13 16:43:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_intern): prohibit interning tainted string.
-
-Wed Sep 13 01:14:02 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser#getopts): works with pre-registered
- options. [ruby-core:08826]
-
-Tue Sep 12 03:58:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (rb_hash_compare_by_identity): rename Hash#identical to
- Hash#compare_by_identity.
-
-Mon Sep 11 16:52:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (rb_hash_identical): a new method to make a hash to
- compare keys by their identity.
-
- * hash.c (rb_hash_identical_p): new method to tell if a hash is
- identical or not.
-
- * st.c (st_numcmp, st_numhash): export hash type functions.
-
-Mon Sep 11 11:42:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/rexml/source.rb (REXML::Source::encoding): should not
- convert the body twice. [ruby-core:08828]
-
- * lib/rexml/encoding.rb (REXML::Encoding::encoding):
- Encoding#encoding= to return boolean value to tell if the body
- is really converted or not.
-
- * lib/rexml/encoding.rb (REXML::Encoding::encoding): Specific
- conversion library (e.g. rexml/encodings/UTF-16.rb) to have
- higher preceding.
-
- * lib/rexml/encodings/UTF-16.rb (REXML::Encoding::decode_utf16):
- UTF-16#decode_utf16 should work strings without BOM.
-
-Mon Sep 11 07:39:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (sym_equal): "sym == str" should compare them as
- strings. [ruby-dev:29554]
-
-Sun Sep 10 22:59:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * instruby.rb (parse_args): remove splat.
-
-Sun Sep 10 20:25:30 2006 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.1.
-
-Sun Sep 10 09:41:29 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c: ISPRINT() needs ctype.h
-
-Sun Sep 10 09:19:47 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb: splat parsed arguments.
-
-Tue Jan 10 09:18:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_require_safe): prevent extension from loading twice.
- fixed: [ruby-dev:29523]
-
-Sat Sep 9 23:55:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * file.c (rb_f_test): test(0) should not have any special
- meaning. [ruby-dev:29425]
-
- * file.c (rb_f_test): properer error message.
-
-Sat Sep 9 14:08:38 2006 Eric Hodel <drbrain@segment7.net>
-
- * lib/test/unit/testcase.rb (Test::Unit::TestCase#run): Rescue
- Exception in Test::Unit::TestCase#run. [ruby-core:08783]
-
-Sat Sep 9 04:55:59 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/pstore.rb: open all in binary mode, and get rid of the quirk of
- msvcrt. fixed: [ruby-dev:29518]
-
-Sat Sep 9 04:47:45 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in, win32/Makefile.sub (MINIRUBY): append MINIRUBYOPT.
-
- * mkconfig.rb, ext/extmk.rb, lib/mkmf.rb, win32/mkexports.rb: suppress
- warnings with $VERBOSE.
-
- * win32/resource.rb: only file which has more than one icon is DLL.
-
-Fri Sep 8 16:53:30 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (str_alloc): should allocate a String object, even when
- asked to allocate a Symbol object. [ruby-dev:29529]
-
-Fri Sep 8 16:36:27 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/extmk.rb (extmake): follow Array#to_s.
-
- * lib/mkmf.rb (create_makefile): ditto.
-
- * win32/resource.rb: ditto.
-
-Fri Sep 8 10:00:12 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/cookie.rb (WEBrick::Cookie.parse_set_cookies): new
- method to parse multiple cookies per Set-Cookie header.
- Thanks to Aaron Patterson <aaron_patterson at speakeasy.net>.
- [ruby-core:08802]
-
-Fri Sep 8 08:59:30 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/Makefile.sub, win32/configure.bat win32/setup.mak: program
- name transform.
-
-Fri Sep 8 08:25:39 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb: suppress `assigning void value' warning.
-
-Fri Sep 8 01:16:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (Init_Array): #to_s to be an alias to #inspect.
- [ruby-dev:29520]
-
- * hash.c (Init_Hash): ditto.
-
- * lib/mkmf.rb (create_makefile): replace "print array" by
- "print *array".
-
- * mkconfig.rb: ditto.
-
-Thu Sep 7 21:02:56 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (nil_to_s): returns the empty string again.
- [ruby-dev:29520]
-
-Thu Sep 7 23:27:05 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (path_check_0, fpath_check): disable path check on cygwin.
- [ruby-talk:213074]
-
-Thu Sep 7 02:03:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * time.c (time_to_s): adopt new date format using digits
- e.g. "2006-09-07 02:03:45 +9000".
-
-Thu Sep 7 01:54:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (sym_equal): override. check equivalence.
-
-Wed Sep 6 13:25:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (symbols_i): need to initialize early-created symbols.
- [ruby-dev:29496]
-
-Wed Sep 06 12:05:19 2006 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/lib/kconv.rb (Kconv::toeuc): remove -m0 [ruby-dev:29505]
-
-Tue Sep 5 22:06:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/tk/tcltklib.c: use rb_ary_new3() since RARRAY_LEN() is not l-value.
-
- * ext/tk/tkutil/tkutil.c: use RARRAY_PTR() and RARRAY_LEN() and etc.
- fixed: [ruby-dev:29473]
-
-Tue Sep 5 06:47:22 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * time.c (time_to_s): variable declaration after an execution
- statement.
-
-Tue Sep 5 05:49:41 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (path_check_0): check if sticky bit is set on parent
- directories for executable path. fixed: [ruby-dev:29415]
-
-Tue Sep 5 05:03:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * numeric.c (fix_plus): addition in Fixnum will never overflow
- long. a patch from Ondrej Bilka <neleai at seznam.cz>.
- [ruby-core:08794]
-
- * numeric.c (fix_minus): ditto.
-
- * bignum.c (rb_big_pow): eagerly truncate resulting bignum.
- [ruby-core:08794]
-
-Mon Sep 4 23:15:34 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * time.c (time_to_s): make it conform to RFC2822 date format.
- [ruby-dev:29467]
-
Mon Sep 4 21:43:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/dbm/extconf.rb: create makefile according to the result of check
for dbm header. fixed: [ruby-dev:29445]
-Mon Sep 4 21:39:42 2006 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb, lib/date/format.rb: updated based on date2 3.9.
-
-Mon Sep 4 21:14:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * time.c (time_strftime): include nul character. fixed: [ruby-dev:29422]
-
-Mon Sep 4 16:39:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/cgi.rb (CGI::out): specify -x option for nkf.
-
- * lib/cgi.rb (CGI::out): should not convert utf-8 implicitly using
- NKF. it is too Japanese centric.
-
-Mon Sep 4 14:23:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/dbm/extconf.rb (db_check): remove debug print.
-
-Mon Sep 4 06:46:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (rb_id2sym): intern if id is attrset_id.
- [ruby-dev:29420] [ruby-dev:29447]
-
-Mon Sep 4 01:25:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_f_local_variables): list symbols.
-
- * struct.c (rb_struct_s_members_m): ditto.
-
- * variable.c (ivar_i): ditto.
-
- * variable.c (gvar_i): ditto.
-
- * variable.c (cv_i): ditto.
-
-Sun Sep 3 20:47:02 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.h (SYMBOL_P): Qnil and Qfalse are not Symbol.
-
-Sun Sep 3 15:32:44 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb: get rid of nil.to_s.
-
-Sun Sep 3 06:24:38 2006 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/socket.c (ruby_connect): sockerrlen should be socklen_t.
-
-Sun Sep 3 04:40:42 2006 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/extconf.rb: check arpa/inet.h for ntohs.
-
- * ext/socket/socket.c: include arpa/inet.h if available.
-
-Sat Sep 2 23:59:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (Init_String): undef Symbol#new.
-
- * struct.c (rb_struct_s_def): wrong symbol detection.
-
-Sat Sep 2 23:59:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (str_to_id): a bug caused by premature optimization.
-
-Sat Sep 2 23:53:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (Init_Object): move symbol related code to string.c
-
- * string.c (Init_String): Symbol as subclass of String.
-
- * parse.y (rb_intern2): handle symbol as strings.
-
- * string.c (str_new): substring of symbols are mere strings, not
- symbols.
-
-Sat Sep 2 23:37:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ruby.h (struct RArray): embed small arrays.
- (RARRAY_LEN): defined for accessing array members.
- (RARRAY_PTR): ditto.
-
- * array.c: use RARRAY_LEN and RARRAY_PTR.
-
-Sat Sep 2 13:23:01 2006 Tanaka Akira <akr@fsij.org>
-
- * common.mk (ia64.o): use the compiler driver to assemble ia64.s
- to use appropriate ABI.
-
-Sat Sep 2 12:06:35 2006 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/soap/generator.rb (SOAP::SOAPGenerator#encode_tag): do not dump
- XML attribute which value is nil. value "" and nil both were dumped
- as 'attr="value"'. [ruby-dev:29395]
-
-Sat Sep 2 11:47:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_eval): should handle when in else clause. a patch
- from Eric Hodel <drbrain at segment7.net>. [ruby-core:08662]
-
- * parse.y (primary): wrap with NODE_CASE. [ruby-core:08663]
-
-Sat Sep 2 12:00:32 2006 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/csv.rb (CSV::IOReader#initialize): use String#[](pos, len)
- instead of String#[](idx) to check utf BOM. follows String#[](idx)
- behavior change of 1.9.
-
-Sat Sep 2 11:47:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_eval): should handle when in else clause. a patch
- from Eric Hodel <drbrain at segment7.net>. [ruby-core:08662]
-
- * parse.y (primary): wrap with NODE_CASE. [ruby-core:08663]
-
-Fri Sep 1 22:07:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ruby.h (RSTRING_EMBED_LEN_MASK): uses 5 bits to support 64bit
- environment. [ruby-dev:29369]
-
-Fri Sep 1 22:02:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_resize): should copy embedded string to
- malloc'ed buffer. a patch from <nobu at ruby-lang.org> in
- [ruby-dev:29369]. fixed: [ruby-dev:29368]
-
- * string.c (rb_str_ord): use %ld specifier since STRING_LEN() is a
- long. [ruby-dev:29369]
-
-Fri Sep 1 21:41:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/socket/socket.c (socks_init): typo fixed. a patch from Sven
- Klemm <sven at c3d2.de>. [ruby-core:08770]
-
-Fri Sep 1 14:22:42 2006 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * array.c (rb_ary_shuffle): RDoc fixed.
-
-Fri Sep 1 13:52:57 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/tk/font.rb: TkFont#current_configinfo() doesn't work
- on Tcl/Tk8.x.
-
-Fri Sep 1 09:32:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/irb/ruby-lex.rb (RubyLex::getc): should not push nil into
- reading buffer (@readed). reported in
- <http://jarp.does.notwork.org/diary/200608c.html#200608311>.
-
-Thu Aug 31 23:59:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (configuration): follow nil.to_s.
-
-Thu Aug 31 20:50:46 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/mkmf.rb (create_makefile): follow nil.to_s.
-
- * win32/resource.rb: ditto.
-
-Thu Aug 31 20:21:47 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * eval.c (search_required): use RSTRING_PTR and RSTRING_STR.
-
- * file.c (test_identical, rb_file_s_truncate): ditto.
-
- * io.c (pipe_open, rb_io_reopen): ditto.
-
- * object.c (nil_plus): ditto.
-
- * process.c (proc_spawn_n, rb_spawn): ditto.
-
- * util.c (ruby_add_suffix): ditto.
-
- * ext/Win32API/Win32API.c (Win32API_initialize): ditto.
-
- * ext/dl/cptr.c (rb_dlptr_s_to_ptr): ditto.
-
- * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext): ditto.
-
- * ext/tk/stubs.c, ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: ditto.
-
- * ext/win32ole/win32ole.c (ole_val2olevariantdata): ditto.
-
-Thu Aug 31 18:23:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ruby.h (struct RString): embed small strings.
- (RSTRING_LEN): defined for accessing string members.
- (RSTRING_PTR): ditto.
-
- * string.c: use RSTRING_LEN and RSTRING_PTR.
-
-Thu Aug 31 17:16:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (rb_ary_shuffle_bang): new method.
-
- * array.c (rb_ary_shuffle): ditto.
-
- * random.c (genrand_real): ditto.
-
- * random.c (genrand_int32): export the function.
-
- * random.c (Init_Random): initialize random seed at the
- beginning.
-
-Thu Aug 31 13:12:06 2006 why the lucky stiff <why@ruby-lang.org>
-
- * eval.c (ruby_init): rename top_cref to ruby_top_cref and export,
- along with ruby_cref, for use by the sandbox. [ruby-core:08762]
-
- * node.h: ditto.
-
-Wed Aug 30 12:01:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * numeric.c (flo_hash): improve collision.
-
- * string.c (rb_memhash): new generic function to calculate hash value
- for memory chunk.
-
Tue Aug 29 19:10:10 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* hash.c (rb_hash_s_create): fixed memory leak, based on the patch
by Kent Sibilev <ksruby at gmail.com>. fixed: [ruby-talk:211233]
-Mon Aug 28 11:29:46 2006 Eric Hodel <drbrain@segment7.net>
-
- * eval.c, parse.y: Revert.
- * ext/.document: Add digest.c.
- * ext/digest/digest.c: Make RDoc show up.
- * ext/io/wait.c: Fix call-seq in RDoc.
-
-Mon Aug 28 08:03:20 2006 Eric Hodel <drbrain@segment7.net>
-
- * ext/.document: Add C files with RDoc.
- * ext/digest/digest.c: Convert to RDoc.
- * ext/io/wait.c: ditto.
- * lib/rdoc/parsers/parse_rb.rb: Fix typo. Submitted by
- <calamitas at gmail.com>. [ruby-core:08724]
+Fri Aug 25 17:15:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-Mon Aug 28 07:21:47 2006 Eric Hodel <drbrain@segment7.net>
-
- * file.c (File#size?): Fix documentation submitted by Rick Ohnemus.
- ruby-Bugs-5529. [ruby-core:08725]
-
-Sun Aug 27 21:41:23 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * oniguruma.h: Version 4.4.0
-
- * regint.h: ditto.
-
- * regparse.h: ditto.
-
- * regexec.c: ditto.
-
- * regcomp.c ditto.
-
- * regparse.c: ditto.
-
-Sat Aug 26 08:03:03 2006 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb, lib/date/format.rb: updated based on date2 3.8.2.
-
-Fri Aug 25 21:15:22 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * common.mk: add regint.h and oniguruma.h to dependence.
-
- * ext/strscan/depend: ditto.
-
-Fri Aug 25 20:35:57 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/wsdl/document/echo.rb: removed.
-
- * test/wsdl/document/test_rpc.rb: remove echo.rb after test.
- [ruby-dev:29337]
+ * stable version 1.8.5 released.
Fri Aug 25 17:02:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* gc.c (gc_sweep): typo fixed.
-Fri Aug 25 16:05:50 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * object.c (sym_call): check if the receiver is given.
-
-Fri Aug 25 01:10:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_Integer): Integer(nil) should raise TypeError.
- [ruby-talk:210205]
-
- * object.c (nil_to_s): no longer returns empty string but "nil".
- [ruby-talk:210205]
-
- * lib/mkmf.rb: avoid COMMON_HEADERS being nil.
-
-Wed Aug 23 00:25:14 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rexml/source.rb (REXML::IOSource#initialize): encoding have to
- be set with the accessor. fixed: [ruby-list:42737]
-
-Tue Aug 22 19:21:00 2006 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/smtp.rb: parameter `to_addrs' might be an Array,
- .flatten is required. [ruby-dev:29316]
-
Tue Aug 22 18:47:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::handle_method):
rdoc documents C module methods as instance methods. a patch in
- [ruby-core:08536].
-
-Tue Aug 22 12:35:57 2006 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/lib/kconv.rb (Kconv::RegexpEucjp): fix regexp for
- euc-jp [ruby-dev:29344]
+ [ruby-core:08536].
-Sun Aug 20 11:46:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Aug 19 14:15:02 2006 NAKAMURA Usaku <usa@ruby-lang.org>
- * numeric.c (num_step): also return an enumerator object if no block
- is given.
-
-Sat Aug 19 16:47:51 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c (hash2named_arg): accept hash argument
- of symbol key.
-
- * test/win32ole/test_win32ole.rb
- ditto.
+ * win32/Makefile.sub (config.status): include winsock2.h instead of
+ winsock.h when --with-winsock2 is specified.
+ fixed: [ruby-dev:29296]
Sat Aug 19 11:28:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_s_rename): use errno if set properly.
fixed: [ruby-dev:29293]
-Fri Aug 18 01:05:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Sat Aug 19 11:09:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * lib/cgi.rb (CGI::out): specify -m0 to disable MIME decode. a
- patch from Fujioka <fuj at rabbix.jp>. [ruby-dev:29284]
+ * parse.y (then): remove semicolon warning. [ruby-dev:29299]
Thu Aug 17 19:15:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -1893,98 +494,30 @@ Thu Aug 17 14:47:06 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb: added rdoc by Daniel Berger. [ruby-core:08177]
-Wed Aug 16 17:46:59 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * marshal.c (r_byte): IO#getc returns one byte string now.
- fixed: [ruby-dev:29255]
+Thu Aug 17 00:39:05 2006 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-Wed Aug 16 17:22:44 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * common.mk (pre-install-local): remove unnecessary code.
- [ruby-dev:29249]
+ * lib/rinda/ring.rb (do_reply): Fix for RingServer fails to find a
+ TupleSpace when TupleSpace resides in the same ruby process with
+ RingServer. a patch from Kent Sibilev. [ruby-core:08453]
Wed Aug 16 11:45:36 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* process.c (proc_setuid, proc_setgid, proc_seteuid, proc_setegid):
get rid of bogus implementations on Mac OS X.
+Tue Aug 15 19:10:18 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#find_class_comment): Fix
+ broken class-level documentation.
+
Wed Aug 16 11:09:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ruby.c (set_arg0): fill argv other than the first with an empty
string instead of NULL.
-Tue Aug 15 11:21:08 2006 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/smtp.rb: support SMTP/SSL. Thanks Kazuhiro NISHIYAMA.
-
- * lib/net/smtp.rb: new method SMTP.use_ssl?
-
- * lib/net/smtp.rb: new method SMTP.enable_ssl.
-
- * lib/net/smtp.rb: new method SMTP.disable_ssl.
-
- * lib/net/smtp.rb: new method SMTP.default_ssl_port.
-
- * lib/net/smtp.rb: new method SMTP.default_tls_port.
-
- * lib/net/smtp.rb: now SMTP#enable_tls accepts a SSLContext
- object, instead of a verity and cert. [FEATURE CHANGE]
-
- * lib/net/smtp.rb: new method SMTP.ssl_context.
+Wed Aug 16 11:08:00 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/net/smtp.rb: new method SMTP.default_ssl_context.
-
- * lib/net/smtp.rb: export SMTP.authenticate.
-
- * lib/net/smtp.rb: export SMTP.auth_plain.
-
- * lib/net/smtp.rb: export SMTP.auth_login.
-
- * lib/net/smtp.rb: export SMTP.auth_cram_md5.
-
- * lib/net/smtp.rb: export SMTP.starttls.
-
- * lib/net/smtp.rb: export SMTP.helo.
-
- * lib/net/smtp.rb: export SMTP.ehlo.
-
- * lib/net/smtp.rb: export SMTP.mailfrom.
-
- * lib/net/smtp.rb: export SMTP.rcptto.
-
- * lib/net/smtp.rb: export SMTP.rcptto_list.
-
- * lib/net/smtp.rb: export SMTP.data.
-
- * lib/net/smtp.rb: export SMTP.quit.
-
-Sat Aug 12 22:33:06 2006 Eric Hodel <drbrain@segment7.net>
-
- * string.c (String#split): Describe grouping behavior. Patch by Jan
- Svitok <jan.svitok at gmail.com>. [ruby-core:08603]
-
-Sun Aug 13 12:08:02 2006 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/socket.c: ANSIfied. [ruby-core:08601]
-
-Sat Aug 12 15:55:32 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in, bcc32/Makefile.sub, win32/Makefile.sub, win32/dir.h,
- win32/win32.c, win32/win32.h: large file support for win32.
-
-Fri Aug 11 15:39:25 2006 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#find_body): Make RDoc
- ignore C function prototypes. Patch by Tilman Sauerbeck
- <tilman at code-monkey.de>. [ruby-core:8574]
- * lib/yaml/tag.rb: Replace nodoc with stopdoc so Module methods get
- documented.
-
-Wed Aug 9 16:53:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/net/smtp.rb (Net::SMTP::auth_cram_md5): use ord to retrieve
- bytes from strings. a patch from WATANABE Tetsuya
- <Tetsuya.WATANABE at nifty.com>. [ruby-dev:29240]
+ * win32/win32.h: removed an excess macro. fixed: [ruby-dev:29258]
Tue Aug 8 23:49:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -1992,23 +525,17 @@ Tue Aug 8 23:49:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
RDoc. a patch from Eric Hodel <drbrain at segment7.net>.
[ruby-core:08522]
-Tue Aug 8 19:26:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Tue Aug 8 11:32:54 2006 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder::get_string):
- affected by str[0] returns 1 char string. [ruby-dev:29223]
-
- * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder::get_labels):
- ditto.
-
-Tue Aug 8 12:28:43 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (arg): allow newlines before ternary colon. [ruby-dev:29189]
+ * Makefile.in, common.mk, configure.in: fix for platforms without
+ rm. patches from Yutaka kanemoto <kinpoco at gmail.com>.
+ [ruby-dev:29215]
Mon Aug 7 17:56:59 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/bigdecimal/bigdecimal.c, ext/digest/rmd160/rmd160ossl.c,
ext/digest/sha1/sha1ossl.c, ext/readline/readline.c: move
- inclusion of config.h to pacify AIX. a patch from Yutaka
+ incluion of config.h to pacify AIX. a patch from Yutaka
Kanemoto <kinpoco at gmail.com>. [ruby-dev:29197]
Mon Aug 7 15:55:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -2025,58 +552,33 @@ Mon Aug 7 14:37:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
Mon Aug 7 12:05:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * dln.c, eval.c, gc.c, ruby.h: shut up AIX alloca warning.
- a patch from Yutaka Kanemoto <kinpoco at gmail.com>.
+ * dln.c, eval.c, gc.c, regex.c, ruby.h: shut up AIX alloca
+ warning. a patch from Yutaka Kanemoto <kinpoco at gmail.com>.
[ruby-dev:29191]
-Sun Aug 6 20:34:24 2006 Tadayoshi Funaba <tadf@dotrb.org>
+Sun Aug 6 20:40:41 2006 Tadayoshi Funaba <tadf@dotrb.org>
* lib/date/format.rb (str[fp]time): %[EO]U didn't denote %U.
-Sun Aug 6 17:12:12 2006 Tanaka Akira <akr@fsij.org>
-
- * io.c (io_reopen): STDERR.reopen(open("/dev/tty", "w")) should not
- clear FMODE_PREP in STDERR.
-
-Sat Aug 5 22:53:41 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * oniguruma.h: Version 4.2.2
-
- * regint.h: ditto.
-
- * regparse.h: ditto.
-
- * regexec.c: ditto.
-
- * regcomp.c ditto.
-
- * regerror.c: ditto.
-
- * regparse.c: ditto.
-
Sat Aug 5 17:07:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (top_local_setup): local_vars[-1] should point
ruby_scope itself to protect local_tbl from garbage collection.
[ruby-dev:29049]
-Sat Aug 5 13:49:43 2006 Tadayoshi Funaba <tadf@dotrb.org>
+Sat Aug 5 13:54:03 2006 Tadayoshi Funaba <tadf@dotrb.org>
* lib/date/format.rb (str[fp]time): "%\n" means "\n".
-Fri Aug 4 12:13:22 2006 Eric Hodel <drbrain@segment7.net>
+Fri Aug 4 15:21:00 2006 Eric Hodel <drbrain@segment7.net>
- * lib: Clean up files for RDoc.
- * lib/.document: Include most of the standard library in RDoc
- generation.
- * lib/rdoc/ri/ri_formatter.rb: Don't unescape HTML in HtmlFormatter.
- Submitted by <ksruby at gmail.com>. [ruby-core:08392].
+ * lib: Merge RDoc and .document from HEAD.
* lib/drb/ssl.rb: Close socket on SSLError [ruby-core:7197]
-Fri Aug 4 18:59:49 2006 Keiju Ishitsuka <keiju@ruby-lang.org>
+Fri Aug 4 19:13:41 2006 Keiju Ishitsuka <keiju@ruby-lang.org>
* lib/irb/{init.rb,ruby-lex.rb,slex.rb}: can't input '\c' for
- [ruby-core: 7122]. and support for ruby1.8.X
+ [ruby-core: 7122].
Fri Aug 4 14:02:14 2006 James Edward Gray II <james@grayproductions.net>
@@ -2089,22 +591,15 @@ Fri Aug 4 13:56:51 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* pack.c (pack_pack): check argument overrun for 'P'. based on a
patch by rucila <rucila at yahoo.cojp>. fixed: [ruby-dev:29182]
-Fri Aug 4 02:42:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * sprintf.c (rb_str_format): a bug in %c type check.
-
-Fri Aug 4 01:28:19 2006 Tanaka Akira <akr@fsij.org>
+Tue Aug 1 17:44:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (io_reopen): STDERR.reopen(File.open("/dev/null", "w")) should
- not fclose stderr.
+ * win32/win32.c (init_stdhandle): assign standard file handles.
-Thu Aug 3 15:16:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Tue Aug 1 12:24:58 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * range.c (range_include): should always call Enumerable#include?
- (not #===) for non numeric end points. [ruby-core:08477]
- [ruby-core:08496]
+ * eval.c (Init_Binding): fix old commit miss.
-Mon Jul 31 16:51:40 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jul 31 17:08:20 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (exit_handler): new function; release winsock and
environment work area.
@@ -2115,7 +610,7 @@ Mon Jul 31 16:51:40 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (rb_w32_getenv): use GetEnvironmentStrings() instead
of GetEnvironmentVariable(), because the latter cannot distinguish
- whether a null environment variable exists or not.
+ wheather a null environment variable exists or not.
fixed: [ruby-talk:205123]
Mon Jul 31 16:15:13 2006 Tanaka Akira <akr@fsij.org>
@@ -2124,18 +619,18 @@ Mon Jul 31 16:15:13 2006 Tanaka Akira <akr@fsij.org>
setrlimit may fail with EINVAL.
reported by MIYAMUKO Katsuyuki. [ruby-dev:29174]
+Mon Jul 31 13:38:22 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httprequest.rb (WEBrick::HTTPReuqest#parse_uri): improve
+ for the value of IPv6 address in the Host: header field.
+
Mon Jul 31 09:22:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* ruby.h: use ifdef (or defined) for macro constants that may or
may not be defined to shut up gcc's -Wundef warnings.
[ruby-core:08447]
-Mon Jul 31 13:38:13 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/httprequest.rb (WEBrick::HTTPReuqest#parse_uri): improve
- for the value of IPv6 address in the Host: header field.
-
-Sun Jul 30 23:26:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 30 23:26:22 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_call0): trace call/return of method defined from block.
fixed: [ruby-core:08329]
@@ -2157,33 +652,9 @@ Sat Jul 29 01:23:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
statement back before the comment block. a patch from Hugh
Sasse <hgs at dmu.ac.uk>. [ruby-core:08422]
-Fri Jul 28 17:18:03 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/curses/curses.c (NUM2CH, CH2FIX): use single char strings.
-
-Fri Jul 28 14:09:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_call): fixed typo in cache look-up. [ruby-dev:29167]
-
-Fri Jul 28 10:41:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_call): a bug in method cache look-up.
- http://www.rubyist.net/~matz/20060720.html#c04
-
-Fri Jul 28 10:19:28 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * sprintf.c (rb_f_sprintf): documentation update patch from Jacob
- Fugal <lukfugl at gmail.com>. [ruby-core:08418]
-
-Fri Jul 28 09:41:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * time.c (time_to_s): fixed typo. [ruby-dev:29162]
-
-Fri Jul 28 00:26:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * math.c (domain_check): ANSI style function arguments
+Thu Jul 27 22:21:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * math.c (math_log): too few argument to domain_check().
+ * time.c (time_to_s): fixed format mismatch.
Thu Jul 27 21:19:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -2196,10 +667,6 @@ Thu Jul 27 21:19:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* math.c (math_sqrt): fix documentation flaw.
-Thu Jul 27 22:21:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * time.c (time_to_s): fixed format mismatch.
-
Thu Jul 27 18:12:12 2006 WATANABE Hirofumi <eban@ruby-lang.org>
* time.c: need to declare time_utc_offset.
@@ -2209,19 +676,23 @@ Thu Jul 27 17:01:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (io_close): always calls "close" method of the receiver.
[ruby-core:6911] [ruby-core:8112]
+Thu Jul 27 16:49:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_to_s): use +0900 style timezone string for local time.
+ [ruby-dev:29143]
+
Thu Jul 27 16:41:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/openssl/ossl.h: move <ruby.h> inclusion point to shut up
Solaris compiler. [ruby-core:08114]
- * time.c (time_to_s): use +0900 style timezone string for local time.
- [ruby-dev:29143]
-
Wed Jul 26 22:20:59 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* configure.in: add support for as and ASFLAGS. [ruby-dev:29138]
-Wed Jul 26 21:59:33 2006 Minero Aoki <aamine@loveruby.net>
+Wed Jul 26 22:13:45 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: sync with HEAD (rev 1.132).
* lib/net/http.rb (Net::HTTP#post, request_post, request): should
set Content-Type: x-www-form-urlencoded by default.
@@ -2235,37 +706,21 @@ Wed Jul 26 21:59:33 2006 Minero Aoki <aamine@loveruby.net>
* lib/net/http.rb (Net::HTTPHeader#type_params): wrongly failed
when there's no Content-Type.
-Wed Jul 26 18:38:13 2006 Minero Aoki <aamine@loveruby.net>
-
- * ext/strscan/strscan.c (strscan_do_scan): always return nil if
- p->curr exceeds string size.
-
-Wed Jul 26 18:33:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (Init_eval): rename #invoke_method and
- #invoke_functional_method to __send and __send! respectively.
-
- * eval.c (remove_method): prohibit removing __send and __send!.
+Wed Jul 26 18:35:38 2006 Minero Aoki <aamine@loveruby.net>
- * eval.c (rb_undef): prohibit undef'ing __send and __send!.
+ * ext/strscan/strscan.c: sync with HEAD (rev 1.25).
- * eval.c (rb_eval): prohibit redefining __send and __send!.
-
- * lib/delegate.rb (Delegator): preserve __send.
+ * ext/strscan/strscan.c (strscan_do_scan):
+ StringScanner.new("").scan(//) should return "". [ruby-Bugs:4361]
Wed Jul 26 18:14:19 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/pty/pty.c (getDevice): retry once after GC on failure.
[ruby-core:08282]
-Wed Jul 26 17:43:20 2006 Minero Aoki <aamine@loveruby.net>
-
- * ext/strscan/strscan.c (strscan_do_scan):
- StringScanner.new("").scan(//) should return "". [ruby-Bugs:4361]
-
Wed Jul 26 17:28:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sprintf.c (rb_str_format): prepend ".." to %u for negative bignum,
+ * sprintf.c (rb_f_sprintf): prepend ".." to %u for negative bignum,
but not "-". fixed: [ruby-core:08167]
Wed Jul 26 16:39:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -2283,7 +738,11 @@ Wed Jul 26 01:02:59 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in: suppress warnings by automake 1.8 or later.
-Tue Jul 25 14:46:14 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jul 25 00:30:06 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/prettyprint.rb: RD to RDoc conversion by Hugh Sasse.
+
+Tue Jul 25 14:49:51 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* lib/mkmf.rb (configuration): typo.
@@ -2296,6 +755,13 @@ Mon Jul 24 22:03:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (backtrace): skip frames successive on node and method name.
+Mon Jul 24 17:55:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * process.c (rb_f_system): add security check. [ruby-talk:202947]
+
+ * process.c (rb_f_system): move signal right before fork to avoid
+ signal handler intervention.
+
Mon Jul 24 15:51:52 2006 Tanaka Akira <akr@fsij.org>
* ext/readline/readline.c (readline_readline): rl_deprep_term_function
@@ -2311,61 +777,36 @@ Sun Jul 23 22:59:49 2006 Tanaka Akira <akr@fsij.org>
* test/socket/test_unix.rb: disabled on cygwin.
reported by Kouhei Yanagita. [ruby-dev:29080]
-Fri Jul 21 23:57:26 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (proc_options): script is never used while recursing.
-
Fri Jul 21 21:21:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_call0): include funcalled methods in caller list.
fixed: [ruby-core:08290]
-Fri Jul 21 17:52:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_cstr_to_dbl): "9_e8" should consider "_e8" as
- trailing garbage so that it should return 9.0. [ruby-dev:29088]
-
Fri Jul 21 12:11:00 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb, lib/mkmf.rb (with_destdir): remove drive letter before
prepending destdir on DOSISH.
-Fri Jul 21 04:17:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_call): try local method look-up first for fcall, then
- normal method look-up. [ruby-talk:202564]
-
- * eval.c (rb_get_method_body): save local method cache separately.
-
- * eval.c (search_method): export info whether method is local or
- not.
-
-Thu Jul 20 20:27:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_mod_attr): make Module#attr to be an alias to
- attr_reader. [RCR#331]
-
Thu Jul 20 15:07:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* ruby.h: export classes/modules to implement sandbox.
[ruby-core:08283]
-Wed Jul 19 19:40:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Jul 20 00:06:29 2006 Keiju Ishitsuka <keiju@ishitsuka.com>
- * eval.c (rb_yield_0): should check args_args before lambda
- argument check. [ruby-dev:29029]
+ * lib/irb/completion.rb: support for completion of numeric
+ number. [ruby-dev: 29038]
-Tue Jul 18 23:53:59 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jul 19 23:53:05 2006 Kouhei Sutou <kou@cozmixng.org>
- * process.c (rb_f_system): shouldn't block SIGCHLD if it's not
- exist.
+ * lib/rss/parser.rb, lib/rss/utils.rb: added documents.
Tue Jul 18 22:10:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* process.c (rb_f_system): block SIGCHLD during the process
execution, like glibc system(3) does. [ruby-talk:202361]
-Tue Jul 18 23:10:43 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jul 18 23:12:14 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (open_ifs_socket): should not use plain malloc.
@@ -2376,11 +817,6 @@ Tue Jul 18 18:05:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* test/ruby/test_float.rb (TestFloat::test_strtod): update test to
conform strtod change.
-Tue Jul 18 16:52:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (yield_under_i): argument should be passed in avalue
- form. [ruby-dev:29044]
-
Tue Jul 18 15:49:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* pack.c (pack_unpack): propagate association array to copied
@@ -2392,15 +828,6 @@ Tue Jul 18 15:49:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* pack.c (pack_pack): taint 'p' packed strings.
-Tue Jul 18 15:19:07 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * intern.h (st_foreach_safe): fix prototype.
-
- * node.h (NODE_LMASK): bigger than long on LLP64.
-
- * missing/vsnprintf.c (BSD__uqtoa): new function to support LLP64.
- all changes are derived from [ruby-dev:29045]
-
Tue Jul 18 14:03:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/webrick/httpserver.rb (WEBrick::HTTPServer::unmount): remove
@@ -2427,23 +854,23 @@ Mon Jul 17 23:30:46 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (rb_cv_msvcrt): defaulted to msvcrt. Workaround for a
bug of cygwin 1.5.20.
-Mon Jul 17 22:55:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/io/wait/wait.c (io_ready_p): protoize.
-
Mon Jul 17 13:43:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* pack.c (define_swapx): should not use plain malloc.
- * ext/curses/curses.c (curses_getmouse): ditto.
-
Mon Jul 17 12:58:41 2006 WATANABE Hirofumi <eban@ruby-lang.org>
* configure.in: should use ac_cv_lib_dl_dlopen=no on MinGW.
-Mon Jul 17 11:47:35 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Jul 15 23:50:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_require_safe): wait for another thread requiring the same
+ feature. fixed: [ruby-core:08229]
- * st.c: still need to include config.h on some platforms.
+Sat Jul 15 01:27:13 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * dir.c (has_magic): glob names contain alphabets to enable case fold
+ search also for directories. fixed: [ruby-talk:201917]
Sat Jul 15 01:09:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -2451,6 +878,8 @@ Sat Jul 15 01:09:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
malloc/calloc, to detect memory allocation failure. see
<http://www.nongnu.org/failmalloc/>.
+ * gc.c (rb_memerror): should not raise empty nomem_error.
+
Fri Jul 14 13:08:13 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb: add methods for new features of latest Tcl/Tk8.5.
@@ -2462,6 +891,10 @@ Fri Jul 14 02:30:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/monitor.rb: document patch from Hugh Sasse <hgs at dmu.ac.uk>.
[ruby-core:08205]
+Fri Jul 14 01:09:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (then): error in warning action.
+
Fri Jul 14 00:10:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* array.c (rb_ary_pop): may cause realloc oscillation. a patch
@@ -2473,23 +906,15 @@ Thu Jul 13 22:23:56 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/composite.rb: improve handling of the classname on the
option database for the widget class which includes TkComposite.
-Thu Jul 13 00:40:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ruby.h (FIX2LONG): returns integer of size of VALUE.
- [ruby-dev:29024]
+Thu Jul 13 20:32:19 2006 Kouhei Sutou <kou@cozmixng.org>
- * ruby.h (FIX2ULONG): ditto.
+ * lib/rss/parser.rb: updated documents by a patch from
+ Hugh Sasse <hgs at dmu.ac.uk>. [ruby-core:8194]
-Wed Jul 12 20:05:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Wed Jul 12 13:54:09 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * parse.y (f_args): allow post mandatory arguments after optional
- arguments. [ruby-dev:29014]
-
- * parse.y (new_args_gen): allow post_args without rest_args.
-
- * eval.c (formal_assign): ditto.
-
- * parse.y (new_args_gen): check post argument duplication.
+ * parse.y (then): we'd like to reserve colon here for the future.
+ warning added.
Tue Jul 11 20:58:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -2504,42 +929,10 @@ Tue Jul 11 18:00:57 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: security fix.
-Tue Jul 11 17:28:08 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jul 11 17:33:39 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* string.c (rb_str_dump): need to extend len for \b.
-Tue Jul 11 15:29:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (rb_int2big): use SIGNED_VALUE. [ruby-dev:29019]
-
- * bignum.c (rb_int2inum, rb_uint2inum): use VALUE sized integer.
-
- * bignum.c (rb_big2long, rb_big2ulong): ditto.
-
- * numeric.c (rb_num2long, rb_num2ulong): ditto.
-
- * numeric.c (check_int, check_uint): ditto.
-
- * bignum.c (rb_quad_pack): typo fixed.
-
-Tue Jul 11 13:40:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (bignorm): sizeof(long) may be smaller than
- sizeof(VALUE). [ruby-dev:29013]
-
- * ruby.h (FIXNUM_MAX): fixnum may be bigger than long.
-
- * ruby.h (SIGNED_VALUE): signed integer of size of VALUE.
-
-Mon Jul 10 23:37:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/soap/rpc/proxy.rb (Proxy::Operation::response_doc): remove
- splat star from return statements.
-
- * lib/soap/rpc/proxy.rb (Proxy::Operation::response_obj): retrieve
- the first value from the result array if response has only one
- value.
-
Mon Jul 10 22:00:00 2006 Shigeo Kobayashi <shigek@ruby-lang.org>
* ext/bigdecimal/bigdecimal.c: Allows '_' to appear within
@@ -2583,52 +976,17 @@ Mon Jul 10 18:46:52 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/demos-jp/widget: ditto.
-Mon Jul 10 17:32:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * sample/test.rb: update test suites.
-
- * test/ruby/test_assignment.rb (TestAssignment::test_yield): ditto.
-
- * test/ruby/test_iterator.rb (TestIterator::test_itertest): ditto.
-
-Mon Jul 10 14:43:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_call): remove erroneously restored prot_tag->blkid
- initialization. [ruby-dev:28997] [ruby-dev:29000]
-
-Mon Jul 10 13:58:08 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * signal.c (install_nativethread_sighandler): commented out.
-
-Mon Jul 10 09:29:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_clear_cache_for_remove): clear entries for included
- module. fixed: [ruby-core:08180]
-
-Mon Jul 10 02:22:58 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (proc_invoke): should not overwrite block information in
- current frame. [ruby-dev:28957]
-
- * eval.c (rb_yield_0): retrieve proper block object from the frame
- record.
-
- * eval.c (proc_alloc): return preserved block object if it's
- available.
+Mon Jul 10 13:58:40 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-Mon Jul 10 01:48:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * signal.c (ruby_nativethread_signal, posix_nativethread_signal,
+ sigsend_to_ruby_thread, install_nativethread_sighandler):
+ nativethread-support on signal handler. RE-backport from 1.9.
- * st.h (st_data_t): use pointer sized integer for st_data_t.
- [ruby-dev:28988]
+ * ruby.h (HAVE_NATIVETHREAD_KILL): ditto.
-Sun Jul 9 18:06:47 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (ruby_native_thread_kill): ditto.
- * lib/mkmf.rb (try_constant): fix for value 1 at cross compiling.
-
- * lib/mkmf.rb (create_makefile): prevent substitution of macro
- definition. fixed: http://www.yotabanana.com/lab/20060624.html#p02
-
-Sun Jul 9 07:58:48 2006 Ryan Davis <ryand@zenspider.com>
+Mon Jul 10 10:54:14 2006 Ryan Davis <ryand@zenspider.com>
* lib/rdoc/parsers/parse_f95.rb: massive overhaul from Yasuhiro
Morikawa including new file suffixes, function support, public
@@ -2648,33 +1006,44 @@ Sun Jul 9 07:58:48 2006 Ryan Davis <ryand@zenspider.com>
* lib/pp.rb: minor clarification on exception.
-Sun Jul 9 00:54:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jul 10 09:29:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_clear_cache_for_undef): clear entries for included
+ module. fixed: [ruby-core:08180]
- * eval.c (next_jump): deal with destination of next.
- fixed: [ruby-core:08169]
+Mon Jul 10 01:48:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-Fri Jul 7 17:49:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * st.h (st_data_t): use pointer sized integer for st_data_t.
+ [ruby-dev:28988]
- * string.c (rb_str_ord): extract lower byte. fixed: [ruby-dev:28980]
+Sun Jul 9 18:06:47 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/jcode.rb (String#succ!): fix for 1.9. fixed: [ruby-dev:28979]
+ * lib/mkmf.rb (try_constant): fix for value 1 at cross compiling.
+
+ * lib/mkmf.rb (create_makefile): prevent substitution of macro
+ definition. fixed: http://www.yotabanana.com/lab/20060624.html#p02
-Fri Jul 7 14:05:03 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Jul 9 00:54:34 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/Makefile.sub (config.h): define FUNC_STDCALL/FUNC_CDECL.
- from [ruby-dev:28970].
+ * eval.c (next_jump): deal with destination of next.
+ fixed: [ruby-core:08169]
Fri Jul 7 00:38:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* hash.c (rb_hash_default): should not call default procedure if
no key is given. [ruby-list:42541]
-Thu Jul 6 23:30:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jul 7 00:29:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * time.c (time_mload): a patch from Daniel Berger
+ <Daniel.Berger at qwest.com>. [ruby-core:08128]
+
+Thu Jul 6 22:21:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* process.c (rb_proc_times): use sysconf(_SC_CLK_TCK) value prior to
HZ and CLK_TCK. fixed: [ruby-talk:200293]
-Thu Jul 6 21:50:06 2006 Minero Aoki <aamine@loveruby.net>
+Thu Jul 6 22:17:21 2006 Minero Aoki <aamine@loveruby.net>
* ext/racc/cparse/cparse.c: sync with original code, rev 1.8.
@@ -2684,30 +1053,6 @@ Thu Jul 6 21:50:06 2006 Minero Aoki <aamine@loveruby.net>
* lib/racc/parser.rb: update coding style.
-Wed Jul 5 05:28:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (block_param): should allow block argument after splat
- and post splat args.
-
-Wed Jul 5 01:12:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * test/ruby/test_lambda.rb (TestLambdaParameters::test_lambda_as_iterator):
- -> style block no longer available. [ruby-dev:28958]
-
-Tue Jul 4 21:48:56 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ruby.c (proc_options): supress warning on DOSISH.
-
-Tue Jul 4 15:12:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_call): should not set prot_tag->blkid since it would
- never catch breaks at this level. [ruby-dev:28922]
-
-Tue Jul 4 04:48:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c: ruby 1.9 HEAD 64 bit warnings clean up from
- <ville.mattila at stonesoft.com>. [ruby-core:08120]
-
Mon Jul 3 19:04:38 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/tcltklib.c (ip_make_menu_embeddable): help to make a menu
@@ -2730,15 +1075,6 @@ Mon Jul 3 14:42:06 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
from int, and sys/types.h needs to be included before grp.h.
fixed: [ruby-dev:28938]
-Mon Jul 3 10:44:01 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (popen_exec): close file descriptors other than standard I/Os.
- fixed: [ruby-dev:28924]
-
-Mon Jul 3 05:15:29 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * test/openssl/test_asn1.c: String#[]= doesn't accept Integer.
-
Mon Jul 3 01:14:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_inspect): encode \b (\010) for escape.
@@ -2746,34 +1082,15 @@ Mon Jul 3 01:14:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_dump): ditto.
-Sun Jul 2 19:03:30 2006 Minero Aoki <aamine@loveruby.net>
-
- * ext/racc/cparse/cparse.c: sync with original code, rev 1.7.
-
- * ext/racc/cparse/cparse.c: must require version.h to get
- RUBY_VERSION_CODE.
-
-Sun Jul 2 18:42:27 2006 Minero Aoki <aamine@loveruby.net>
+Sun Jul 2 19:17:56 2006 Minero Aoki <aamine@loveruby.net>
- * ext/racc/cparse/cparse.c: sync with original source code, rev
- 1.6.
+ * ext/racc/cparse/cparse.c: sync with original code (rev 1.7).
- * ext/racc/cparse/cparse.c: do not use rb_iterate to give a block
- to the method, use rb_block_call instead. [ruby-dev:28445]
-
-Sun Jul 2 11:22:03 2006 Tanaka Akira <akr@m17n.org>
-
- * io.c (io_reopen): STDOUT.reopen(filename, "w+") didn't work.
- (rb_io_reopen): STDOUT.reopen(File.open(filename, "w+")) didn't work.
-
-Sat Jul 1 23:55:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (PUSH_FRAME): initialize frame->self. [ruby-dev:28911]
-
-Sat Jul 1 17:00:42 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * test/webrick/utils.rb: use Proc#yield instead of Proc#call.
- [ruby-dev:28914]
+ * ext/racc/cparse/cparse.c: use rb_catch instead of rb_iterate.
+ Giving a block to a Ruby-level method by rb_iterate is obsolete on
+ Ruby 1.9. Note that current cparse.c still includes one
+ rb_iterate call on Ruby 1.8, but it is not a problem (at least
+ just now).
Sat Jul 1 15:15:49 2006 Tanaka Akira <akr@m17n.org>
@@ -2789,34 +1106,6 @@ Fri Jun 30 23:46:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* configure.in: -shared patch from Andrew Morrow
<andrew.c.morrow at gmail.com>. [ruby-core:08100]
-Fri Jun 30 19:35:41 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/httputils.rb (WEBrick::HTTPUtils._escape): should
- use String#ord to get ascii code from the one-character string.
- [ruby-dev:28901]
-
-Thu Jun 29 23:56:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (gc_mark_children): a bug in NODE_BLOCK_PASS marking.
- [ruby-dev:28908]
-
-Thu Jun 29 23:04:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y: use ARGSPUSH instead of ARGSCAT to prevent too much
- splat expansion.
-
- * eval.c (when_check): need to handle ARGSPUSH as well.
-
- * eval.c (block_orphan): lambda and proc from method are always
- orphan.
-
- * gc.c (gc_mark_children): proper marking for NODE_LAMBDA.
-
-Thu Jun 29 22:47:30 2006 Tanaka Akira <akr@m17n.org>
-
- * eval.c (SETUP_ARGS0): avoid GC problem.
- [ruby-dev:28902]
-
Thu Jun 29 18:58:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/bigdecimal/bigdecimal.c (BigDecimal_version): fix patch
@@ -2827,51 +1116,16 @@ Thu Jun 29 18:00:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/bigdecimal/bigdecimal.c: add RDoc document. a patch from
mathew <meta at pobox.com>. [ruby-core:07050]
-Wed Jun 28 14:53:09 2006 Eric Hodel <drbrain@segment7.net>
+Wed Jun 28 15:47:14 2006 Eric Hodel <drbrain@segment7.net>
* lib/optparse.rb: RDoc patch from Robin Stocker <robin@nibor.org>
[ruby-core:08087]
-Wed Jun 28 23:23:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_cstr_to_dbl): underscores should appear only
- between digits. [ruby-dev:28891]
-
Wed Jun 28 19:04:34 2006 Tanaka Akira <akr@m17n.org>
* test/socket/test_unix.rb: test_seqpacket_pair removed.
[ruby-dev:28846]
-Wed Jun 28 13:51:21 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (when_check): arbitrary values are allowed after splats.
- fixed: [ruby-dev:28879]
-
-Wed Jun 28 09:16:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (primary): remove meaningless else-only case statement
- syntax.
-
-Wed Jun 28 08:08:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_eval): problem to handle else part. [ruby-dev:28873]
-
-Wed Jun 28 01:48:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_eval): support splat in when expression list.
- [ruby-dev:28822]
-
- * eval.c (when_check): a new auxiliary function for case match.
-
- * eval.c (when_cond): ditto.
-
-Wed Jun 28 01:05:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_cstr_to_dbl): should not skip '_' at the beginning
- of a string. [ruby-dev:28830]
-
- * bignum.c (rb_cstr_to_inum): ditto.
-
Tue Jun 27 23:03:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c: RDoc update for =~ method. a patch from Alex Young
@@ -2884,17 +1138,6 @@ Tue Jun 27 22:47:18 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb (tk_tcl2ruby): [bug fix] sometimes fail to convert
a tcl string to a ruby object if the tcl string includes "\n".
-Tue Jun 27 20:05:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * io.c (pipe_open): backout unnecessary fix on 2006-06-26.
- [ruby-dev:28865]
-
- * eval.c (rb_yield_0): exact argument number check now done only
- for lambda Proc.
-
- * eval.c (rb_yield_0): add check for number of arguments, if
- there's one lambda block parameter.
-
Tue Jun 27 16:04:05 2006 WATANABE Hirofumi <eban@ruby-lang.org>
* win32/win32.h: define isascii on MinGW for msvcrt compatibility.
@@ -2907,246 +1150,297 @@ Tue Jun 27 11:36:02 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/etc/etc.c (setup_passwd, setup_group): allow bignum uid, gid and
so on. [ruby-talk:199102]
-Tue Jun 27 10:46:53 2006 Tanaka Akira <akr@m17n.org>
-
- * eval.c (rb_yield_0): avoid core dump. [ruby-dev:28840]
-
-Mon Jun 26 11:03:00 2006 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/ri: Add options to limit the ri search path.
-
-Tue Jun 27 01:31:59 2006 Tanaka Akira <akr@m17n.org>
-
- * ext/socket/socket.c (bsock_recv_nonblock): new method
- BasicSocket#recv_nonblock.
- (udp_recvfrom_nonblock): renamed from ip_recvfrom_nonblock.
- IPSocket#recvfrom_nonblock is moved to UDPSocket#recvfrom_nonblock.
- (unix_recvfrom_nonblock): removed.
- UNIXSocket#recvfrom_nonblock is removed.
-
-Tue Jun 27 00:52:40 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 26 13:37:27 2006 Eric Hodel <drbrain@segment7.net>
- * ext/ripper/eventids2.c (token_assoc): added tCHAR, which is not
- under 256 now. fixed: [ruby-dev:28832]
+ * lib/rdoc: Merge from HEAD.
+ Add options to limit the ri search path.
-Mon Jun 26 23:42:57 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jun 27 00:54:08 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (call_trace_func): no check for argument number of the
- callback. fixed: [ruby-dev:28812]
+ * util.c (powersOf10): constified.
Mon Jun 26 18:37:44 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/tcltklib.c (ip_delete): fix SEGV when a slave-ip is
deleted on callback.
-Mon Jun 26 15:40:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/socket/socket.c (sock_accept): revert to avoid ambiguity of
- argument evaluation order. [ruby-dev:28861]
-
- * ext/socket/socket.c (sock_accept_nonblock): ditto.
-
Mon Jun 26 10:47:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (pipe_open): avoid closing uninitialized file descriptors.
a patch from <tommy at tmtm.org> [ruby-dev:28600]
+Mon Jun 26 09:56:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.[ch] (rb_w32_send, rb_w32_sendto): constified.
+
Sun Jun 25 23:02:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* Makefile.in, mkconfig.rb: catch-up for latest autoconf.
-Sun Jun 25 17:44:16 2006 Tanaka Akira <akr@m17n.org>
+Sat Jun 24 06:35:00 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * parse.y (paren_args): wrap $2 by escape_Qundef because it may be
- Qundef. [ruby-dev:28843]
+ * signal.c: revert last change.
-Sun Jun 25 17:18:33 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * ruby.h: ditto.
- * ext/win32ole/win32ole.c(ole_invoke): support some kind of
- method of word. [ruby-Bugs#3237]
+ * eval.c: ditto.
- * test/win32ole/test_word.rb: ditto.
+Thu Jun 22 11:52:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-Sat Jun 24 23:48:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/net/http.rb (Net::HTTPResponse): duplicated error 501;
+ HTTPInternalServerError should be error 500. [ruby-core:08037]
- * parse.y: replace terminal token names with more descriptive
- name, i.e. kEND to keyword_end. [ruby-list:42477]
+Thu Jun 22 05:15:58 2006 Tanaka Akira <akr@m17n.org>
-Sat Jun 24 23:37:41 2006 Tanaka Akira <akr@m17n.org>
+ * ext/socket/socket.c (sock_s_socketpair): try GC only once.
+ [ruby-dev:28778]
- * eval.c (rb_eval): use rb_ary_new2 instead of rb_ary_new4 to avoid
- GC problem.
- (rb_yield_values): use rb_ary_new2 instead of rb_ary_new4.
+Wed Jun 21 21:28:32 2006 Tadayoshi Funaba <tadf@dotrb.org>
- * array.c (rb_ary_new4): don't set len as n if contents is not
- initialized. make it safe with GC.
+ * lib/date.rb (jd_to_commercial): now works fine even if in
+ mathn-ized context.
- [ruby-dev:28826]
+Wed Jun 21 17:32:31 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-Fri Jun 23 23:35:32 2006 Tanaka Akira <akr@m17n.org>
+ * signal.c (ruby_nativethread_signal, posix_nativethread_signal,
+ sigsend_to_ruby_thread, install_nativethread_sighandler):
+ nativethread-support on signal handler (backport from 1.9).
- * ruby.h, lib/drb/drb.rb, lib/drb/invokemethod.rb: remove Values class.
- [ruby-dev:28805]
+ * ruby.h (HAVE_NATIVETHREAD_KILL): ditto.
-Fri Jun 23 17:27:52 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (ruby_native_thread_kill): ditto.
- * eval.c (rb_block_pass): removed.
+Wed Jun 21 08:39:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * eval.c (rb_thread_start_1): use rb_proc_yield() instead of
- rb_block_pass(). fixed: [ruby-dev:28794]
+ * lib/xmlrpc/create.rb (XMLRPC::Create::conv2value): merge Date
+ and Time processing. [ruby-core:08033]
-Thu Jun 22 11:52:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Wed Jun 21 01:40:25 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/net/http.rb (Net::HTTPResponse): duplicated error 501;
- HTTPInternalServerError should be error 500. [ruby-core:08037]
+ * parse.y (yylex, reswords): modifier token is no longer returned in
+ fname state. [ruby-dev:28775]
-Thu Jun 22 11:47:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Wed Jun 21 01:12:46 2006 Kouhei Sutou <kou@cozmixng.org>
- * variable.c (rb_mod_name): returns nil for anonymous modules.
- [ruby-talk:198440]
+ * lib/rss/rss.rb: RSS::Element.def_corresponded_attr_writer
+ supported date type.
-Thu Jun 22 10:31:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Tue Jun 20 22:08:36 2006 Kouhei Sutou <kou@cozmixng.org>
- * string.c (rb_str_aref): "abc"[3] should not return an empty
- string but nil. [ruby-dev:28786]
+ * test/rss/test_parser.rb: split parser tests into ...
+ * test/rss/test_parser_1.0.rb: ... RSS 1.0 parsing tests and ...
+ * test/rss/test_parser_2.0.rb: ... RSS 2.0 parsing tests.
-Thu Jun 22 05:15:58 2006 Tanaka Akira <akr@m17n.org>
+Tue Jun 20 21:19:06 2006 Kouhei Sutou <kou@cozmixng.org>
- * ext/socket/socket.c (sock_s_socketpair): try GC only once.
- [ruby-dev:28778]
+ * lib/rss/rss.rb: provided default RSS::Element#children.
-Wed Jun 21 21:20:31 2006 Tadayoshi Funaba <tadf@dotrb.org>
+ * lib/rss/0.9.rb: used default RSS::Element#children.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/taxonomy.rb: ditto.
- * lib/date.rb (jd_to_commercial): now works fine even if in
- mathn-ized context.
+Tue Jun 20 21:04:33 2006 Kouhei Sutou <kou@cozmixng.org>
-Wed Jun 21 17:29:57 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/rss/rss.rb: provided default RSS::Element#_tags.
- * ext/socket/getaddrinfo.c (freeaddrinfo, get_name): fixed typo.
+ * lib/rss/0.9.rb: used default RSS::Element#_tags.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/taxonomy.rb: ditto.
- * ext/tk/tcltklib.c (tcl_eval, tcl_global_eval): ditto.
+Tue Jun 20 20:47:07 2006 Kouhei Sutou <kou@cozmixng.org>
- * ext/zlib/zlib.c (rscheck): constified.
+ * lib/rss/rss.rb: hide RSS::Element.install_model.
+ (RSS::Element.install_have_child_element,
+ RSS::Element.install_have_children_element,
+ RSS::Element.install_text_element,
+ RSS::Element.install_date_element): call
+ RSS::Element.install_model internally.
-Wed Jun 21 17:18:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rss/0.9.rb: followed new API.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/content.rb: ditto.
+ * lib/rss/dublincore.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/syndication.rb: ditto.
+ * lib/rss/taxonomy.rb: ditto.
+ * lib/rss/trackback.rb: ditto.
- * lib/pp.rb (PP::PPMethods::seplist): should have preserved
- original reference to the array. [ruby-dev:28747]
+Tue Jun 20 20:18:05 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
-Wed Jun 21 14:35:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * ext/openssl/extconf.rb: add check for OBJ_NAME_do_all_sorted.
- * parse.y (block_param): do not use multiple assignment for a sole
- block parameter. [ruby-dev:28710]
+ * ext/openssl/ossl_cipher.c (ossl_s_ciphers): new method
+ OpenSSL::Cipher.ciphers. it returns all the cipher names.
- * eval.c (rb_yield_0): pass a raw yielded value to a sole block
- parameter if a value is passed by yield.
+ * ext/openssl/lib/openssl/cipher.rb:
+ - add constants AES128, AES192, AES256. [ruby-dev:28610]
+ - reimplement without eval()
- * eval.c (proc_invoke): args may not be an array.
+ * ext/openssl/lib/openssl/digest.rb: reimplement without eval().
- * eval.c (rb_proc_yield): pass original value without wrapping
- it in an array.
+ * test/openssl/test_cipher.rb, test_digest: fix about reimplemented
+ features.
-Wed Jun 21 14:06:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * sample/openssl/cipher.rb: rewrite all.
- * parse.y (method_call): remove (fn)(args) style lambda
- invocation, add fn.(args) instead.
+Sat Jun 19 11:21:46 2006 Eric Hodel <drbrain@segment7.net>
-Wed Jun 21 08:39:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/test/unit/assertions.rb: Merge RDoc from HEAD.
- * lib/xmlrpc/create.rb (XMLRPC::Create::conv2value): merge Date
- and Time processing. [ruby-core:08033]
+Tue Jun 20 01:06:57 2006 Kouhei Sutou <kou@cozmixng.org>
-Wed Jun 21 03:01:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rss/rss.rb:
+ - cleanup validation mechanism. Now, #XXX_validation is
+ needless.
+ - changed internal variable name RSS::Element::MODEL to
+ RSS::Element::MODELS.
+ - RSS::Element.install_model requires uri.
- * eval.c, file.c, etc.: code-cleanup patch from Stefan Huehner
- <stefan at huehner.org>. [ruby-core:08029]
+ * lib/rss/0.9.rb: followed new validation API.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/content.rb: ditto.
+ * lib/rss/dublincore.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/syndication.rb: ditto.
+ * lib/rss/taxonomy.rb: ditto.
+ * lib/rss/trackback.rb: ditto.
-Wed Jun 21 01:40:25 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 19 23:40:59 2006 NARUSE, Yui <naruse@ruby-lang.org>
- * parse.y (reswords): modifier token is no longer returned in fname
- state. fixed: [ruby-dev:28775]
+ * ext/nkf/lib/kconv.rb: remove default -m0 and fix document.
-Tue Jun 20 23:28:34 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/nkf/nkf-8/{nkf.c, config.h, utf8tbl.c, utf8tbl.h}:
+ imported nkf 2.0.7.
- * ext/extmk.rb (parse_args): provisional catch-up for the recent changes.
+Mon Jun 19 22:31:59 2006 Kouhei Sutou <kou@cozmixng.org>
- * lib/optparse.rb (OptionParser::List#summarize, OptionParser#order!): ditto.
+ * lib/rss/rss.rb:
+ - provided default #to_s as RSS::Element#to_s.
+ - removed RSS::Element#other_element.
+ - RSS::Element#tag requires attributes as Hash instead of Array.
-Tue Jun 20 11:07:55 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rss/0.9.rb: removed #to_s to use RSS::Element#to_s.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/taxonomy.rb: ditto.
+ * lib/rss/trackback.rb: ditto.
- * eval.c (proc_invoke): intercept break and return from lambda
- Proc objects. [ruby-dev:28742]
+ * lib/rss/2.0.rb: removed #other_element.
- * eval.c (proc_invoke): remove unnecessary YIELD_PROC_CALL flag.
+Mon Jun 19 22:09:16 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * eval.c (YIELD_EXACT_ARGS): renamed from YIELD_LAMBDA_CALL, which
- is no longer related to the behavior turned on by this flag.
+ * ext/win32ole/win32ole.c(ole_invoke): support some kind of
+ method of word. [ruby-Bugs#3237]
- * eval.c (return_jump): no need to care about PROT_YIELD.
+ * ext/win32ole/tests/test_word.rb: ditto.
- * eval.c (break_jump): no jump to toplevel PROT_THREAD tag.
+ * ext/win32ole/tests/testall.rb: ditto.
- * eval.c (rb_yield_0): fix confusion between lambda (which is a
- property of a proc) and pcall (which depends on whether it's
- called via yield or call).
+Mon Jun 19 00:02:17 2006 Kouhei Sutou <kou@cozmixng.org>
- * eval.c (rb_thread_yield): no need to specify YIELD_LAMBDA_CALL.
+ * lib/rss/rss.rb: automatically detected attributes.
- * eval.c (rb_block_pass): update blkid in prot_tag.
+ * lib/rss/0.9.rb: removed #_attrs.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/taxonomy.rb: ditto.
+ * lib/rss/trackback.rb: ditto.
-Mon Jun 19 23:40:59 2006 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/rss/parser.rb: followed new internal API.
- * ext/nkf/lib/kconv.rb: remove default -m0 and fix document.
+Mon Jun 19 00:00:17 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/nkf/nkf-8/{nkf.c, config.h, utf8tbl.c, utf8tbl.h}:
- imported nkf 2.0.7.
+ * ext/tk/lib/multi-tk.rb: fix bug: initialize improper tables.
-Mon Jun 19 17:02:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Sun Jun 18 22:36:13 2006 Kouhei Sutou <kou@cozmixng.org>
- * sample/test.rb (proc_return3): return within non lambda block
- should terminate surrounding method. [ruby-dev:28741]
+ * lib/rss/rss.rb: RSS::Element#initialize accepts initial
+ attributes.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/dublincore.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/taxonomy.rb: ditto.
+ * lib/rss/trackback.rb: ditto.
-Mon Jun 19 13:22:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rss/utils.rb: added Utils.element_initialize_arguments? to
+ detect backward compatibility initial arguments.
- * ext/socket/socket.c (unix_sysaccept): typo fixed.
+ * lib/rss/parser.rb: user initial attributes to initialize
+ RSS::Element.
- * ext/socket/socket.c (sock_connect): remove an unused local
- variable tmpaddr.
+Sun Jun 18 18:24:42 2006 Kouhei Sutou <kou@cozmixng.org>
-Mon Jun 19 02:10:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rss/converter.rb: use NKF for Uconv fallback.
- * ext/socket/socket.c (tcp_accept_nonblock): forgot to remove
- abandoned hacks. [ruby-dev:28740]
+Sun Jun 18 18:22:04 2006 Kouhei Sutou <kou@cozmixng.org>
-Mon Jun 19 00:00:17 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+ * test/rss/test_image.rb: shared name space configuration.
- * ext/tk/lib/multi-tk.rb: fix bug: initialize improper tables.
+Sun Jun 18 18:13:25 2006 Kouhei Sutou <kou@cozmixng.org>
-Sun Jun 18 20:28:43 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * lib/rss/rss.rb: improved ignore_unknown_element
+ handling. RSS::NotExpectedTagError provides tag URI.
+ * lib/rss/parser.rb: ditto.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/content.rb: ditto.
+ * lib/rss/dublincore.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/syndication.rb: ditto.
+ * lib/rss/taxonomy.rb: ditto.
+ * lib/rss/trackback.rb: ditto.
- * ext/win32ole/win32ole.c (fole_methods): The return value
- of WIN32OLE#ole_methods should include PROPERTYPUTREF methods.
+ * test/rss/rss-assertions.rb: checked URI of not expected tag too.
+ * test/rss/test_parser.rb: ditto.
- * ext/win32ole/win32ole.c (fole_put_methods): The return value
- of WIN32OLE#ole_put_methods should include PROPERTYPUTREF methods.
+Sun Jun 18 18:08:36 2006 Kouhei Sutou <kou@cozmixng.org>
- * test/win32ole/test_ole_methods.rb: ditto.
+ * lib/rss/rss.rb: changed empty namespace URI representation to ""
+ from nil.
+ * lib/rss/parser.rb: ditto.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
- * ext/win32ole/win32ole.c (ole_propertyput): support
- PROPERTYPUTREF. [ruby-talk:183042]
+Sun Jun 18 18:03:50 2006 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/parser.rb: removed a guard for requiring open-uri.
+
+Sun Jun 18 18:01:26 2006 Kouhei Sutou <kou@cozmixng.org>
- * test/win32ole/test_propertyputref.rb : ditto.
+ * lib/rss/rss.rb: fixed typo: except -> expect
+ * lib/rss/parser.rb: ditto.
+ * test/rss/rss-assertions.rb: ditto.
+ * test/rss/test_parser.rb: ditto.
-Sat Jun 17 23:42:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Sun Jun 18 17:52:39 2006 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/rss.rb: RSS::Element#calc_indent became to be deprecated.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/taxonomy.rb: ditto.
+ * lib/rss/trackback.rb: ditto.
- * eval.c (Init_eval): add aliases invoke_method and
- invoke_functional_method corresponding send and funcall
- respectively. [ruby-talk:197512]
+ * test/rss/test_1.0.rb: removed RSS::Element.indent_size tests.
+ * test/rss/test_2.0.rb: ditto.
- * parse.y (parser_yylex): returns the most typical keyword token
- on EXPR_FNAME. [ruby-core:7995]
+Sun Jun 18 00:49:11 2006 Tanaka Akira <akr@m17n.org>
- * ext/socket/socket.c: protoize.
+ * ext/socket/socket.c (bsock_recv_nonblock): new method
+ BasicSocket#recv_nonblock.
+ (udp_recvfrom_nonblock): renamed from ip_recvfrom_nonblock.
+ IPSocket#recvfrom_nonblock is moved to UDPSocket#recvfrom_nonblock.
+ (unix_recvfrom_nonblock): removed.
+ UNIXSocket#recvfrom_nonblock is removed.
Sat Jun 17 22:17:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -3155,147 +1449,227 @@ Sat Jun 17 22:17:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
Sat Jun 17 14:53:32 2006 Tanaka Akira <akr@m17n.org>
- * lib/pathname.rb (Kernel#Pathname): new method.
+ * lib/pathname.rb: backport from 1.9.
+ (Kernel#Pathname): new method.
-Sat Jun 17 02:01:00 2006 Tanaka Akira <akr@m17n.org>
+Sat Jun 17 10:30:41 2006 Kouhei Sutou <kou@cozmixng.org>
- * lib/pp.rb (Kernel#pretty_inspect): defined for pretty printed
- string.
+ * lib/rss/rss.rb (Hash#merge, Enumerable#sort_by): removed.
-Fri Jun 16 01:41:00 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rss/rss.rb (RSS::RootElementMixin#to_xml): added.
+ [ruby-talk:197284]
- * eval.c (rb_proc_arity): get rid of segfault for mere splat.
+ We can convert RSS version easily like the following:
+ rss10 = RSS::Parser.parse(File.read("1.0.rdf"))
+ File.open("2.0.rss", "w") {|f| f.print(rss10.to_xml("2.0"))}
- * gc.c (gc_mark_children): NODE_BLOCK_PASS needs u3 to be marked.
+ * test/rss/test_1.0.rb: added #to_xml test.
+ * test/rss/test_2.0.rb: ditto.
-Thu Jun 15 22:06:56 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * test/rss/rss-testcase.rb: added some helper methods that
+ generates sample RSS 2.0.
- * parse.y (then): remove ':' from 'then' and 'do' rules.
+ * sample/rss/convert.rb: added a sample script to convert RSS format.
-Wed Jun 14 18:00:20 2006 Eric Hodel <drbrain@segment7.net>
+Sat Jun 17 10:23:22 2006 Kouhei Sutou <kou@cozmixng.org>
- * enum.c (enum_any): Documentation typo.
+ * lib/rss/rss.rb (Kernel#funcall): removed.
+ * lib/rss/parser.rb (Kernel.URI): removed.
-Wed Jun 14 15:01:09 2006 Eric Hodel <drbrain@segment7.net>
+ * lib/rss/maker/: supported
+ xxx.new_yyy do |yyy|
+ yyy.zzz = zzz
+ ...
+ end
+ style and this style became the style of the recommendation.
- * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser#warn): Don't print
- warnings when -q is set.
+ Old style
+ yyy = xxx.new_yyy
+ yyy.zzz = zzz
+ ...
+ is supported too but this style isn't recommended.
+ [ruby-talk:197284]
-Wed Jun 14 16:11:37 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/rss/test_*maker*.rb: used new recommended style.
- * eval.c (rb_f_method_name, rb_f_callee_name): document typo.
+Sat Jun 17 09:03:47 2006 Kouhei Sutou <kou@cozmixng.org>
-Wed Jun 14 15:19:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rss, test/rss: backported from trunk. (2005-11-16 - now)
- * hash.c (env_aset): raise TypeError on nil with more descriptive
- message. [ruby-core:07990]
+ * lib/rss/rss.rb (RSS::VERSION): 0.1.5 -> 0.1.6.
+ * test/rss/test_version.rb (RSS::TestVersion#test_version): ditto.
-Tue Jun 13 17:22:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rss/trackback.rb: added TrackBack prefix.
+ * lib/rss/maker/trackback.rb: ditto.
- * ext/socket/socket.c (Init_socket): remove obsolete constants:
- IPsocket, TCPsocket, SOCKSsocket, TCPserver, UDPsocket,
- UNIXsocket, UNIXserver.
+ * lib/rss/rss.rb : removed needless argument 'prefix'.
+ * lib/rss/parser.rb: ditto.
-Tue Jun 13 09:07:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rss/1.0.rb: added rdf:Bag.
- * eval.c (formal_assign): post splat arguments should have had
- higher priority than optional arguments, since they are
- mandatory. [ruby-dev:28715]
+ * lib/rss/taxonomy.rb: implemented taxonomy module.
+ * test/rss/test_taxonomy.rb: added tests for taxonomy support.
- * eval.c (VIS_MASK): broken. should be 15. [ruby-dev:28715]
+ * lib/rss/1.0.rb: added convenience method 'resources'.
+ * lib/rss/taxonomy.rb: ditto.
+ * test/rss/rss-assertions.rb: added test for 'resources'.
+ * test/rss/test_taxonomy.rb: ditto.
- * io.c (argf_getc): should return one-character string.
- [ruby-dev:28715]
+ * lib/rss/rss.rb: fixed a indentation bug.
+ * lib/rss/taxonomy.rb: fixed <taxo:topic> #to_s bug.
+ * test/rss/test_taxonomy.rb: added a #to_s test.
- * io.c (rb_io_readchar): ditto.
+ * lib/rss/maker/taxonomy.rb: implemented taxonomy module for RSS
+ Maker.
+ * lib/rss/taxonomy.rb: supported RSS Maker.
+ * lib/rss/maker.rb: added taxonomy module support.
-Sun Jun 11 23:20:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rss/rss.rb: adjusted to other element API.
+ * lib/rss/1.0.rb: adjusted to other element API but backward
+ compatibility is reserved.
+ * lib/rss/0.9.rb: ditto.
- * object.c (sym_call): disallow to call private methods.
+ * test/rss/test_maker_taxo.rb: added test case for taxonomy module
+ for RSS Maker.
+ * test/rss/test_setup_maker_1.0.rb: added tests for taxo:topic.
- * lib/optparse.rb (OptionParser::Arguable#getopts): pass self to the
- parser.
+ * test/rss/test_setup_maker_1.0.rb: added backward compatibility
+ test.
+ * test/rss/test_setup_maker_0.9.rb: ditto.
+ * test/rss/test_setup_maker_2.0.rb: ditto.
-Sun Jun 11 09:56:41 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/rss/rss-testcase.rb: added convenience method for setting
+ up taxo:topic.
+ * test/rss/rss-assertions.rb: added assertion for taxo:topic.
- * win32/win32.h (write): not need to define on bcc.
+ * sample/rss/blend.rb: followed new API.
-Sun Jun 11 08:30:33 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rss/taxonomy.rb: changed class or module prefix to
+ Taxonomy from Taxo.
+ * lib/rss/maker/taxonomy.rb: ditto.
- * lib/optparse.rb (OptionParser#getopts): new methods.
+ * test/rss/test_taxonomy.rb: use #reject directory.
-Sun Jun 11 07:27:11 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/rss/: use #__send__ instead of #send.
+ * test/rss/: ditto.
- * lib/rdoc/ri/ri_writer.rb: use String#ord.
+ * lib/rss/parser.rb: added entity handling type predicate.
+ * lib/rss/rexmlparser.rb: ditto.
+ * lib/rss/xmlparser.rb: ditto.
+ * lib/rss/xmlscanner.rb: ditto.
-Sun Jun 11 04:38:20 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rss/xmlscanner.rb: more robust entity handling.
- * object.c (sym_to_proc): imported Symbol#to_proc from ActiveSupport.
+ * test/rss/test_parser.rb: added an entity handling test.
-Sat Jun 10 18:02:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * test/rss/test_2.0.rb: added RSS 2.0 tests.
+ * test/rss/rss-assertions.rb: extended XML stylesheet assertion.
+ * lib/rss/0.9.rb: added initialize method.
+ * test/rss/test_1.0.rb: cleanup.
- * ext/bigdecimal/lib/bigdecimal/newton.rb (Newton::nlsolve): typo
- fixed: raize -> raise. [ruby-talk:196608]
+ * lib/rss/image.rb: added Image prefix.
+ * lib/rss/maker/image.rb: ditto.
+
+ * lib/rss/rss.rb: improved type conversion.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/syndication.rb: ditto.
+
+ * test/rss/test_2.0.rb: added type conversion tests.
+ * test/rss/test_accessor.rb: ditto.
+ * test/rss/test_to_s.rb: ditto.
+ * test/rss/test_syndication.rb: ditto.
+ * test/rss/test_setup_maker_2.0.rb: ditto.
+ * test/rss/test_setup_maker_1.0.rb: ditto.
+ * test/rss/test_setup_maker_0.9.rb: ditto.
+ * test/rss/test_maker_sy.rb: ditto.
+ * test/rss/test_maker_image.rb: ditto.
+ * test/rss/test_maker_2.0.rb: ditto.
+ * test/rss/test_maker_0.9.rb: ditto.
+ * test/rss/test_image.rb: ditto.
+
+ * test/rss/test_maker_1.0.rb: use assert instead of assert_equal.
+
+ * test/rss/rss-assertions.rb: improved type conversion assertions.
+
+ * lib/rss/rss.rb: added backward compatibility codes.
+ * lib/rss/parser.rb: ditto.
+ * test/rss/test_parser.rb: ditto.
+ * test/rss/test_2.0.rb: ditto.
+
+Sat Jun 17 02:01:00 2006 Tanaka Akira <akr@m17n.org>
-Sat Jun 10 17:49:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/pp.rb (Kernel#pretty_inspect): defined for pretty printed
+ string.
- * string.c (rb_str_ord): new method.
+Sat Jun 17 00:23:58 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (rbracket): allow optional newline before closing
- brackets.
+ * parse.y (reswords): kDO_BLOCK was missing. fixed: [ruby-core:7995]
-Sat Jun 10 15:12:29 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Jun 17 00:02:15 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * eval.c (rb_f_method_name, rb_f_callee_name): new functions.
- new global method `__method__' and `__callee__'.
+ * ext/win32ole/win32ole.c (ole_propertyput): support
+ PROPERTYPUTREF. [ruby-talk:183042]
-Sat Jun 10 10:13:13 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/win32ole/tests/test_propertyputref.rb: ditto.
- * lib/getoptlong.rb (GetoptLong#set_options): receive arguments
- as Array.
+Thu Jun 15 23:02:47 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * lib/irb/slex.rb: use Proc#yield.
+ * ext/win32ole/win32ole.c (fole_methods): The return value
+ of WIN32OLE#ole_methods should include PROPERTYPUTREF methods.
- * lib/rdoc/markup/simple_markup/inline.rb: follow the new behavior
- of String#[].
+ * ext/win32ole/win32ole.c (fole_put_methods): The return value
+ of WIN32OLE#ole_put_methods should include PROPERTYPUTREF methods.
- * lib/rdoc/ri/ri_writer.rb: ditto.
+ * ext/win32ole/tests/test_ole_methods.rb: ditto.
-Sat Jun 10 08:17:23 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/win32ole/tests/testall.rb : ditto.
- * math.c (log2): may be a macro.
+Wed Jun 14 18:23:28 2006 Eric Hodel <drbrain@segment7.net>
- * parse.y (args, block_param, f_args): pass f_post_arg to #params.
+ * enum.c (enum_any): Documentation typo.
- * util.c (powersOf10): constified.
+Wed Jun 14 15:01:09 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser#warn): Don't print
+ warnings when -q is set.
+
+Wed Jun 14 23:03:53 2006 Tanaka Akira <akr@m17n.org>
- * ext/readline/readline.c: include extconf.h first.
+ * configure.in: check sizeof(rlim_t).
+ check setrlimit.
- * ext/ripper/eventids2.c: removed tLAMBDA_ARG.
+ * process.c (proc_getrlimit): new method Process.getrlimit.
+ (proc_setrlimit): new method Process.setrlimit.
- * ext/tk/tcltklib.c (lib_fromUTF8_core): removed conflict.
+ * ruby.h (NUM2ULL): new macro.
- * ext/tk/tkutil/tkutil.c (cbsubst_get_subst_arg): rb_id2name() is
- defined as const now.
+Mon Jun 12 22:25:09 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/win32ole/win32ole.c (fole_missing): ditto.
+ * sprintf.c (rb_f_sprintf): adjust precision length to prevent
+ splitting multi-byte characters. [ruby-list:42389]
+
+Sun Jun 11 23:20:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/optparse.rb (OptionParser::Arguable#getopts): pass self to the
+ parser.
- * lib/mkmf.rb (create_makefile): force to create extconf header.
+Sun Jun 11 10:00:57 2006 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/optparse.rb (order!): use Proc#yield.
+ * win32/win32.h (write): not need to define on bcc.
-Sat Jun 10 06:53:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Jun 11 08:30:33 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (CALLARGS): remove last semicolon. C90 compiler doesn't
- allow any lines (even if they're empty) within variable
- declarations.
+ * lib/optparse.rb (OptionParser#getopts): new methods.
-Fri Jun 9 09:56:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Sat Jun 10 18:02:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * sprintf.c (rb_str_format): allow %c to print one character
- string (e.g. ?x).
+ * ext/bigdecimal/lib/bigdecimal/newton.rb (Newton::nlsolve): typo
+ fixed: raize -> raise. [ruby-talk:196608]
-Thu Jun 8 14:00:02 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jun 8 14:19:17 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.[ch] (rb_w32_read, rb_w32_write): new functions.
use recv() and send() when fd is socket. fixed: [ruby-dev:28694]
@@ -3305,25 +1679,43 @@ Wed Jun 7 16:22:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/tempfile.rb (Tempfile::make_tmpname): put dot between
basename and pid. [ruby-talk:196272]
-Wed Jun 7 16:16:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Wed Jun 7 14:53:04 2006 NAKAMURA Usaku <usa@ruby-lang.org>
- * parse.y (do_block): remove -> style block.
+ * win32/win32.c (errmap): add some winsock errors.
- * parse.y (parser_yylex): remove tLAMBDA_ARG.
+Wed Jun 7 11:34:38 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Jun 7 14:51:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+ * configure.in: add new configure option `--with-winsock2' for mingw.
- * win32/win32.c (errmap): add some winsock errors.
+ * win32/Makefile.sub (config.h): define USE_WINSOCK2 in config.h
+ instead of in CPPFLAGS.
+
+ * ext/socket/extconf.rb: determine whether to use winsock2 or not
+ by using with_config.
+
+Wed Jun 7 10:45:10 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/{configure.bat, setup.mak, Makefile.sub, win32.h}: add
+ new configure option `--with-winsock2'.
+
+ * win32/win32.c (StartSockets): ditto.
+
+ * ext/socket/extconf.rb: ditto.
+
+ * win32/win32.c (open_ifs_socket): new function.
+
+ * win32/win32.c (StartSockets, rb_w32_socket): use open_ifs_socket()
+ instead of socket().
+ ifs socket support is backported from trunk.
Wed Jun 7 09:14:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_call0): binding for the return event hook should have
consistent scope. [ruby-core:07928]
-Tue Jun 6 23:25:49 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (proc_invoke): return behavior should depend whether it
- is surrounded by a lambda or a mere block.
+ * eval.c (EXEC_EVENT_HOOK): trace_func may remove itself from
+ event_hooks. no guarantee for arbitrary hook deletion.
+ [ruby-dev:28632]
Mon Jun 5 18:12:12 2006 Tanaka Akira <akr@m17n.org>
@@ -3337,21 +1729,12 @@ Sun Jun 4 20:40:19 2006 Tanaka Akira <akr@m17n.org>
* ext/socket/socket.c: fix sockaddr_un handling.
[ruby-dev:28677]
-Sat Jun 3 23:53:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (formal_assign): handles post splat arguments.
-
- * eval.c (rb_call0): ditto.
-
-Sat Jun 3 13:10:41 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * st.c (strhash): use FNV-1a hash.
+Fri Jun 2 22:08:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-Fri Jun 2 20:01:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/forwardable.rb: RDoc typo fix from Jan Svitok
+ <jan.svitok at gmail.com>. [ruby-core:07943]
- * parse.y (parser_yylex): removed experimental ';;' terminator.
-
-Fri Jun 2 19:00:40 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Fri Jun 2 19:02:09 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/extconf.rb: use create_header.
@@ -3380,83 +1763,23 @@ Thu Jun 1 19:12:37 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* win32/win32.c (rb_w32_cmdvector): backslashes inside single-quotes
no longer has special meanings. fixed: [ruby-list:42311]
-Thu Jun 1 17:55:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_node_arity): should be aware of post splat arguments.
-
- * eval.c (rb_proc_arity): ditto.
-
-Thu Jun 1 16:17:26 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jun 1 16:14:41 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (rb_w32_getcwd): runtime's getcwd() will not success
if the length of the cwd is longer than MAX_PATH.
fixed [ruby-list:42335]
-Thu Jun 1 16:07:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (f_args): syntax rule enhanced to support arguments
- after the splat.
-
- * parse.y (mlhs_basic): ditto for multiple assignments
-
- * parse.y (block_param): ditto for block parameters.
-
- * parse.y (f_post_arg): mandatory formal arguments after the splat
- argument.
-
- * parse.y (new_args_gen): generate nodes for mandatory formal
- arguments after the splat argument.
-
- * eval.c (rb_eval): dispatch mandatory formal arguments after the
- splat argument.
-
-Thu Jun 1 11:33:32 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jun 1 11:29:14 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (rb_w32_getcwd): set errno if not set.
fixed [ruby-list:42346]
-Thu Jun 1 00:45:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (args): allow more than one splat in the argument list.
-
-Wed May 31 18:38:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (method_call): allow aref [] to accept all kind of
- method argument, including assocs, splat, and block argument.
-
- * eval.c (SETUP_ARGS0): prepare block argument as well.
-
-Tue May 30 18:13:53 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/mathn.rb (Integer): remove Integer#gcd2. [ruby-core:07931]
-
-Mon May 29 22:40:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (error_line): print receivers true/false/nil specially.
-
- * eval.c (rb_proc_yield): handles parameters in yield semantics.
-
- * eval.c (nil_yield): gives LocalJumpError to denote no block
- error.
-
- * io.c (rb_io_getc): now takes one-character string.
-
-Sat May 27 22:46:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (proc_invoke): save and restore block in the current frame.
- fixed: [ruby-core:07833], [ruby-talk:191639]
-
-Sat May 27 11:29:46 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat May 27 11:29:46 2006 nobuyoshi nakada <nobu@ruby-lang.org>
* ext/extmk.rb (extmake): remove extinit files if no statically linked
extensions.
-Fri May 26 19:56:46 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_hash): use FNV-1a hash from Fowler/Noll/Vo
- hashing algorithm.
-
-Fri May 26 09:05:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 26 09:05:11 2006 nobuyoshi nakada <nobu@ruby-lang.org>
* ruby.h, lib/mkmf.rb (create_header): clear command line options for
macros moved to extconf.h.
@@ -3471,7 +1794,7 @@ Fri May 26 09:05:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (configuration): add $defs unless extconf.h was created.
-Thu May 25 01:52:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu May 25 01:52:07 2006 nobuyoshi nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (pkg_config): particular config commands support.
@@ -3485,27 +1808,23 @@ Thu May 25 01:52:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* win32/setup.mak: suffix OS name by runtime version.
-Wed May 24 23:52:11 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 24 23:52:11 2006 nobuyoshi nakada <nobu@ruby-lang.org>
* configure.in (ac_install_sh): ignore dummy install-sh.
[ruby-talk:193876]
-Wed May 24 17:55:13 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_aref): str[0] now returns 1 character string,
- instead of a fixnum. [Ruby2]
-
- * parse.y (parser_yylex): ?c now returns 1 character string,
- instead of a fixnum. [Ruby2]
-
- * string.c (rb_str_aset): no longer support fixnum insertion.
-
-Wed May 24 03:10:44 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Wed May 24 03:10:48 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/lib/openssl/ssl.rb
(OpenSSL::SSL::SocketForwarder#setsockopt,getsockopt): typo fixed.
-Mon May 22 16:32:03 2006 Tanaka Akira <akr@m17n.org>
+Mon May 22 17:54:12 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/socket/socket.c (sock_recvfrom_nonblock): use rb_read_pending
+ instead of rb_io_read_pending.
+ [ruby-dev:28663]
+
+Mon May 22 17:30:04 2006 Tanaka Akira <akr@m17n.org>
* rubyio.h (rb_io_set_nonblock): declared.
@@ -3514,8 +1833,7 @@ Mon May 22 16:32:03 2006 Tanaka Akira <akr@m17n.org>
(io_read_nonblock): new method: IO#read_nonblock.
(io_write_nonblock): new method: IO#write_nonblock.
- * ext/socket/socket.c (s_accept): retry for EWOULDBLOCK.
- revert [ruby-talk:113807].
+ * ext/socket/socket.c
(sock_connect_nonblock): new method: Socket#connect_nonblock.
(sock_accept_nonblock): new method: Socket#accept_nonblock.
(sock_recvfrom_nonblock): new method: Socket#recvfrom_nonblock.
@@ -3532,33 +1850,6 @@ Mon May 22 13:38:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (ev_const_get): should support constant access from
within instance_eval(). [ruby-dev:28327]
-Sun May 21 09:50:31 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * regexec.c: add STK_NULL_CHECK_END to IS_TO_VOID_TARGET().
- [ruby-list:42234]
-
-Thu May 18 22:37:20 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/config.rb (WEBrick::Config::HTTP): add new parameters,
- :InputBufferSize and :OutputBufferSize.
-
- * lib/webrick/utils.rb (WEBrick::Utils.timeout): add new timeout
- method. this implementation is expected to be compatible with
- timeout.rb and faster than timeout.rb.
-
- * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#_read_data):
- Timeout.timeout is replaced by WEBrick::Utils.timeout.
-
- * lib/webrick/httprequest.rb: WEBrick::HTTPRequest::BUFSIZE is
- replaced by config[:InputBufferSize].
-
- * lib/webrick/httpresposne.rb: WEBrick::HTTPResponse::BUFSIZE is
- replaced by config[:OutputBufferSize].
-
- * lib/webrick/server.rb: get rid of unnecessary require.
-
- * test/webrick/test_utils.rb: test for WEBrick::Utils.timeout.
-
Thu May 18 17:51:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* time.c (time_timeval): should round for usec floating
@@ -3566,21 +1857,24 @@ Thu May 18 17:51:32 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* time.c (time_add): ditto.
-Thu May 18 00:42:12 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu May 18 17:11:45 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::out): support utf-8. a patch from Fujioka
+ <fuj at rabbix.jp>. [ruby-dev:28649]
+
+Thu May 18 00:42:12 2006 nobuyoshi nakada <nobu@ruby-lang.org>
* ext/extmk.rb, lib/mkmf.rb: use BUILD_FILE_SEPARATOR in Makefiles.
Wed May 17 17:55:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (sys_warning): should not call a vararg function
- rb_sys_warning() indirectly. [ruby-core:07886]
-
-Tue May 16 17:23:19 2006 <sinara@blade.nagaokaut.ac.jp>
+ rb_sys_warning() indirectly. [ruby-core:07886]
- * numeric.c (flo_divmod): the first element of Float#divmod should
- be an integer. [ruby-dev:28589]
+Wed May 17 08:17:15 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * test/ruby/test_float.rb: add tests for divmod, div, modulo and remainder.
+ * util.c (ruby_strtod): try to reduce errors using powersOf10
+ table. [ruby-dev:28644]
Tue May 16 15:34:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -3598,10 +1892,6 @@ Tue May 16 09:20:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (GetDIR): add tainted/frozen check for each dir operation.
-Mon May 15 21:37:12 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * re.c (rb_reg_prepare_re): don't use onig_recompile().
-
Mon May 15 17:42:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_symbol_arg):
@@ -3615,85 +1905,40 @@ Sat May 13 16:14:05 2006 Tanaka Akira <akr@m17n.org>
(Struct#pretty_print_cycle): ditto.
[ruby-core:7865]
-Fri May 12 15:54:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (EXEC_EVENT_HOOK): trace_func may remove itself from
- event_hooks. no guarantee for arbitrary hook deletion.
- [ruby-dev:28632]
-
Thu May 11 19:57:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* util.c (ruby_strtod): differ addition to minimize error.
[ruby-dev:28619]
-Thu May 11 18:30:11 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Fri Aug 11 15:39:25 2006 Eric Hodel <drbrain@segment7.net>
- * ext/openssl/ossl_cipher.c (add_cipher_name_to_ary): should return
- value. [ruby-dev:28627]
+ * lib/yaml/tag.rb: Replace nodoc with stopdoc so Module methods get
+ documented.
Thu May 11 18:10:43 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* util.c (ruby_strtod): should not raise ERANGE when the input
string does not have any digits. [ruby-dev:28629]
-Wed May 10 23:40:21 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * oniguruma.h: Version 4.0.3
-
- * regexec.c: ditto.
-
-Mon May 8 09:10:31 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/extconf.rb: add check for OBJ_NAME_do_all_sorted.
-
- * ext/openssl/ossl_cipher.c (ossl_s_ciphers): new method
- OpenSSL::Cipher.ciphers. it returns all the cipher names.
-
- * ext/openssl/ossl_cipher.c (ossl_cipher_init): refine warning message.
-
- * ext/openssl/lib/openssl/cipher.rb: reimplement without eval() and
- add constants AES128, AES192, AES256. [ruby-dev:28610]
-
- * ext/openssl/lib/openssl/digest.rb: reimplement without eval().
-
- * test/openssl/test_cipher.rb, test_digest: fix about reimplemented
- features.
-
- * sample/openssl/cipher.rb: rewrite all.
-
Sun May 7 03:09:51 2006 Stephan Maka <stephan@spaceboyz.net>
* lib/resolv.rb (Resolv::DNS::Requester::ConnectedUDP#initialize):
Use AF_INET6 for nameservers containing colons.
-Sat May 6 23:40:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (proc_invoke): should restore old ruby_frame->block.
- thanks to ts <decoux at moulon.inra.fr>. [ruby-core:07833]
- also fix [ruby-dev:28614] as well.
-
Sat May 6 00:38:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* signal.c (trap): sig should be less then NSIG. Coverity found
this bug. a patch from Kevin Tew <tewk at tewk.com>.
[ruby-core:07823]
-Thu May 4 22:13:22 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * math.c (math_log2): add new method inspired by
- [ruby-talk:191237].
-
- * math.c (math_log): add optional base argument to Math::log().
- [ruby-talk:191308]
-
Thu May 4 02:24:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/syck/emitter.c (syck_scan_scalar): avoid accessing
- uninitialized array element. a patch from Pat Eyler
+ uninitialized array element. a patch from Pat Eyler
<rubypate at gmail.com>. [ruby-core:07809]
* array.c (rb_ary_fill): initialize local variables first. a
- patch from Pat Eyler <rubypate at gmail.com>. [ruby-core:07810]
+ patch from Pat Eyler <rubypate at gmail.com>. [ruby-core:07810]
* ext/syck/yaml2byte.c (syck_yaml2byte_handler): need to free
type_tag. a patch from Pat Eyler <rubypate at gmail.com>.
@@ -3705,17 +1950,17 @@ Wed May 3 02:12:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
check from Sam Roberts <sroberts at uniserve.com>.
[ruby-core:07691]
-Mon May 1 17:58:16 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+Mon May 1 12:23:19 2006 <sinara@blade.nagaokaut.ac.jp>
- * ext/win32ole/win32ole.c (add_event_call_back): should not
- delete event handler when the event name is not entried.
+ * numeric.c (num_div): use floor rather than rb_Integer().
+ [ruby-dev:28589]
-Mon May 1 08:32:10 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * numeric.c (flo_divmod): the first element of Float#divmod should
+ be an integer. [ruby-dev:28589]
- * ext/win32ole/win32ole.c (ole_param_ole_type): should return
- "unknown type" string when ITypeInfo::GetFuncDesc failed.
+ * test/ruby/test_float.rb: add tests for divmod, div, modulo and remainder.
-Sat Apr 29 22:43:37 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Sat Apr 29 22:42:08 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_asn1.c (ossl_asn1_decode0): should initialize
flag. [ruby-core:07785]
@@ -3725,6 +1970,8 @@ Fri Apr 28 10:53:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* util.c (ruby_strtod): should not cut off 18 digits for no
reason. [ruby-core:07796]
+ * util.c (ruby_strtod): fixed wrong conversion.
+
Thu Apr 27 01:38:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* array.c (rb_ary_fill): internalize local variable "beg" to
@@ -3733,12 +1980,7 @@ Thu Apr 27 01:38:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
Wed Apr 26 16:59:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* pack.c (pack_unpack): now supports CRLF newlines. a patch from
- <tommy at tmtm.org>. [ruby-dev:28601]
-
-Wed Apr 26 16:55:19 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * applied code clean-up patch from Stefan Huehner
- <stefan at huehner.org>. [ruby-core:07764]
+ <tommy at tmtm.org>. [ruby-dev:28601]
Tue Apr 25 18:00:05 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -3751,6 +1993,12 @@ Tue Apr 25 07:55:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
squeezing character sequence (i.e. a character) as well. thanks
to Hiroshi Ichikawa <gimite at gimite.ddo.jp> [ruby-list:42090]
+Tue Apr 25 00:08:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * regex.c (re_compile_pattern): should check if c is not a
+ multibyte character. a patch from KIMURA Koichi
+ <kimura.koichi at canon.co.jp>. [ruby-dev:28598]
+
Fri Apr 21 15:19:13 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/tcltklib.c (lib_eventloop_ensure): refer freed pointer
@@ -3761,11 +2009,6 @@ Fri Apr 21 12:14:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/socket/socket.c: document update patch from Sam Roberts
<sroberts at uniserve.com>. [ruby-core:07701]
-Thu Apr 20 08:43:54 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/mathn.rb (Integer): need not to remove gcd2. a patch from
- NARUSE, Yui <naruse at airemix.com>. [ruby-dev:28570]
-
Wed Apr 19 13:55:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (arg): too much NEW_LIST()
@@ -3777,6 +2020,8 @@ Wed Apr 19 11:57:04 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_eval): use ARGSCAT for NODE_OP_ASGN1.
[ruby-dev:28585]
+ * parse.y (list_concat): revert last change.
+
* parse.y (arg): use NODE_ARGSCAT for placeholder.
Wed Apr 19 11:13:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -3789,6 +2034,11 @@ Wed Apr 19 10:13:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* variable.c (rb_const_set): raise error when no target klass is
supplied. [ruby-dev:28582]
+Wed Apr 19 09:49:36 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * parse.y (list_concat): should not modify nodes other than
+ NODE_ARRAY. [ruby-dev:28583]
+
Tue Apr 18 17:40:37 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: add a binding to a container for a slave IP.
@@ -3799,6 +2049,19 @@ Tue Apr 18 17:40:37 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/stubs.c: fix potential bugs about handling rb_argv0.
+Tue Apr 18 00:11:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c: block_unique should be 1, not frame_unique.
+ [ruby-dev:28577]
+
+Fri Aug 11 15:39:25 2006 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#find_body): Make RDoc
+ ignore C function prototypes. Patch by Tilman Sauerbeck
+ <tilman at code-monkey.de>. [ruby-core:8574]
+ * lib/yaml/tag.rb: Replace nodoc with stopdoc so Module methods get
+ documented.
+
Mon Apr 10 01:03:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* prec.c (prec_prec_f): documentation patch from
@@ -3813,30 +2076,10 @@ Sat Apr 8 02:12:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* README.EXT: update symbol description. [ruby-talk:188104]
-Sat Apr 8 18:06:28 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c: add WIN32OLE_METHOD#inspect,
- WIN32OLE_PARAM#inspect.
-
- * test/win32ole/test_win32ole_method.rb: ditto.
-
- * add test/win32ole/test_win32ole_param.rb.
-
-Fri Apr 7 22:11:30 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c(foletypelib_initialize): WIN32OLE_TYPELIB.new
- accepts OLE file.
-
- * test/win32ole/test_win32ole_typelib.rb(test_initialize): ditto.
-
Thu Apr 6 23:28:47 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* COPYING: explicitly note GPLv2. [ruby-talk:187922]
-Thu Apr 6 16:43:06 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * intern.h (rb_obj_instance_exec, rb_mod_module_exec): add declaration.
-
Thu Apr 6 11:18:37 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/panedwindow.rb: lack of arguments. [ruby-core:7681]
@@ -3860,51 +2103,27 @@ Thu Apr 6 01:04:47 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/variable.rb: remove warning about unseting Tcl
variables.
-Wed Apr 5 00:22:54 2006 Tanaka Akira <akr@m17n.org>
-
- * lib/pathname.rb: use a subclass for instantiation except
- methods take pathname argument. suggested by Evan Phoenix.
- [ruby-core:7618]
-
-Tue Apr 4 22:15:41 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y: remove some obsolete syntax rules (unparenthesized
- method calls in argument list).
-
-Sat Apr 1 15:11:27 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c :add WIN32OLE_TYPE#inspect,
- WIN32OLE_VARIABLE#inspect
-
- * remove ext/win32ole/tests/testOLEVARIABLE.rb, testOLETYPE.rb
- testOLETYPELIB.rb.
-
- * testall.rb :ditto.
-
- * add test/win32ole
-
-Fri Mar 31 14:24:55 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enumerator.c (enumerator_with_index): removed suspicious return
- statement.
+Wed Mar 29 20:54:44 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-Wed Mar 29 23:06:48 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * ext/win32ole/win32ole.c (fole_getproperty): WIN32OLE#[] should accept
+ multi arguments.
- * ext/win32ole/win32ole.c (ole_invoke): change the behavior of
- WIN32OLE#[], WIN32OLE#[]=. These methods invoke DISPID_VALUE.
+ * ext/win32ole/tests/testWIN32OLE.rb (test_setproperty_bracket): ditto.
- * ext/win32ole/sample/excel2.rb: ditto.
-
- * ext/win32ole/tests/testWIN32OLE.rb: ditto.
-
-Wed Mar 29 10:11:31 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Mar 29 10:07:44 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* ext/nkf/nkf-utf8/nkf.c (nkf_each_char_to_hex, encode_fallback_subchar,
e2w_conv): support C90 compiler.
-Mon Mar 27 22:45:37 2006 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Mar 29 06:48:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (backtrace): reports aliased method names in a generated
+ backtrace. a patch from "U.Nakamura" <usa at garbagecollect.jp>.
+ [ruby-dev:28471]
- * ext/nkf/nkf-utf8/{nkf.c, utf8tbl.c}: imported nkf 2.0.6.
+Mon Mar 27 22:19:09 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/{nkf.c, utf8tbl.c, config.h}: imported nkf 2.0.6.
* Add --ic / --oc option and mapping tables.
* Add fallback option.
* Add --no-best-fit-chars option.
@@ -3915,12 +2134,6 @@ Mon Mar 27 22:45:37 2006 NARUSE, Yui <naruse@ruby-lang.org>
* ext/nkf/lib/kconv.rb (Kconv.to*): add -m0.
Note that Kconv.to* still imply -X.
- * ext/nkf/test.rb: Removed. Obsolete by test/nkf.
-
- * ext/.document: enabled documents in nkf and kconv
-
- * ext/nkf/nkf.c, ext/nkf/lib/kconv.rb: Add rdoc.
-
Mon Mar 27 03:17:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_call0): insecure calling should be checked for non
@@ -3929,125 +2142,53 @@ Mon Mar 27 03:17:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_alias): should preserve the current safe level as
well as method definition.
-Sun Mar 26 22:02:51 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * re.c: refactoring for options.
-
- * parse.y: ditto.
-
-Fri Mar 24 21:11:02 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+Fri Mar 24 23:14:30 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * re.c (match_aref): RDoc description updated.
-
- * string.c (rb_str_sub): ditto.
-
- * string.c (rb_str_gsub): ditto.
+ * eval.c (yield_under_i): pass self again for instance_eval().
+ [ruby-dev:28466]
Fri Mar 24 17:20:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * process.c (rb_f_sleep): remove RDoc description about SIGALRM
- which is not valid on the current implementation. [ruby-dev:28464]
-
-Thu Mar 23 21:40:47 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * re.c (rb_reg_regsub): prohibit \1, \2 ...\9 in replaced string
- for named regex pattern.
-
-Thu Mar 23 21:06:23 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * oniguruma.h: Version 4.0.2
-
- * regparse.c: ditto.
-
- * regcomp.c ditto.
-
- * regerror.c: ditto.
+ * process.c (rb_f_sleep): remove description about SIGALRM which
+ is not valid on the current implementation. [ruby-dev:28464]
Thu Mar 23 10:47:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (method_missing): should support argument splat in
- super. a bug in combination of super, splat and
- method_missing. [ruby-talk:185438]
-
-Thu Mar 23 00:01:32 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * re.c (rb_reg_regsub): add back reference by name \k<name> in
- replace string.
-
- * re.h : add regexp argument to rb_reg_regsub().
-
- * string.c (rb_str_sub_bang): ditto.
-
- * string.c (str_gsub): ditto.
-
-Tue Mar 21 22:14:01 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * re.c (match_alloc): initialize member regexp.
-
- * re.c (match_aref): add String and Symbol argument. [ruby-dev:28448]
-
- * re.h : add member regexp to RMatch.
-
- * gc.c (gc_mark_children): add gc_mark() to regexp member.
+ super. [ruby-talk:185438]
Mon Mar 20 12:05:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* configure.in: Solaris SunPro compiler -rapth patch from
<kuwa at labs.fujitsu.com>. [ruby-dev:28443]
-Mon Mar 20 11:12:38 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/win32ole/win32ole.c (folevariant_value): could not compile
- with C90 compiler.
-
Mon Mar 20 09:40:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* configure.in: remove enable_rpath=no for Solaris.
[ruby-dev:28440]
-Sun Mar 19 09:46:30 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c (ole_val2olevariantdata): change behavior
- of converting OLE Variant object with VT_ARRAY|VT_UI1 and Ruby
- String object.
+Fri Mar 17 19:08:49 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * ext/win32ole/win32ole.c (folevariant_value): ditto.
+ * ext/openssl/ossl_ssl.c, ext/openssl/ossl_nsspki.c: fix typo.
+ [ruby-core:07571]
- * ext/win32ole/tests/testOLEVARIANT.rb: ditto.
-
-Wed Mar 15 16:51:11 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Mar 15 16:54:21 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* lib/mkmf.rb (create_makefile): support libraries without *.so.
-Wed Mar 15 16:39:29 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Wed Mar 15 16:35:43 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_ssl.c, ext/openssl/ossl_nsspki.c: should use
"rb_str_new(0, 0)" to make empty string.
-Sun Mar 12 17:02:10 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c(ole_val2olevariantdata): support VT_ARRAY in
- WIN32OLE_VARIANT.new().
-
- * ext/win32ole/tests/testOLEVARIANT.rb: ditto.
-
- * ext/win32ole/tests/testOLEPARAM.rb: test method name should not be
- duplicated.
-
Sat Mar 11 14:24:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::wrap): removed
+ space before argument parenthesis. [ruby-talk:183630]
+
* ruby.1: a clarification patch from David Lutterkort
<dlutter at redhat.com>. [ruby-core:7508]
-Sun Mar 5 18:40:58 2006 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb: do not repeat command options.
-
-Sun Mar 5 18:35:03 2006 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb (send_request_with_body): #content_type never
- return false, use #main_type instead. [ruby-core:07476]
-
Sat Mar 4 15:26:40 2006 Tanaka Akira <akr@m17n.org>
* gc.c (id2ref): fix symbol test.
@@ -4055,112 +2196,84 @@ Sat Mar 4 15:26:40 2006 Tanaka Akira <akr@m17n.org>
Sat Mar 4 01:08:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/rdoc/ri/ri_paths.rb (RI::Paths): adding paths from rubygems
- directories. a patch from Eric Hodel <drbrain at segment7.net>.
+ directories. a patch from Eric Hodel <drbrain at segment7.net>.
[ruby-core:07423]
-Fri Mar 3 17:59:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_clear_cache_by_class): clearing wrong cache.
+Thu Mar 2 19:44:18 2006 Tanaka Akira <akr@m17n.org>
-Fri Mar 3 21:22:42 2006 Tanaka Akira <akr@m17n.org>
-
- * lib/fileutils.rb (FileUtils.cp_r): implement :remove_destination
- option.
-
- * ext/extmk.rb: use :remove_destination to install extension libraries
- to avoid SEGV. [ruby-dev:28417]
-
-Fri Mar 3 14:41:04 2006 Minero Aoki <aamine@loveruby.net>
-
- * ext/dl/.cvsignore: ignore callback.h.
-
- * ext/ripper/.cvsignore: ignore eventids2table.c.
-
- * ext/socket/.cvsignore: ignore constants.h.
+ * gc.c: align VALUE with sizeof(RVALUE) globally.
+ (is_pointer_to_heap): check alignment out of loop.
+ (id2ref): avoid collision between symbols and objects.
+ (rb_obj_id): ditto. moved from object.c.
+ [ruby-talk:178364] [ruby-core:7305]
Thu Mar 2 18:58:18 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_thread_fd_writable): should not re-schedule output
from KILLED thread (must be error printing).
-Thu Mar 2 09:12:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (rb_ary_flatten_bang): allow specifying recursion
- level. [ruby-talk:182170]
-
- * array.c (rb_ary_flatten): ditto.
-
-Thu Mar 2 08:02:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (add_heap): a heap_slots may overflow. a patch from Stefan
- Weil <weil at mail.berlios.de>.
-
-Wed Mar 1 17:13:37 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_call): use separate cache for fcall/vcall
- invocation.
-
- * eval.c (rb_eval): NODE_FCALL, NODE_VCALL can call local
- functions.
-
- * eval.c (rb_mod_local): a new method to specify newly added
- visibility "local".
-
- * eval.c (search_method): search for local methods which are
- visible only from the current class.
-
- * class.c (rb_class_local_methods): a method to list local methods.
-
-Thu Mar 2 17:54:45 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Mar 2 17:57:49 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* gc.c: commited magic for reducing RVALUE size on windows. (24->20byte)
[ruby-core:7474]
-Thu Mar 2 14:12:26 2006 Tanaka Akira <akr@m17n.org>
-
- * gc.c: align VALUE with sizeof(RVALUE) globally.
- (is_pointer_to_heap): check alignment out of loop.
- (id2ref): avoid collision between symbols and objects.
- (rb_obj_id): ditto. moved from object.c.
- [ruby-talk:178364] [ruby-core:7305]
-
-Thu Mar 2 12:55:16 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Mar 2 12:59:14 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.c (filetime_to_unixtime): should set tm_isdst to -1.
stat() didn't treat daylight saving time property on WinNT.
[ruby-talk:182100]
-Wed Mar 1 00:15:51 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Mar 2 08:02:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (add_heap): heap_slots may overflow. a patch from Stefan
+ Weil <weil at mail.berlios.de>.
+
+Wed Mar 1 00:24:31 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/rdoc/parsers/parse_rb.rb (read_escape): could not handle /\^/.
merged Mr. Ishizuka's lib/irb/ruby-lex.rb 's patch rev 1.29.
[ruby-talk:181631] [ruby-dev:28404]
-Tue Feb 28 19:32:14 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+Tue Feb 28 09:32:17 2006 NAKAMURA Usaku <usa@ruby-lang.org>
- * object.c (Init_Object): add BasicObject class as a top level
- BlankSlate class.
+ * lib/drb/extservm.rb (invoke_service_command): cannot invoke command
+ if command name is quoted on mswin32. [ruby-dev:28400]
Mon Feb 27 00:19:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* ruby.h (SYM2ID): should not cast to signed long.
[ruby-core:07414]
-Fri Feb 24 20:21:38 2006 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Fri Feb 24 20:07:23 2006 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* test/drb/drbtest.rb (add_service_command): quote pathnames in the
server's command line for space contained directory names.
Thanks, arton. [ruby-dev:28386]
-Fri Feb 24 12:10:07 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Feb 24 12:11:08 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* instruby.rb: install *.exe.manifest and *.dll.manifest if exist.
It's for VC++8.
-Fri Feb 24 11:17:45 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Feb 24 11:33:52 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub (HAVE_HYPOT): bcc32 has hypot().
+
+Fri Feb 24 11:19:58 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * time.c (time_new_internal): add prototype to tell the compiler
+ arugments types.
* win32/win32.c (NtInitialize): need to set a handler for VC++8.
+Fri Feb 24 08:19:16 2006 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * test.rb: Removed. Obsolete by test/nkf.
+
+ * ext/.document: enabled documents in nkf and kconv
+
+ * ext/nkf/nkf.c ext/nkf/lib/kconv.rb: Add rdoc.
+
Thu Feb 23 22:39:59 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* bcc32/Makefile.sub: use borlndmm.dll if possible. bcc32's RTL internal
@@ -4168,84 +2281,30 @@ Thu Feb 23 22:39:59 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
ex: 10000.times { "" << "." * 529671; GC.start } # crash
[ruby-dev:28230]
-Thu Feb 23 13:23:03 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Feb 23 13:20:28 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* eval.c (SETUP_ARGS0): fixed memory corruption. [ruby-dev:28360]
-Wed Feb 22 21:16:55 2006 Tanaka Akira <akr@m17n.org>
-
- * lib/pathname.rb (Pathname#each_filename): use split_names properly.
+Tue Feb 21 02:18:46 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Feb 22 16:24:05 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+ * configure.in (mingw): have link. [ruby-list:41838]
- * test/webrick/test_cgi.rb: should support platforms which search
- library path from the interpreter's path.
- And, support test without install incidentally.
-
-Wed Feb 22 14:21:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (bignorm): x may not be a bignum. [ruby-dev:28367]
-
-Wed Feb 22 09:22:40 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (proc_alloc): add proper check for creation of a lambda
- without a block.
+ * win32/Makefile.sub (config.h): ditto.
Tue Feb 21 02:07:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (f_arglist): should set command_start = Qtrue for
command body. [ruby-talk:180648]
-Mon Feb 20 22:30:17 2006 Tanaka Akira <akr@m17n.org>
-
- * mkconfig.rb: alias Config to RbConfig for compatibility.
-
-Mon Feb 20 18:21:41 2006 Tanaka Akira <akr@m17n.org>
-
- * io.c (rb_io_reopen): flush before reopening a file.
- reported by Mathieu Bouchard. [ruby-core:7396]
-
-Mon Feb 20 17:29:50 2006 Tanaka Akira <akr@m17n.org>
-
- * mkconfig.rb: generate RbConfig instead of Config.
-
- * instruby.rb, rubytest.rb, runruby.rb, bcc32/Makefile.sub,
- ext/extmk.rb, ext/dl/extconf.rb, ext/iconv/charset_alias.rb,
- lib/mkmf.rb, lib/rdoc/ri/ri_paths.rb,
- lib/webrick/httpservlet/cgihandler.rb,
- test/dbm/test_dbm.rb, test/gdbm/test_gdbm.rb,
- test/ruby/envutil.rb, test/soap/calc/test_calc_cgi.rb,
- test/soap/header/test_authheader_cgi.rb, test/soap/ssl/test_ssl.rb,
- win32/mkexports.rb, win32/resource.rb: Use RbConfig instead of
- Config.
-
-Mon Feb 20 13:46:19 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Feb 20 17:37:26 2006 Tanaka Akira <akr@m17n.org>
- * lib/find.rb: should raise ENOENT if root entry does not exist,
- without opening it. [ruby-dev:28345]
+ * mkconfig.rb: alias RbConfig for Config.
Mon Feb 20 12:27:53 2006 Kent Sibilev <ksruby@gmail.com>
* lib/rational.rb (Integer::gcd): small typo fix.
[ruby-core:07395]
-Mon Feb 20 10:03:59 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * variable.c (rb_const_get_0): Object should have been the lowest
- in const lookup precedence. [ruby-dev:28343]
-
-Mon Feb 20 09:17:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/delegate.rb (Delegator): should not delegate "funcall".
-
-Mon Feb 20 09:13:42 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/webrick/httpservlet/cgihandler.rb (WEBrick::HTTPServlet::CGIHandler):
- qualify the access for Config constant. [ruby-dev:28338]
-
- * lib/resolv.rb (Resolv::DNS::Resource::IN::A): qualify
- ClassValue. [ruby-dev:28338]
-
Mon Feb 20 01:05:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/rational.rb (Integer::gcd): replaced by gcd4 in
@@ -4256,13 +2315,6 @@ Mon Feb 20 00:57:02 2006 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl.h (OSSL_Debug): should not use __func__.
[ruby-dev:28339]
-Mon Feb 20 00:13:49 2006 Tanaka Akira <akr@m17n.org>
-
- * lib/open-uri.rb: add :ssl_verify_mode option.
- suggested by Will Glynn.
-
- * lib/open-uri.rb: add :ssl_ca_cert option.
-
Sun Feb 19 04:46:29 2006 Guy Decoux <ts@moulon.inra.fr>
* eval.c: initial value for block_unique must be 1.
@@ -4278,44 +2330,17 @@ Sat Feb 18 23:58:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* sample/rtags.rb: ditto.
-Sat Feb 18 21:16:27 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_obj_instance_eval): RDoc description updated. a
- patch from Ozgur Murat Homurlu <ozgurmurath at gmail.com>.
- [ruby-core:07381]
+Sat Feb 18 12:18:26 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-Sat Feb 18 01:01:17 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * variable.c (rb_const_get_0): skip ruby_wrapper in const search
- to give it lower priority (just above Object). need not to
- change rb_const_defined_0() since it's only a precedence matter;
- they are defined anyway.
+ * lib/fileutils.rb (FileUtils::fu_world_writable): make it
+ private. [ruby-core:07383]
Sat Feb 18 00:22:39 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/tracer.rb: merged a minor clarification patch from Daniel
Berger <Daniel.Berger at qwest.com>. [ruby-core:07376]
-Fri Feb 17 17:30:20 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (ev_const_get): simplified using rb_const_get_fallback().
-
- * eval.c (ev_const_defined): adopt to ev_const_get() using
- rb_const_defined_fallback().
-
- * variable.c (rb_const_get_fallback): new function to implement
- constant search.
-
- * variable.c (rb_const_defined_fallback): new function to
- implement constant definition check.
-
- * variable.c (rb_const_get_0): adopt to new behavior. constants
- are looked up in the order of: current class, super classes (but
- Object), lexically external classes/modules, and Object.
-
- * variable.c (rb_const_defined_0): ditto.
-
-Fri Feb 17 11:20:53 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Feb 17 11:18:42 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* util.c (ruby_strtod): Float("1e") should fail. [ruby-core:7330]
@@ -4330,6 +2355,11 @@ Fri Feb 17 09:39:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_thread_wait_for): sleep should always sleep for
specified amount of time. [ruby-talk:180067]
+Thu Feb 16 01:10:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (backtrace): frame->orig_func may not be initialized.
+ [ruby-core:07367]
+
Wed Feb 15 16:52:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_eval): NODE_OP_ASGN1 should allow splat in its
@@ -4341,10 +2371,6 @@ Wed Feb 15 16:52:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_eval): honor visibility on OP_ASGN1 and
OP_ASGN2. [ruby-core:07366]
-Wed Feb 15 15:20:23 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (error_line): remove void control path. [ruby-dev:28335]
-
Wed Feb 15 10:09:51 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (yield_under_i): should not pass self as an argument to
@@ -4355,32 +2381,17 @@ Wed Feb 15 09:20:35 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_obj_instance_eval): should be no singleton classes for
true, false, and nil. [ruby-dev:28186]
-Tue Feb 14 20:26:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enumerator.c (enumerator_each): return self if no block is
- given. [yarv-dev:882]
-
Tue Feb 14 18:48:33 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (DMETHOD_P): accessing wrong frame. [ruby-dev:28181]
* eval.c (proc_invoke): preserve FRAME_DMETH flag.
-Tue Feb 14 15:15:22 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Feb 14 15:13:51 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/zlib/zlib.c: supress warning on test/zlib. [ruby-dev:28323]
-Tue Feb 14 13:47:22 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_utime): drop read-only attribute before
- changing file time.
-
-Tue Feb 14 13:38:01 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (config.h): should define HAVE_LONG_LONG with
- VC++8.
-
-Tue Feb 14 11:42:38 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Feb 14 14:01:17 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* time.c (search_time_t): support non 32bit time_t environments.
@@ -4388,40 +2399,35 @@ Tue Feb 14 11:42:38 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/Makefile.sub (config.h): VC++8's time_t is 64bit value.
-Mon Feb 13 18:01:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (copy_node_scope): remove duplicated semicolons at end.
- a patch from KIMURA Koichi <kimura.koichi at canon.co.jp>.
- [ruby-dev:28332]
-
- * eval.c (VIS_MODE): remove unnecessary argument.
- [ruby-dev:28332]
+ * win32/win32.c (rb_w32_utime): drop read-only attribute before
+ changing file time.
-Mon Feb 13 13:49:48 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+ all changes are backported from CVS HEAD.
- * parse.y (parser_parse_string): mention "regexp" in a error
- message. a patch from Mauricio Fernandez <mfp at acm.org>
- [ruby-core:07340]
+Tue Feb 14 11:21:38 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-Mon Feb 13 00:01:32 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
+ * io.c (argf_forward): should not use frame->argv.
+ [ruby-core:07358]
- * oniguruma.h: Version 4.0.1
+Mon Feb 13 18:08:12 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * regparse.c (onig_free_shared_cclass_table): fix memory leaks.
+ * eval.c (rb_call0): argument update propagation. [ruby-dev:28044]
- * regcomp.c (optimize_node_left): change from IS_POSIXLINE() to IS_MULTILINE().
+ * env.h: remove argv member from struct FRAME.
- * regint.h: rename ANCHOR_ANYCHAR_STAR_PL to ANCHOR_ANYCHAR_STAR_ML.
+Mon Feb 13 13:27:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * regparse.h: ditto.
+ * eval.c (eval): should push class from binding if supplied.
+ [ruby-core:07347]
- * regexec.c: ditto.
+Mon Feb 13 00:04:00 2006 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-Sat Feb 11 21:57:29 2006 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * lib/erb.rb (ERB::Compiler): add instance variable @insert_cmd to
+ change <%='s behavior. (backported 1.15 - 1.16)
- * ext/win32ole/win32ole.c: add WIN32OLE.create_guid.
+Sat Feb 11 02:04:11 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+ * eval.c (eval): no need to push ruby_class. [ruby-dev:28176]
Sat Feb 11 01:57:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -4429,76 +2435,39 @@ Sat Feb 11 01:57:44 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
instance_eval for objects cannot have singleton classes,
e.g. fixnums and symbols). [ruby-dev:28178]
-Fri Feb 10 12:31:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_eval): should support NODE_ZSUPER in NODE_ITER.
- [ruby-dev:28326]
-
- * eval.c (ZSUPER_ARGS): support macro.
-
-Wed Feb 8 10:26:06 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while
- invoking finalizers.
-
- * gc.c (rb_gc_finalize_deferred): ditto.
-
-Tue Feb 7 23:03:13 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Feb 7 23:03:24 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/zlib/zlib.c: should not access ruby objects in finalizer.
[ruby-dev:28286]
-Tue Feb 7 18:42:00 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * io.c (rb_write_error2): use fwrite(3) if rb_stderr is not
- updated or is already freed. [ruby-dev:28313]
-
Mon Feb 6 16:02:51 2006 WATANABE Hirofumi <eban@ruby-lang.org>
* file.c (rb_thread_flock): ERROR_NOT_LOCKED is not an error on Cygwin.
In such situation, flock() should return 0.
-Mon Feb 6 14:36:29 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (error_line): include the class name of a surrounding
- method in error position description.
-
-Mon Feb 6 00:14:57 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enum.c (enum_find_index): a new method Enumerable#find_index.
- [ruby-talk:178495]
-
-Sun Feb 5 23:29:31 2006 Tanaka Akira <akr@m17n.org>
-
- * ruby.h (struct RStruct): embed 3 or less elements structs.
- (RSTRUCT_LEN): defined for accessing struct members.
- (RSTRUCT_PTR): ditto.
+Mon Feb 6 00:41:08 2006 Tanaka Akira <akr@m17n.org>
- * struct.c: use RSTRUCT_LEN and RSTRUCT_PTR.
- (struct_alloc): allocate small structs in embedded format.
- (rb_struct_init_copy): ditto.
+ * ruby.h (RSTRUCT_LEN, RSTRUCT_PTR): defined for source level
+ compatibility with ruby 1.9.
- * gc.c (gc_mark_children): use RSTRUCT_LEN and RSTRUCT_PTR.
- (obj_free): ditto.
-
- * marshal.c (w_object): use RSTRUCT_LEN and RSTRUCT_PTR.
-
-Sun Feb 5 21:01:49 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sun Feb 5 21:05:34 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* numeric.c (fix_to_s): removed workaround for radix 2. Historically,
rb_fix2str could only handle radix 8, 10, 16. (Rev1.37) But for now,
it can handle radix 2..36. [ruby-Bugs#3438] [ruby-core:7300]
-Sun Feb 5 18:49:00 2006 Minero Aoki <aamine@loveruby.net>
+Sun Feb 5 18:55:08 2006 Minero Aoki <aamine@loveruby.net>
+
+ * lib/net/http.rb: imported from trunk, rev 1.129
- * lib/net/http.rb (add_field, get_fields): keep 1.8.2
- compatibility. This patch is contributed by Rob Pitt.
+ * lib/net/http.rb (add_field, get_fields): keep 1.8.2 backward
+ compatibility.
-Sun Feb 5 16:33:50 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * lib/net/https.rb: imported from trunk, rev 1.3.
- * lib/mkmf.rb (create_makefile): Kernel#sub! was removed on HEAD.
+ * lib/net/https.rb: #use_ssl? definition moved from net/http.rb.
-Sun Feb 5 14:26:54 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sun Feb 5 14:22:15 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/pstore.rb: should return default value if name is not found.
[ruby-core:7304]
@@ -4510,59 +2479,33 @@ Sat Feb 4 22:51:43 2006 Tanaka Akira <akr@m17n.org>
* eval.c: apply the FreeBSD getcontext/setcontext workaround
only before FreeBSD 7-CURRENT.
-Sat Feb 4 21:10:06 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Feb 4 21:19:23 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (LK_ERR): ERROR_NOT_LOCKED is not an error.
In such situation, flock() should return 0.
-Sat Feb 4 15:52:56 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sat Feb 4 15:56:37 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* numeric.c (fix_to_s): (2**32).to_s(2) fails with exception where
sizeof(int) == 4 < sizeof(long). [ruby-core:7300]
-Sat Feb 4 15:02:05 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * oniguruma.h: merge Oniguruma 4.0.0 [ruby-dev:28290]
-
-Fri Feb 3 19:25:53 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ruby.h: fixed prototype.
-
- * ext/syck/rubyext.c: defined symbol ID as global variable as others.
-
-Fri Feb 3 17:57:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c: unify ruby_class (for method definition) and ruby_cbase
- (for constant reference).
-
-Fri Feb 3 15:02:10 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Feb 3 15:06:50 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/syck/syck.c (syck_move_tokens): should reset p->cursor or etc
even if skip == 0. This causes buffer overrun.
(ex: YAML.load('--- "..' + '\x82\xA0' * 511 + '"'))
-Fri Feb 3 00:01:31 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Feb 2 23:51:18 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/syck/emitter.c (syck_emitter_write): should not set '\0' on
- emitter's marker. if marker points to the end of buffer, this is
+ emitter's marker. if marker points to the end of buffer, this causes
buffer overrun. (ex: YAML.dump("." * 12288))
-Thu Feb 2 17:13:01 2006 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser#get_tk): added
- support of :'string' style Symbol.
-
Thu Feb 2 16:01:24 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
- * eval.c (rb_call0): use TMP_ALLOC() instead of allocating
- a temporary array object.
-
* eval.c (eval): need not to protect $SAFE value.
[ruby-core:07177]
- * error.c (Init_Exception): change NameError to direct subclass of
- Exception so that default rescue do not handle it silently.
-
Thu Feb 2 14:45:53 2006 Ville Mattila <ville.mattila@stonesoft.com>
* configure.in: The isinf is not regognized by autoconf
@@ -4589,36 +2532,17 @@ Tue Jan 31 11:58:51 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/namespace.rb: TkNamespace#eval was enbugged at the
last commit. Now it will return a proper object.
-Tue Jan 31 08:07:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * numeric.c (int_upto): return an enumerator if no block is
- attached to the method.
-
- * numeric.c (int_downto): ditto.
-
- * numeric.c (int_dotimes): ditto.
-
- * enum.c (enum_first): new method Enumerable#first to take first n
- elements from an enumerable.
-
- * enum.c (enum_group_by): new method Enumerable#group_by that
- groups enumerable values according to their block values.
-
-Tue Jan 31 00:08:22 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Jan 31 00:10:26 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/syck/rubyext.c (syck_resolver_transfer): workaround for SEGV.
ex: ruby -ryaml -e 'YAML.load("!map:B {}")' [ruby-core:7217]
-Sat Jan 28 07:49:30 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sat Jan 28 07:56:57 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/rdoc/usage.rb: support "a:0:33" style caller[-1]. In this case
file name is "a:0". I don't know this really happens though...
[ruby-Bugs:3344]
-Thu Jan 26 15:55:52 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/socket/socket.c: turn on do_not_reverse_lookup by default.
-
Wed Jan 25 22:29:04 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in, dln.c, file.c, intern.h, missing.h (eaccess): use
@@ -4642,7 +2566,13 @@ Sun Jan 22 20:03:35 2006 Tanaka Akira <akr@m17n.org>
FreeBSD/i386 getcontext/setcontext bug.
[ruby-dev:28263]
-Thu Jan 19 22:19:18 2006 Minero Aoki <aamine@loveruby.net>
+Sat Jan 21 00:36:47 2006 Tanaka Akira <akr@m17n.org>
+
+ * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): use only on SPARC and IA64
+ before gcc 4.0.3.
+ [ruby-dev:28247]
+
+Thu Jan 19 22:21:23 2006 Minero Aoki <aamine@loveruby.net>
* lib/fileutils.rb (mv): should remove file after copying.
[ruby-dev:28223]
@@ -4656,34 +2586,32 @@ Wed Jan 18 23:37:06 2006 Tanaka Akira <akr@m17n.org>
reported by Pav Lucistnik and Marius Strobl.
http://lists.freebsd.org/pipermail/freebsd-sparc64/2006-January/003739.html
-Tue Jan 17 23:59:56 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * object.c (rb_mod_const_get, rb_mod_const_defined): added optional
- flag to search ancestors, which is defaulted to true.
- fixed: [ruby-talk:175899]
-
- * eval.c (rb_mod_method_defined): ditto.
-
-Tue Jan 17 11:31:47 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jan 17 11:32:46 2006 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/setup.mak (MAKE): workaround for nmake 8.
-Tue Jan 17 11:06:19 2006 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jan 17 11:10:21 2006 NAKAMURA Usaku <usa@ruby-lang.org>
- * win32/Makefile.sub: invoke .bat via shell. workaround for nmake 8.
+ * win32/{Makefile.sub,setup.mak}: invoke .bat via shell. workaround
+ for nmake 8.
-Mon Jan 16 10:13:38 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Jan 16 10:26:23 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/syck/emitter.c (syck_emit_seq, syck_emit_map, syck_emit_item):
should output complex key mark even if map's key is empty seq/map.
[ruby-core:7129]
-Sat Jan 14 03:38:54 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sat Jan 14 05:37:06 2006 Tanaka Akira <akr@m17n.org>
+
+ * io.c (READ_DATA_PENDING, READ_DATA_PENDING_COUNT): defined
+ for DragonFly BSD 1.4.0.
+
+Sat Jan 14 03:43:24 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* file.c (rb_file_s_chmod): avoid warning where sizeof(int) !=
sizeof(void*).
-Fri Jan 13 19:26:15 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Jan 13 19:14:56 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/rdoc/diagram.rb:
- properly quote bare element attributes
@@ -4705,15 +2633,23 @@ Thu Jan 12 11:53:08 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
[new feature] support 'command' option which is called just before
popping up the balloon help.
-Wed Jan 11 00:12:29 2006 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Wed Jan 11 15:00:00 2006 Ville Mattila <mulperi@iki.fi>
- * lib/erb.rb (ERB::Compiler): add instance variable @insert_cmd to
- change <%='s behavior.
+ * io.c (READ_PENDING*): Support solaris 64-bit environments.
+ Solaris defines a opaque FILE struct when compiling 64 bit
+ binaries. This means that we dont have access to _ptr etc.
+ members anymore. The solution by Steven Lumos is to define
+ FILE64 that has needed members available. I've modified
+ the origanal patch a bit so that it compiles both with gcc
+ and now free sun studio 11 compiler and both amd64 and sparc.
+ NOTE! We have to 64 bit solaris FILE structure time to time
+ otherwise we'll get breakage.
+ [ruby-core:7106]
Tue Jan 10 19:42:33 2006 Tanaka Akira <akr@m17n.org>
* gc.c (garbage_collect): mark ruby_current_node.
- if an exception is raised in a finalizer written in C called by
+ if an exception is raised in a finalizer called written in C by
rb_gc_call_finalizer_at_exit, ruby_set_current_source may use
collected ruby_current_node and mark_source_filename may corrupt
memory.
@@ -4736,68 +2672,37 @@ Tue Jan 10 12:00:48 2006 Aaron Schrab <aaron @nospam@ schrab.com>
* lib/yaml/rubytypes.rb (Symbol#yaml_new): YAML loading of quoted
Symbols broken. [ruby-Bugs:2535]
-Tue Jan 10 07:26:52 2006 Tanaka Akira <akr@m17n.org>
-
- * gc.c (gc_stress): renamed from always_gc and enabled by default.
- (gc_stress_get): new function for GC.stress.
- (gc_stress_set): new function for GC.stress=.
-
-Mon Jan 9 19:58:56 2006 arton <artonx@yahoo.co.jp>
+Mon Jan 9 19:54:35 2006 arton <artonx@yahoo.co.jp>
* ext/zlib/extconf.rb: zlib compiled DLL version 1.2.3 distributed by
http://www.zlib.net/ has zdll.lib. [ruby-dev:28209]
-Mon Jan 9 14:25:00 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Jan 9 14:17:12 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/Makefile.sub (OPTFLAGS): I have experienced trouble on y- flag,
(VisualC++6) so use -O2b2xg- if $(MSC_VER) < 1400. [ruby-core:7040]
-Mon Jan 9 14:25:00 2006 Kero van Gelder <rubyforge @nospam@ kero.tmfweb.nl>
+Mon Jan 9 14:17:12 2006 Kero van Gelder <rubyforge @nospam@ kero.tmfweb.nl>
* lib/webrick/httpservlet/filehandler.rb: fixed typo. [ruby-core:7075]
-Sun Jan 8 14:15:27 2006 Tanaka Akira <akr@m17n.org>
-
- * eval.c (GCC_VERSION_BEFORE): check __INTEL_COMPILER.
- Intel C++ Compiler defines __GNUC__.
- http://www.intel.com/software/products/compilers/clin/docs/ug_cpp/lin1077.htm
-
Sat Jan 7 15:40:07 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (singleton): get rid of segfault on syntax error.
fixed: [ruby-core:07070]
-Sat Jan 7 06:24:18 2006 Tanaka Akira <akr@m17n.org>
-
- * eval.c (rb_fd_isset): compare the result of FD_ISSET with 0 to
- avoid FreeBSD bug. FreeBSD defines FD_ISSET as just a bitmap of
- unsigned long. So returning the value from rb_fd_isset discards
- upper 32bits on LP64 environment.
- http://www.freebsd.org/cgi/query-pr.cgi?pr=ia64/91421
-
-Fri Jan 6 02:20:18 2006 Tanaka Akira <akr@m17n.org>
-
- * configure.in: don't force getcontext on IA64.
-
- * eval.c (ruby_setjmp): add an argument for just before getcontext.
- (THREAD_SAVE_CONTEXT): call rb_thread_save_context just
- before getcontext.
- [ruby-dev:28205]
+Fri Jan 6 10:16:20 2006 Steven Lumos <steven@lumos.us>
-Sun Jan 1 15:28:46 2006 Tanaka Akira <akr@m17n.org>
+ * io.c (READ_DATA_PENDING): defined for 64bit Solaris on SPARC.
+ [ruby-core:7057]
+ (READ_DATA_PENDING_COUNT): ditto.
+ (READ_DATA_PENDING_PTR): ditto.
- * missing.h (isinf): avoid macro expansion
- "extern int isinf(double);" to
- "extern int ((sizeof(double)==sizeof(float))?_Isinff(double):_Isinf(double));" on
- HP-UX.
-
-Sun Jan 1 14:42:54 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sun Jan 1 17:07:59 2006 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.c (rb_w32_seekdir): should not segfault even if passed
- the location which rb_w32_telldir didn't return. (and should change
- `bits' position) [ruby-core:7035]
-
- * win32/dir.h: ditto. (stores `loc' instead of `bitpos')
+ the location which rb_w32_telldir didn't return. [ruby-core:7035]
+ (I think HEAD implementation is better. but binary compatibility)
* test/ruby/test_dir.rb: added.
@@ -4806,41 +2711,26 @@ Sat Dec 31 22:57:00 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_thread_save_context): should not recycle scope object used
in a thread. fixed: [ruby-dev:28177]
-Sat Dec 31 19:50:38 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/syck/rubyext.c: attribute name was truncated with Rev1.64.
-
-Sat Dec 31 11:53:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * lib/generator.rb: (Generator#initialize): should kill @loop_thread
- before starting new thread. (occurs when called via Generator#rewind)
- [ruby-dev:28184]
-
Fri Dec 30 18:22:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c (garbage_collect): mark objects referred from aborting threads.
+ * gc.c (garbage_collect): mark objects refered from aborting threads.
[ruby-dev:28190]
* win32/Makefile.sub: VC++8 support.
-Fri Dec 30 15:17:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Dec 30 14:24:53 2005 WATANABE Hirofumi <eban@ruby-lang.org>
- * lib/generator.rb (Generator#initialize): ensured to stop @loop_thread.
- Mr. Tanaka pointed out one Thread.pass is not enough. [ruby-dev:28185]
+ * dir.c (glob_helper): do not use TRUE for djgpp.
-Fri Dec 30 12:20:57 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Dec 30 04:54:40 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/generator.rb (Generator#initialize): fixed dead lock. this occurred
- when end? was called before @loop_thread was stopped. [ruby-core:7029]
-
-Fri Dec 30 01:04:52 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * file.c (eaccess): workaround for VC++8 runtime.
- * lib/generator.rb: should work with another thread. (more robust code)
- [ruby-dev:28177]
+ * win32/win32.c (ioinfo): VC++8 support.
Thu Dec 29 23:59:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_gc_mark_threads): keep unmarked threads which won't wake
+ * eval.c (rb_gc_mark_threads): leave unmarked threads which won't wake
up alone, and mark threads in the loading table. [ruby-dev:28154]
* eval.c (rb_gc_abort_threads), gc.c (gc_sweep): kill unmarked
@@ -4851,87 +2741,23 @@ Thu Dec 29 17:02:07 2005 Tanaka Akira <akr@m17n.org>
* test/ruby/envutil.rb (EnvUtil.rubybin): search "ruby" instead of
"miniruby". [ruby-dev:28140]
-Thu Dec 29 14:35:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_mod_define_method): should save safe_level in the
- proc object. [ruby-dev:28146]
-
-Thu Dec 29 11:22:34 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * lib/generator.rb: reimplemented Generator class with Thread instead of
- callcc, in order to fix memory leak. [ruby-dev:28142]
-
-Wed Dec 28 14:10:05 2005 Tanaka Akira <akr@m17n.org>
-
- * ia64.s: remove .pred.safe_across_calls directive.
- reported by WATANABE Tetsuya. [ruby-dev:28141]
-
-Wed Dec 28 01:32:39 2005 Tanaka Akira <akr@m17n.org>
-
- * eval.c (struct thread): add bstr_max.
- (rb_thread_save_context): use realloc instead of REALLOC_N
- to avoid GC.
-
-Tue Dec 27 23:59:53 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (CompletingHash#match): fix for 1.9.
-
Tue Dec 27 16:59:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* test/drb/drbtest.rb (DRbService::self.ext_service): increase
timeout limit. a patch from Kazuhiro NISHIYAMA
<zn at mbf.nifty.com>. [ruby-dev:28132]
-Tue Dec 27 14:17:55 2005 Tanaka Akira <akr@m17n.org>
-
- * configure.in: define IA64 for portability. (HP aC++/ANSI C doesn't
- define __ia64__.)
- don't check libunwind stuff.
- check __libc_ia64_register_backing_store_base.
-
- * defines.h: declare rb_ia64_bsp and rb_ia64_flushrs.
- (flush_register_windows): call rb_ia64_flushrs on IA64.
-
- * ia64.s: new file for IA64.
- it is separated from C program files because
- Intel C++ Compiler for IA64 doesn't support inline assembly.
+Tue Dec 27 08:29:18 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * common.mk (ia64.$(OBJEXT)): new target.
-
- * ruby.h (RUBY_INIT_STACK): defined.
- (ruby_init_stack): declared for RUBY_INIT_STACK.
-
- * main.c (main): precedes RUBY_INIT_STACK before ruby_init.
-
- * gc.c (rb_gc_register_stack_start): new global variable on IA64.
- (garbage_collect): simplify register stack marking code.
- don't use libunwind.
- (Init_stack): initialize rb_gc_register_stack_start.
- (ruby_init_stack): new function for RUBY_INIT_STACK.
-
- * eval.c (struct thread): add bstr_pos member for original position of
- register stack.
- (rb_thread_save_context): simplify register stack saving code.
- don't use libunwind.
- (rb_thread_restore_context_0): new function. moved from
- rb_thread_restore_context except the stack position checking code.
- don't use libunwind for IA64 register stack.
- (register_stack_extend): new function.
- (stack_extend): make it self-recursive with
- the stack position checking code in old rb_thread_restore_context.
- (rb_thread_restore_context): just call stack_extend.
- (flush_register_windows): removed.
-
- [ruby-dev:28127]
-
-Tue Dec 27 14:09:39 2005 Minero Aoki <aamine@loveruby.net>
-
- * process.c: new method Process.exec. [ruby-dev:28107]
+ * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLSocket#post_connection_chech):
+ treat wildcard character in commonName. [ruby-dev:28121]
-Tue Dec 27 08:22:15 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Dec 26 22:32:47 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLSocket#post_connection_check):
- treat wildcard character in commonName. [ruby-dev:28121]
+ * eval.c (rb_eval), gc.c (gc_mark_children), node.h (NEW_ALIAS,
+ NEW_VALIAS), parse.y (fitem): allow dynamic symbols to
+ NODE_UNDEF and NODE_ALIAS.
+ backported from trunk. fixed: [ruby-dev:28105]
Mon Dec 26 08:50:36 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -4944,20 +2770,23 @@ Mon Dec 26 08:50:36 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
Joel VanderWerf <vjoel at path.berkeley.edu>.
[ruby-talk:165285] [ruby-core:6995]
+Sat Dec 24 18:58:14 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * stable version 1.8.4 released.
+
Fri Dec 23 10:30:23 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/digest/sha2/sha2.c (ULL): support AIX C. a patch from
Kailden <kailden at gmail.com>. [ruby-core:06984]
-Wed Dec 21 16:47:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Dec 21 16:53:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* file.c (w32_io_info): should return handle because FileIndex is
valid only while file is open. [ruby-dev:28088]
-Wed Dec 21 12:12:21 2005 Tanaka Akira <akr@m17n.org>
+Wed Dec 21 14:53:26 2005 Tanaka Akira <akr@m17n.org>
- * test/pathname/test_pathname.rb (test_kernel_open): use
- File.identical?.
+ * lib/pathname.rb (test_kernel_open): use File.identical?.
[ruby-talk:171804]
Tue Dec 20 22:41:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -4965,102 +2794,36 @@ Tue Dec 20 22:41:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (eval_under_i): evaluate source in caller's frame.
[ruby-dev:28076]
-Tue Dec 20 12:53:23 2005 why the lucky stiff <why@ruby-lang.org>
-
- * ext/syck/rubyext.c (syck_emitter_reset): to ensure compatibility
- with previous Ruby versions, documents are no longer headless.
-
-Tue Dec 20 12:33:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/syck/rubyext.c (syck_node_transform): ruby object holding
- explicitly freed SyckNode caused SEGV. [ruby-dev:28067]
-
- ... I think syck GC problem was solved now!
-
-Tue Dec 20 01:46:48 2005 Tanaka Akira <akr@m17n.org>
-
- * io.c (rb_f_backquote): fix a GC problem on
- IA64 with gcc 4.0.3 20051216 (prerelease) -O3.
-
-Mon Dec 19 23:32:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (rb_call_super): use original method name on exception.
+ [ruby-dev:28078]
- * Makefile.in (XCFLAGS): separated as well as win32/Makefile.sub.
+Tue Dec 20 13:11:59 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * main.c (always_gc): dllimport is required for VC to import a DLL
- symbol. fixed: [ruby-dev:28051]
+ * ext/syck/rubyext.c: fixed GC problem (backported HEAD 1.55 - 1.62)
+ [ruby-dev:27839]
- * parse.y (rb_symname_p): fixed wrong validation. [ruby-dev:28047]
-
-Mon Dec 19 23:09:24 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * ext/syck/syck.h (S_FREE): small hack. no need to check if pointer is
+ NULL or not before S_FREE.
* st.c: uses malloc instead of xmalloc to avoid GC. syck uses st_insert
in gram.c to insert node from rb_syck_bad_anchor_handler into
SyckParser's hash table. if GC occurs in st_insert, it's not under
SyckParser's mark system yet. so RString can be released wrongly.
+ [ruby-dev:28057]
- * ext/syck/syck.h (S_FREE): small hack. no need to check if pointer is
- NULL or not before S_FREE.
-
- * ext/syck/rubyext.c (syck_parser_assign_io): rb_check_string_type can
- return new RString. if so, it becomes unreachable from GC after
- returns syck_parser_assign_io, and can be freed by GC. (dangling
- in syck io system) so extends its life time till syck_parse is called.
-
- * ext/syck/rubyext.c (syck_parser_s_alloc): always allocates bonus,
- so no need to check if NULL, and "volatile VALUE hash"
- is not needed. (bonus->port was not protected in syck_emitter_reset)
-
- * ext/syck/rubyext.c (syck_mark_parser): ditto.
-
- * ext/syck/rubyext.c (syck_parser_load): ditto.
-
- * ext/syck/rubyext.c (syck_parser_load_documents): ditto.
-
- * ext/syck/rubyext.c (syck_emitter_s_alloc): ditto.
-
- * ext/syck/rubyext.c (syck_mark_emitter): ditto.
-
- * ext/syck/rubyext.c (syck_emitter_reset): ditto.
-
- * ext/syck/rubyext.c (syck_scalar_value_set): "should set newly
- allocated memory instead of RString's internal storage" stuff again.
- by this, should call syck_free_node instead of rb_syck_free_node.
-
- * ext/syck/rubyext.c (syck_node_type_id_set): ditto.
-
- ... I believe syck GC problem was solved by this.
-
-Mon Dec 19 12:20:59 2005 Tanaka Akira <akr@m17n.org>
-
- * eval.c (FUNCTION_CALL_MAY_RETURN_TWICE): activate only
- before gcc 4.0.3 on SPARC and IA64.
-
-Mon Dec 19 11:37:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/syck/rubyext.c: sorry, I reverted my "should set newly
- allocated memory instead of RString's internal storage" stuff.
- node allocated in rubyext.c seems to be freed by rb_syck_free_node
- not syck_free_node, and it won't free data.str->ptr and type_id.
-
- (I still think this is unsafe because RString(foo)->ptr becomes
- dangling pointer when RString is modified or freed, but anyway
- I misunderstood, so go back to original code for now)
-
-Sat Dec 17 21:50:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Dec 20 12:53:23 2005 why the lucky stiff <why@ruby-lang.org>
- * ext/syck/rubyext.c (syck_emitter_reset): should initialize
- emitter->bonus->oid. otherwise rb_gc_mark crashes.
+ * ext/syck/rubyext.c (syck_emitter_reset): to ensure compatibility
+ with previous Ruby versions, documents are no longer headless.
- * ext/syck/rubyext.c (syck_mark_parser): should mark anchor nodes
- because they hold ruby objects. (ie: rb_syck_bad_anchor_handler)
+Tue Dec 20 01:46:48 2005 Tanaka Akira <akr@m17n.org>
-Sat Dec 17 11:00:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * io.c (rb_f_backquote): fix a GC problem on
+ IA64 with gcc 4.0.3 20051216 (prerelease) -O3.
- * ext/syck/rubyext.c (rb_syck_compile): avoid potential memory
- leak.
+Mon Dec 19 23:32:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/syck/rubyext.c (syck_set_ivars): avoid potential memory
- leak by explicit symbol allocation.
+ * parse.y (rb_symname_p): fixed wrong validation. [ruby-dev:28047]
Sat Dec 17 03:57:01 2005 Tanaka Akira <akr@m17n.org>
@@ -5072,35 +2835,10 @@ Sat Dec 17 03:30:23 2005 Tanaka Akira <akr@m17n.org>
* eval.c (bmcall): fix a GC problem by tail call on
IA64 with gcc 4.0.3 20051216 (prerelease).
-Fri Dec 16 17:53:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/syck/rubyext.c (rb_syck_compile): fixed memory leak.
-
- * ext/syck/rubyext.c: should protect global variable from GC.
-
-Fri Dec 16 11:44:43 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/syck/rubyext.c (syck_resolver_tagurize): fixed memory leak.
-
- * ext/syck/rubyext.c (syck_node_type_id_set): should set newly
- allocated memory instead of RString's internal storage.
-
- * ext/syck/rubyext.c (syck_scalar_value_set): ditto.
-
- ... these fixes won't fix [ruby-dev:27839]. more work is needed.
+Fri Dec 16 00:54:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-Fri Dec 16 04:38:55 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/delegate.rb (Delegator::method_missing): should delegate
- block as well.
-
-Thu Dec 15 19:57:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/cgi.rb (CGI::QueryExtension::MorphingBody): fix criteria to
- use Tempfile. A fix from Zev Blut <rubyzbibd at ubit.com>.
- [ruby-core:06076]
-
- * string.c: remove global functions work on $_.
+ * signal.c (Init_signal): revert C++ style comment.
+ [ruby-dev:28041]
Thu Dec 15 12:35:14 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -5112,18 +2850,10 @@ Thu Dec 15 01:33:31 2005 Tanaka Akira <akr@m17n.org>
* ext/zlib/zlib.c (zstream_run): fix a GC problem by tail call on
x86_64 with gcc 4.0.3 20051111 (prerelease) (Debian 4.0.2-4)
-Wed Dec 14 23:50:20 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/parsers/parse_c.rb (find_class_comment): fix for class
- document with prototypes. [ruby-core:06863]
+Wed Dec 14 12:11:46 2005 WATANABE Hirofumi <eban@ruby-lang.org>
-Wed Dec 14 23:39:53 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (has_magic): glob names contain alphabets to enable case fold
- search. [ruby-dev:27735]
-
- * dir.c (Init_Dir): FNM_SYSCASE which is default case fold flag.
- [ruby-dev:23296]
+ * test/gdbm/test_gdbm.rb: specify pid for the argument of
+ Process.wait. workaround for Cygwin.
Wed Dec 14 12:01:26 2005 Tanaka Akira <akr@m17n.org>
@@ -5147,18 +2877,11 @@ Tue Dec 13 00:08:09 2005 Tanaka Akira <akr@m17n.org>
* sprintf.c (rb_str_format): fix a GC problem.
[ruby-dev:28001]
-Mon Dec 12 15:51:22 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Dec 12 15:54:56 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* test/openssl/test_ssl.rb (test_parallel): call GC.start to close
unused files. [ruby-dev:27981]
-Mon Dec 12 09:58:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * range.c (range_cover): new method Range#cover? added. the
- method name might be changed. thanks to takano32 at
- http://www.rubyist.net/~matz/20051210.html#c08 for name
- suggestion. [ruby-talk:167182]
-
Mon Dec 12 00:33:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/digest/digest.c (rb_digest_base_s_digest): add volatile to
@@ -5168,38 +2891,11 @@ Mon Dec 12 00:33:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
be called before actual variable initialization.
[ruby-dev:27986]
-Sun Dec 11 23:54:07 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/*: update to support libraries in ActiveTcl8.4.12.0
- (see ext/tk/ChangeLog.tkextlib).
-
- * ext/tk/sample/scrollframe.rb: add a new sample.
-
-Sun Dec 11 22:07:58 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * test/rinda/test_rinda.rb (test_remote_array_and_hash): pseudo remote
- objects are protected against GC. [ruby-dev:27911]
-
-Sat Dec 10 01:06:06 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
-
- * lib/matrix.rb: add Matrix#determinant_e, Matrix#rank_e.
- [ruby-dev:27820] and related thread.
-
-Sat Dec 10 00:31:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (calling_scope_t): gave names to magic numbers for rb_call().
- [ruby-dev:27978]
-
Fri Dec 9 23:31:02 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/rexml/encoding.rb (encoding=): give priority to particular
conversion to iconv. [ruby-core:06520]
-Fri Dec 9 23:16:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * range.c (range_include): return false unless included in numeric
- range. fixed: [ruby-dev:27975]
-
Thu Dec 8 02:07:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (umethod_bind): adjust invoking class for module method.
@@ -5214,15 +2910,6 @@ Wed Dec 7 17:10:27 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
* sprintf.c (rb_f_sprintf): [ruby-dev:27967]
-Wed Dec 7 16:39:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * range.c (range_include): use discrete membership for non Numeric
- values, for example, String.
-
- * numeric.c (num_scalar_p): new method. [ruby-dev:27936]
-
- * lib/complex.rb (Complex#scalar?): ditto.
-
Wed Dec 7 15:31:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* sprintf.c (rb_str_format): integer overflow check added.
@@ -5250,22 +2937,11 @@ Wed Dec 7 01:02:04 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/demos-en/menu.rb: ditto.
-Tue Dec 6 16:48:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (ruby_xmalloc2): change check condition for integer
- overflow. [ruby-dev:27399]
-
- * gc.c (ruby_xrealloc2): ditto.
-
Tue Dec 6 16:37:57 2005 Yuya Nishida <yuya@j96.org>
* eval.c (exec_under): avoid accessing ruby_frame->prev.
[ruby-dev:27948]
-Fri Dec 2 19:06:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (Compare): should not fold double byte alphabet on win9x.
-
Thu Dec 1 00:50:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_funcall2): allow to call protected methods.
@@ -5273,9 +2949,6 @@ Thu Dec 1 00:50:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
Wed Nov 30 23:52:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (struct parser_params): fields common to ripper must be
- placed at each same offset.
-
* parse.y (NEWHEAP, ADD2HEAP): set count after pointer was set.
fixed: [ruby-dev:27896]
@@ -5284,53 +2957,23 @@ Wed Nov 30 13:43:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* misc/ruby-mode.el (ruby-expr-beg): support $! at the end of
expression. [ruby-dev:27868]
-Mon Nov 28 20:24:22 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/pp.rb (PP::PPMethods#object_address_group): mask an address with
- word size.
-
-Tue Nov 29 23:57:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (struct parser_params): heap must be placed at same offset
- also in ripper.y. fixed: [ruby-dev:27846]
-
- * parse.y (yycompile): prevent vparser from tail call optimization.
- fixed: [ruby-dev:27851]
-
- * parse.y (parser_mark): value needs to be marked.
- fixed: [ruby-dev:27845]
-
-Tue Nov 29 22:45:30 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * lib/drb/observer.rb (notify_observers): follow change of observer.rb.
- fixed: [ruby-core:6796]
-
-Mon Nov 28 20:24:22 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/pp.rb (PP::PPMethods#object_address_group): adjust address format.
-
-Mon Nov 28 18:55:22 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Nov 28 18:55:43 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* ext/socket/socket.c (init_inetsock_internal): remove setting
SO_REUSEADDR option on server socket on Cygwin.
fixed: [ruby-core:6765] ([ ruby-Bugs-2872 ])
-Mon Nov 28 13:11:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Nov 28 13:08:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.c (rb_w32_strerror): remove all CR and LF. (avoid broken
error message on bccwin32 + winsock)
-Mon Nov 28 09:15:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Nov 28 09:21:49 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/mkmf.rb (create_makefile): should not change sodir with
- dir.gsub!. (bccwin32 failed to install third party extensions)
+ dir.gsub!. (bccwin32 failed to install third party exntesions)
[ruby-dev:27834]
-Sun Nov 27 05:37:20 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/pathname.rb: use File.basename to decompose pathnames.
- experimental Windows support.
-
Sun Nov 27 00:56:13 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/wsdl/xmlSchema/complexContent.rb: missing
@@ -5340,103 +2983,23 @@ Sat Nov 26 19:57:45 2005 WATANABE Hirofumi <eban@ruby-lang.org>
* dln.c (conv_to_posix_path): should initialize posix.
-Fri Nov 25 20:34:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/xmlrpc/datetime.rb (DateTime::to_a): comparison with non
- array-convertible object must return false.
-
-Fri Nov 25 14:34:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * range.c (range_max): treat end exclusion without iteration if
- the end value is an integer. [ruby-talk:167433]
-
-Fri Nov 25 12:52:57 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb: added backward compatibility codes.
- * lib/rss/parser.rb: ditto.
- * test/rss/test_parser.rb: ditto.
- * test/rss/test_2.0.rb: ditto.
-
- * test/rss/test_content.rb: use #__send__ instead of #funcall for
- no private method.
-
-Fri Nov 25 12:39:56 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb: improved type conversion.
- * lib/rss/1.0.rb: ditto.
- * lib/rss/0.9.rb: ditto.
- * lib/rss/2.0.rb: ditto.
- * lib/rss/image.rb: ditto.
- * lib/rss/syndication.rb: ditto.
-
- * test/rss/test_2.0.rb: added type conversion tests.
- * test/rss/test_accessor.rb: ditto.
- * test/rss/test_to_s.rb: ditto.
- * test/rss/test_syndication.rb: ditto.
- * test/rss/test_setup_maker_2.0.rb: ditto.
- * test/rss/test_setup_maker_1.0.rb: ditto.
- * test/rss/test_setup_maker_0.9.rb: ditto.
- * test/rss/test_maker_sy.rb: ditto.
- * test/rss/test_maker_image.rb: ditto.
- * test/rss/test_maker_2.0.rb: ditto.
- * test/rss/test_maker_0.9.rb: ditto.
- * test/rss/test_image.rb: ditto.
-
- * test/rss/test_maker_1.0.rb: use assert instead of assert_equal.
-
- * test/rss/rss-assertions.rb: improved type conversion assertions.
-
-Fri Nov 25 10:38:20 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/image.rb: added Image prefix.
-
- * lib/rss/maker/image.rb: ditto.
-
-Fri Nov 25 10:33:02 2005 Kouhei Sutou <kou@cozmixng.org>
+Thu Nov 24 21:05:58 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/rss/test_2.0.rb: added RSS 2.0 tests.
-
- * test/rss/rss-assertions.rb: extended XML stylesheet assertion.
+ * configure.in (AC_CHECK_FUNCS): need to check link().
+ fixed: [ruby-dev:27814]
- * lib/rss/0.9.rb: added initialize method.
-
- * test/rss/test_1.0.rb: cleanup.
-
-Fri Nov 25 10:29:48 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * range.c (range_min): use <=> comparison rather than iteration.
- [ruby-talk:167420]
-
- * range.c (range_max): ditto.
-
-Thu Nov 24 01:31:44 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Nov 24 01:22:25 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* file.c (w32_io_info): CreateFile failed on Win9x if file was already
opened. (FILE_SHARE_READ was needed, but actually I don't understand
the flags of CreateFile well...)
-Wed Nov 23 23:52:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * numeric.c (num_div): use floor rather than rb_Integer().
- [ruby-dev:27674]
-
-Wed Nov 23 22:34:15 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/parser.rb: added entity handling type predicate.
- * lib/rss/rexmlparser.rb: ditto.
- * lib/rss/xmlparser.rb: ditto.
- * lib/rss/xmlscanner.rb: ditto.
-
- * lib/rss/xmlscanner.rb: more robust entity handling.
-
- * test/rss/test_parser.rb: added an entity handling test.
-
Wed Nov 23 20:59:01 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb: add Tk.pkgconfig_list and Tk.pkgconfig_get
[Tk8.5 feature].
- * ext/tk/lib/tk/text.rb: supports new indices modifiers on a Text
+ * ext/tk/lib/tk/text.rb: supports new indices modifires on a Text
widget [Tk8.5 feature].
* ext/tk/lib/tk/virtevent.rb: add TkNamedVirtualEvent.
@@ -5446,7 +3009,7 @@ Wed Nov 23 20:59:01 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/event.rb: add :data key for virtual events [Tk8.5
feature].
-Wed Nov 23 18:52:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Nov 23 18:55:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* file.c (w32_io_info): should not call GetFileInformationByHandle
for pipe.
@@ -5455,61 +3018,15 @@ Wed Nov 23 18:52:45 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* file.c (w32_io_info): now can identify directory on WinNT.
-Wed Nov 23 18:46:53 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/: use #__send__ instead of #send.
- * test/rss/: ditto.
-
-Wed Nov 23 18:32:56 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rss/test_taxonomy.rb: use #reject directory.
-
-Wed Nov 23 18:26:00 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/taxonomy.rb: changed class or module prefix to
- Taxonomy from Taxo.
- * lib/rss/maker/taxonomy.rb: ditto.
-
-Wed Nov 23 18:21:11 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/maker/taxonomy.rb: implemented taxonomy module for RSS
- Maker.
- * lib/rss/taxonomy.rb: supported RSS Maker.
- * lib/rss/maker.rb: added taxonomy module support.
-
- * lib/rss/rss.rb: adjusted to other element API.
- * lib/rss/1.0.rb: adjusted to other element API but backward
- compatibility is reserved.
- * lib/rss/0.9.rb: ditto.
-
- * test/rss/test_maker_taxo.rb: added test case for taxonomy module
- for RSS Maker.
- * test/rss/test_setup_maker_1.0.rb: added tests for taxo:topic.
-
- * test/rss/test_setup_maker_1.0.rb: added backward compatibility
- test.
- * test/rss/test_setup_maker_0.9.rb: ditto.
- * test/rss/test_setup_maker_2.0.rb: ditto.
-
- * test/rss/rss-testcase.rb: added convenience method for setting
- up taxo:topic.
- * test/rss/rss-assertions.rb: added assertion for taxo:topic.
-
- * sample/rss/blend.rb: followed new API.
-
-Wed Nov 23 17:42:24 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb: fixed a indentation bug.
-
- * lib/rss/taxonomy.rb: fixed <taxo:topic> #to_s bug.
-
- * test/rss/test_taxonomy.rb: added a #to_s test.
-
Wed Nov 23 03:40:49 2005 Guy Decoux <ts@moulon.inra.fr>
* re.c (KR_REHASH): should cast to unsigned for 64bit CPU.
[ruby-core:06721]
+Wed Nov 23 11:01:33 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * intern.h, file.c: failed to compile on windows.
+
Wed Nov 23 07:26:44 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/extconf.rb: check for X509V3_EXT_nconf_nid.
@@ -5541,14 +3058,14 @@ Tue Nov 22 18:36:11 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.c (winnt_stat): set mapped errno instead of ENOENT.
-Tue Nov 22 14:36:54 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Nov 22 14:46:57 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* file.c (rb_file_s_basename): skip slashes just after UNC top slashes.
* test/ruby/test_path.rb (test_dirname, test_basename): follow new
spec. and add new tests.
-Tue Nov 22 13:30:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Nov 22 13:18:32 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.c (rb_w32_stat): Dir.chdir('//server/shared');
p Dir.glob('*') should work on WinNT. (implemented our own
@@ -5577,11 +3094,6 @@ Mon Nov 21 16:03:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* win32/setup.mk: findstr doesn't exist on win9x.
fixed: [ruby-dev:27756]
-Sun Nov 20 21:39:27 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * regparse.c (fetch_token_in_cc): tok->escaped should be
- initialized. [ruby-dev:27763]
-
Sun Nov 20 22:34:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (rb_symname_p): [ not followed by ] is not valid symbol.
@@ -5592,10 +3104,6 @@ Sat Nov 19 19:57:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/fileutils.rb (FileUtils::ln): ln documentation fix.
[ruby-core:06661]
-Sat Nov 19 08:19:38 2005 Zach Dennis <zdennis@mktec.com>
-
- * ext/socket/socket.c: Socket Documentation. [ruby-core:6552]
-
Sat Nov 19 07:34:32 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/font.rb: remove dependency on Ruby's version (1.8
@@ -5605,7 +3113,7 @@ Sat Nov 19 07:34:32 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/tkextlib/treectrl/demo.rb: ditto.
-Fri Nov 18 18:07:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Nov 18 17:57:08 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* file.c (rb_file_s_dirname): should use skipprefix for UNC path.
pointed out by nobu ([ruby-dev:27744]). fixed: [ruby-core:5076]
@@ -5626,7 +3134,7 @@ Fri Nov 18 17:35:09 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/namespace.rb: ditto.
-Fri Nov 18 16:47:33 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Nov 18 17:26:06 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* file.c (rb_file_s_dirname): added checks for some patterns with drive
letter. fixed: [ruby-dev:27738]
@@ -5634,37 +3142,11 @@ Fri Nov 18 16:47:33 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* test/ruby/test_path.rb (test_dirname): added tests for above
patterns.
-Fri Nov 18 12:19:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Nov 18 12:18:02 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.h (S_IFIFO): r,w = IO.pipe; r.stat.pipe? now
returns true on VisualC++6.
-Thu Nov 17 17:58:00 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/1.0.rb: added convenience method 'resources'.
-
- * lib/rss/taxonomy.rb: ditto.
-
- * test/rss/rss-assertions.rb: added test for 'resources'.
-
- * test/rss/test_taxonomy.rb: ditto.
-
-Thu Nov 17 17:53:30 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/taxonomy.rb: implemented taxonomy module.
-
- * test/rss/test_taxonomy.rb: added tests for taxonomy support.
-
-Thu Nov 17 17:40:19 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/1.0.rb: added rdf:Bag.
-
-Thu Nov 17 13:52:00 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb : removed needless argument 'prefix'.
-
- * lib/rss/parser.rb: ditto.
-
Wed Nov 16 23:24:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* common.mk (static-ruby): overridable.
@@ -5674,24 +3156,12 @@ Wed Nov 16 23:24:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb (RUBY, RUBYW): overridable.
-Wed Nov 16 01:29:31 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/trackback.rb: added TrackBack prefix.
-
- * lib/rss/maker/trackback.rb: ditto.
-
-Wed Nov 16 01:26:13 2005 Kouhei Sutou <kou@cozmixng.org>
+Tue Nov 15 23:46:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * lib/rss/rss.rb (RSS::VERSION): 0.1.5 -> 0.1.6.
-
- * test/rss/test_version.rb (RSS::TestVersion#test_version): ditto.
+ * lib/find.rb (Find::find): should not ignore symbolic links to
+ non-existing files. [ruby-talk:165866]
-Tue Nov 15 23:54:24 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (file_load_ok): eaccess() returns 0 on success.
- fixed: [ruby-dev:27713]
-
-Tue Nov 15 16:36:03 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Nov 15 16:23:26 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* array.c (rb_ary_fill): previous commit disabled this usage:
@@ -5699,17 +3169,9 @@ Tue Nov 15 16:36:03 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
a.fill {|i| a[i] * 10} #=> [nil, nil, ...., nil]
previous commit has the advantage of early garbage collection, but
- potentially this would break some script. so I reverted behavior.
-
-Tue Nov 15 16:15:23 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * file.c (file_load_ok): use eaccess() instead of actually opening
- the file. [ruby-talk:156378]
-
- * lib/jcode.rb (String::reverse): add new methods.
- [ruby-list:41245]
+ potensially this would break some script. so I reverted behavior.
-Tue Nov 15 15:49:34 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Nov 15 16:04:10 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* array.c (rb_ary_fill): tail elements were vanished when the middle
part of array was filled. (ie: [0,1,2,3,4].fill(-1,2,1) => [0,1,-1])
@@ -5731,71 +3193,33 @@ Mon Nov 14 17:36:22 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* array.c (rb_ary_first): RDoc update from Daniel Berger
<djberg96@yahoo.com>. [ruby-core:06577].
-Sun Nov 13 10:55:24 2005 Minero Aoki <aamine@loveruby.net>
+Fri Nov 11 10:31:44 2005 Zach Dennis <zdennis@mktec.com>
- * lib/uri/common.rb (escape): regard second argument as a
- character set. [ruby-dev:27692]
-
-Sat Nov 12 08:36:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in, eval.c, intern.h: check fd_mask type.
-
- * configure.in (socketpair): need to be checked.
-
-Fri Nov 11 19:53:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * eval.c, intern.h: failed to compile where NFDBITS is defined but
- howmany() is not defined. [ruby-dev:27680]
-
- * io.c (is_socket): failed to compile where S_ISSOCK is not defined.
-
- * io.c (pipe_open): failed to compile where socketpair is not supported.
+ * ext/socket/socket.c: Socket Documentation. [ruby-core:6552]
Fri Nov 11 08:20:56 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* Makefile.in (OUTFLAG): keep trailing spaces. [ruby-dev:27666]
- * mkconfig.rb: substitution references added.
+ * mkconfig.rb: substitution refereces added.
-Fri Nov 11 07:39:49 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Nov 11 07:44:18 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* configure.in: undef HAVE_LINK on BeOS. (link(2) always returns
EINVAL, and this causes error in test/fileutils.)
- * file.c: override chown(2) and fchown(2) on BeOS. (these functions
+ * file.c: overwride chown(2) and fchown(2) on BeOS. (these functions
should not change user/group id if -1 is passed as corresponding
argument, and this causes error in test/fileutils too)
[ruby-dev:27672]
-Thu Nov 10 21:05:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/shellwords.rb: fix for blank but not empty string.
- fixed: [ruby-dev:27663]
-
-Wed Nov 9 08:39:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/shellwords.rb: refactored. [ruby-core:06581]
-
-Tue Nov 8 17:35:53 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * intern.h, eval.c (rb_thread_signal_raise): constified.
-
- * signal.c: cosmetic change.
+ * file.c (rb_file_s_link): checks HAVE_LINK.
Tue Nov 8 15:32:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/drb/ssl.rb (DRb::SSLConfig#accept): fixed typo.
[ruby-dev:27560] [ruby-core:4627]
-Mon Nov 7 20:54:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/iconv/iconv.c: iconvctl() support. [EXPERIMENTAL]
-
-Mon Nov 7 16:23:23 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/openssl/ossl.h: need to include winsock2.h before including
- windows.h by some openssl headers.
-
Mon Nov 7 13:43:51 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/stubs.c (_nativethread_consistency_check): use simpler
@@ -5806,7 +3230,7 @@ Mon Nov 7 13:43:51 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/tkutil/tkutil.c: ditto.
-Mon Nov 7 00:06:12 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Nov 7 00:06:58 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/yaml.rb: removed :nodoc: to generate Kernel doc. [ruby-core:6324]
@@ -5815,7 +3239,7 @@ Sun Nov 6 23:39:13 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/iconv/iconv.c (Iconv::BrokenLibrary): exception when detected a
bug of underlying library.
-Sun Nov 6 21:43:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sun Nov 6 21:46:59 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/tk/stubs.c (ruby_tcl_create_ip_and_stubs_init): should touch
interpreter after initialization is done. [ruby-dev:27638]
@@ -5825,33 +3249,21 @@ Sun Nov 6 20:13:27 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_s_readlink): readlink(2) on AIX fails with ERANGE if
buffer size is less than required. fixed: [ruby-dev:27634]
-Sat Nov 5 13:42:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in, cygwin/GNUmakefile.in (mingw): use def file to alias
- symbols. [ruby-dev:27532]
-
- * bcc32/mkexports.rb, win32/mkexports.rb: make aliases in DLL.
-
- * win32/win32.c, win32/win32.h: replace symbols only when RUBY_EXPORT
- is defined.
-
-Thu Nov 3 07:57:39 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/open-uri.rb (open_loop): find_proxy should return nil when
- proxy does not exist. [ruby-dev:27630]
-
Wed Nov 2 20:25:28 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/extconf.rb: ext/tk/extconf.rb: change the check parameter
for Win32.
+Wed Nov 2 20:14:53 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tcltklib: merge into ext/tk and remove.
+
Wed Nov 2 19:03:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c (ip_rbUpdateObjCmd, ip_rb_threadUpdateObjCmd):
- passed improper flags to DoOneEvent().
+ * ext/tcltklib/tcltklib.c (ip_rbUpdateObjCmd,
+ ip_rb_threadUpdateObjCmd): passed improper flags to DoOneEvent().
- * ext/tk/tkutil/tkutil.c: use rb_obj_respond_to() instead of
- rb_respond_to().
+ * ext/tk/tkutil.c: use rb_obj_respond_to() instead of rb_respond_to().
Tue Nov 1 14:20:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -5861,7 +3273,7 @@ Tue Nov 1 14:20:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (exec_under): frame during eval should preserve external
information.
-Tue Nov 1 10:48:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Tue Nov 1 10:50:17 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/extconf.rb: should check ERR_peek_last_error().
[ruby-dev:27597]
@@ -5873,14 +3285,19 @@ Mon Oct 31 17:34:46 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* configure.in: use proper option for Sun linker. A patch from
Shinya Kuwamura <kuwa at labs.fujitsu.com>. [ruby-dev:27603]
-Mon Oct 31 05:46:08 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Oct 31 11:27:22 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/gdbm/test_gdbm.rb, test/sdbm/test_sdbm.rb (test_s_open_error):
+ skip on Win32/DOS platforms.
+
+Mon Oct 31 05:49:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_cipher.c (ossl_cipher_update): input data must
not be empty. [ruby-talk:161220]
* test/openssl/test_cipher.rb: add test for Cipher#update("").
-Mon Oct 31 05:38:26 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Oct 31 05:37:20 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/httpservlet/cgihandler.rb
(WEBrick::HTTPServlet::CGIHandler#do_GET): the value of Set-Cookie:
@@ -5892,14 +3309,17 @@ Mon Oct 31 05:38:26 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* test/webrick/test_cookie.rb, test/webrick/test_cgi.rb,
test/webrick/webrick.cgi: add some test for cookie.
-Mon Oct 31 02:33:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+Mon Oct 31 03:19:36 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/readline/readline.c (readline_readline): type check.
+ [ruby-core:6089]
* numeric.c (fix_rshift): RDoc fix. [ruby-core:6351]
* util.h (strtod): add #undef for platforms defines strtod()
macro. [ruby-dev:27563]
-Mon Oct 31 02:31:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Oct 31 02:35:59 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* test/ruby/test_float.rb (test_precision): test by assert_in_delta.
[ruby-dev:27575]
@@ -5911,33 +3331,25 @@ Sat Oct 29 01:58:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/fcntl/fcntl.c: ditto.
-Sat Oct 29 16:56:03 2005 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb: added seven predicates sunday? to saturday?.
-
- * lib/date.rb: added two methods {prev,next}_month,
- that are almost same as << and >>.
-
-Thu Oct 27 20:34:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enumerator.c (enumerator_allocate): allow subclassing.
-
Thu Oct 27 16:45:31 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (scan_once): wrong condition to use mbclen2().
[ruby-dev:27535]
-Thu Oct 27 11:53:17 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * missing.h, missing/memcmp.c, missing/memmove.c:
- ANSI compatible interface.
-
-Wed Oct 26 09:15:48 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Oct 26 09:27:27 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/syck/implicit.c (syck_type_id_to_uri): should return
newly allocated memory. otherwise, type_id will be freed
twice. [ruby-dev:27384] [ruby-core:6385]
+Wed Oct 26 09:04:51 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ruby.h (Qfalse, Qtrue, Qnil, Qundef): make sure these immediate
+ values have VALUE type. there is an environment where sizeof(VALUE)
+ != sizeof(int) like IA64. if 32bit integer (Qtrue) is passed to ANYARGS
+ and received by 64bit integer (VALUE), upper bits may have garbage value.
+ [ruby-dev:27513]
+
Wed Oct 26 01:58:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (RUBY_EXTERN): macro to export symbols in shared
@@ -5948,14 +3360,6 @@ Wed Oct 26 01:58:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb (extmake): RUBY_EXTERN for static linked extensions.
-Tue Oct 25 20:06:59 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ruby.h (Qfalse, Qtrue, Qnil, Qundef): make sure these immediate
- values have VALUE type. there is an environment where sizeof(VALUE)
- != sizeof(int) like IA64. if 32bit integer (Qtrue) is passed to ANYARGS
- and received by 64bit integer (VALUE), upper bits may have garbage value.
- [ruby-dev:27513]
-
Tue Oct 25 15:32:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/rational.rb: applied documentation patch from Gavin Sinclair
@@ -5964,22 +3368,12 @@ Tue Oct 25 15:32:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/irb.rb (IRB::Irb::eval_input): handle prompts with newlines
in irb auto-indentation mode. [ruby-core:06358]
-Tue Oct 25 14:21:46 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * gc.c (garbage_collect): sorry, previous commit was incorrect.
- [ruby-core:6386]
-
-Tue Oct 25 13:40:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * gc.c (garbage_collect): return now whether there're rooms for new
- objects, rather than whether GC run. fixed: [ruby-core:6376]
-
Tue Oct 25 02:12:08 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/rdoc/markup/simple_markup.rb (SM::SimpleMarkup::LABEL_LIST_RE):
reduce redundant backtrack. [ruby-talk:161771]
-Tue Oct 25 00:35:33 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Oct 25 00:27:35 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/rinda/*: RDoc documentation from Eric Hodel
<drbrain@segment7.net> added.
@@ -5989,19 +3383,11 @@ Mon Oct 24 21:14:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in, io.c: use sys/syscall.h if syscall.h is not available.
[ruby-core:06247]
-Mon Oct 24 20:38:25 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Oct 24 20:49:45 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* ext/Win32API/lib/win32/resolv.rb (get_info): support multiple DNS.
fixed: [ruby-list:40058], [ruby-dev:27479]
-Mon Oct 24 11:01:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/tk/canvas.rb (TkCanvasItemConfig::__item_val2ruby_optkeys):
- typo fixed. [ruby-talk:162187]
-
- * ext/tk/lib/tk/menu.rb (TkMenuEntryConfig::__item_val2ruby_optkeys):
- ditto. [ruby-core:06359]
-
Mon Oct 24 07:57:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/tk/lib/tk/canvas.rb (TkCanvasItemConfig::__item_val2ruby_optkeys):
@@ -6010,18 +3396,15 @@ Mon Oct 24 07:57:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/tk/lib/tk/menu.rb (TkMenuEntryConfig::__item_val2ruby_optkeys):
ditto. [ruby-core:06359]
- * lib/matrix.rb (Matrix::initialize): use funcall instead of send
- to allow private methods to be called. A report from
- Jean-Claude Arbaut <jcarbaut@laposte.net>. [ruby-core:06359]
+Sun Oct 23 21:50:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-Mon Oct 24 00:41:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * time.c (time_sunday): added predicate methods for the days of the
- week. [ruby-list:41340]
+ * ext/enumerator/enumerator.c: applied documentation patch from
+ James Edward Gray II <james@grayproductions.net>.
+ [ruby-core:06348]
Sun Oct 23 07:11:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/extconf.rb: improve messages [ruby-core:06325].
+ * ext/tcltklib/extconf.rb: improve messages [ruby-core:06325].
* ext/tk/lib/tk.rb, ext/tk/lib/tk/canvas.rb, ext/tk/lib/tk/entry.rb,
ext/tk/lib/tk/frame.rb, ext/tk/lib/tk/image.rb,
@@ -6048,16 +3431,6 @@ Sat Oct 22 23:54:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb, lib/mkmf.rb (with_config): support --with-extension
options. [ruby-dev:27449]
-Sat Oct 22 14:25:43 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * util.[hc] (ruby_add_suffix): constified.
-
- * util.[hc] (ruby_scan_{oct,hex}): fixed typo. (renamed from
- scan_{oct,hex})
-
- * util.c: almostly ANSI styled. (except for functions depending on
- macro and K&R technique)
-
Sat Oct 22 13:26:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* object.c (sym_inspect), parse.y (parser_yylex, rb_symname_p): check
@@ -6068,20 +3441,7 @@ Sat Oct 22 13:26:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* time.c (rb_strftime): removed meaningless volatile modifiers, and
concatenate successive nul characters at once. [ruby-dev:27472]
- * ext/tk/lib/tk/font.rb, ext/tk/lib/tkextlib/ICONS/icons.rb,
- ext/tk/sample/tkextlib/treectrl/demo.rb, lib/net/imap.rb,
- lib/rss/parser.rb, test/rss/test_content.rb,
- test/rss/test_dublincore.rb, test/rss/test_syndication.rb,
- test/rss/test_trackback.rb, test/ruby/test_eval.rb,
- test/socket/test_socket.rb, test/socket/test_udp.rb:
- Object#fcall was renamed as Object#funcall.
-
-Sat Oct 22 10:08:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * missing.h, missing/*.c: SUSv3 compatible strcasecmp and strncasecmp,
- ANSI compatible strtol and strtoul, and ANSI styled other functions.
-
-Fri Oct 21 19:16:08 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Oct 21 19:21:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* rubysig.h (CHECK_INTS): fixed typo. (I believe bit-or is improper)
@@ -6089,27 +3449,7 @@ Fri Oct 21 17:49:32 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* bin/erb (ERB::Main::run): typo fixed. [ruby-core:06337]
-Fri Oct 21 15:42:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * intern.h, struct.c (rb_struct_iv_get): constified.
-
- * marshal.c: avoid one VC++6 warning for implicit conversion
- from int to char.
-
- * ruby.h: ANSI styled.
-
- * bcc32/Makefile.sub (HAVE_HYPOT): added.
-
- * ext/socket/extconf.rb: BeOS is only one platform should call
- closesocket, so check __BEOS__ macro directly. (I was worried
- accidently HAVE_CLOSESOCKET is defined on windows again because
- it has it)
-
- * ext/socket/{getaddrinfo.c,socket.c}: ditto.
-
- ... these are all cosmetic changes.
-
-Fri Oct 21 15:23:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Oct 21 15:27:17 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* bignum.c (bignew_1): convertion from `int' to `char' discards
upper bits, (ie. (char)0xff00 -> 0) so it's better to test if
@@ -6119,26 +3459,7 @@ Fri Oct 21 15:23:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* time.c: should use LONG_LONG instead of `long long'.
-Thu Oct 20 22:22:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parser.y (struct parser_params): parser never modify input string.
-
- * ext/ripper/tools/preproc.rb (prelude): do not append surplus
- newlines to fix line numbers.
-
-Thu Oct 20 11:41:57 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * class.c, eval.c, hash.c, st.c, variable.c: changed /* ??? */ stuff
- protoize generated to ANYARGS.
-
-Thu Oct 20 11:18:11 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * eval.c, file.c, ruby.c: removed strchr, strrchr, strstr definition
- because they are defined in missing.h.
-
- * missing.h, missing/strchr.c, missing/strstr.c: ANSI styled.
-
-Thu Oct 20 09:36:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Oct 20 09:37:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/mkmf.rb (create_makefile): Borland make seems not to allow
empty dependency list. If this change is not good, please correct
@@ -6149,13 +3470,20 @@ Thu Oct 20 07:55:09 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (create_makefile): get rid of a restriction
of Borland make. fixed: [ruby-dev:27460]
- * ext/ripper/depend: ditto.
+Thu Oct 20 00:13:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * rubysig.h (CHECK_INTS): fix typo.
Wed Oct 19 23:58:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (create_makefile): do not create unnecessary empty
directories. fixed: [ruby-dev:27451]
+Wed Oct 19 19:26:15 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (rb_gc_mark_parser): get rid of segfault with old yacc.
+ fixed: [ruby-dev:27439]
+
Wed Oct 19 08:28:32 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_join): elements may contain null pointer strings.
@@ -6163,33 +3491,27 @@ Wed Oct 19 08:28:32 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
Wed Oct 19 02:34:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * enumerator.c, eval.c, gc.c, parse.y, regparse.c, sjis.c, time.c:
- made internal symbols static. [ruby-dev:27435]
+ * eval.c, gc.c, time.c: made internal symbols static. [ruby-dev:27435]
-Tue Oct 18 10:58:27 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Oct 19 01:27:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/dl/depend, ext/dl/extconf.rb, ext/socket/depend,
- ext/socket/extconf.rb: shouldn't define DESTCLEANFILES in depend,
- use $distcleanfiles in extconf.rb.
+ * regex.c (re_compile_pattern): numeric literal inside character class
+ disabled succeeding backtrack. fixed: [ruby-list:41328]
- * win32/Makefile.sub (distclean-local): should remove .config.h.time.
+Mon Oct 17 21:18:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Oct 17 09:42:50 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+ * parse.y (parser_heap): byacc never free parser stack.
+ fixed: [ruby-dev:27428]
- * mkconfig.rb: fixup configure_args for mswin32 configure.
+Mon Oct 17 16:04:47 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * win32/configure.bat (srcdir, target): ditto.
-
-Mon Oct 17 05:01:50 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * env.h: move struct METHOD and struct BLOCK from eval.c to
- support NodeWrap and ParseTree.
+ * file.c (chmod_internal, lchmod_internal): fixed type of 2nd argument.
Sun Oct 16 22:16:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb: omit non-existing directories.
-Sun Oct 16 14:40:54 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sun Oct 16 14:30:05 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/rinda/rinda.rb (Rinda::Tuple#initialize): check remote hash
tuple. fixed: [ruby-list:41227]
@@ -6207,48 +3529,20 @@ Sun Oct 16 03:38:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_thread_schedule): clear rb_thread_critical.
[ruby-core:04039]
-Sun Oct 16 00:13:14 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/configure.bat: remove unnecessary line which prevents
- creating Makefile.
-
-Sat Oct 15 23:52:07 2005 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/ftp.rb: (getbinaryfile): allow nil for localfile, and
- returns retrieved data if localfile is nil.
-
- * lib/net/ftp.rb: (gettextfile): ditto.
-
-Sat Oct 15 19:51:29 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sat Oct 15 19:56:38 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* bin/erb: typo fixed, again. thanks, Doug Kearns.
-Fri Oct 14 23:09:31 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/Makefile.sub (MKFILES): update MKFILES if configure files get
- changed.
-
- * win32/configure.bat, win32/setup.mak (configure_args): store
- arguments to configure files.
-
-Fri Oct 14 22:05:45 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Oct 14 22:08:26 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (ioctl): should set errno.
-Fri Oct 14 16:39:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Fri Oct 14 16:57:32 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/config.rb (Config::FileHandler): :UserDir should be nil.
It is harmful to permit the access to ~/public_html by default.
suggested by Hiroyuki Iwatsuki.
-Fri Oct 14 04:58:38 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_obj_instance_exec): create instance_exec and
- module_exec which pass arguments to the block.
-
- * eval.c (rb_f_funcall): rename fcall to funcall to follow
- tradition.
-
Thu Oct 13 23:29:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (HEAPCNT): bison allocates indivisible size.
@@ -6257,7 +3551,7 @@ Thu Oct 13 23:29:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c, pack.c, ext/syck/rubyext.c, ext/syck/syck.h, missing/isinf.c:
get rid of warnings. fixed: [ruby-core:06247]
-Wed Oct 12 12:51:56 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Wed Oct 12 12:52:57 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl.c (Init_openssl): should call
OpenSSL_add_ssl_algorithms().
@@ -6268,15 +3562,6 @@ Wed Oct 12 11:08:54 2005 WATANABE Hirofumi <eban@ruby-lang.org>
Tue Oct 11 21:41:58 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (RUBY_FUNC_ATTRIBUTE): check prefixed attribute form
- first. [ruby-dev:27398]
-
- * array.c, enum.c, eval.c, util.c: safer function pointer usage.
- fixed: [ruby-core:06143]
-
- * util.h (qsort): removed the definition incompatible to ANSI.
- fixed: [ruby-core:06147]
-
* eval.c (rb_obj_respond_to): check if obj responds to the given
method with the given visibility. [ruby-dev:27408]
@@ -6287,66 +3572,33 @@ Tue Oct 11 00:01:21 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* st.c (st_free_table): do not call free() but xfree().
[ruby-core:06205]
-Sat Oct 8 19:49:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Oct 8 20:04:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (Init_Binding): add Binding#dup method. [yarv-dev:666]
- * io.c (rb_io_init_copy): clear PREP flag for copied IO.
- fixed: [ruby-dev:27371]
-
* parse.y (rb_parser_malloc, rb_parser_free): manage parser stack on
heap. [ruby-list:41199]
- * parse.y (ripper_initialize): use rb_respond_to().
-
- * ext/ripper/depend (check): get rid of re-generating ripper.y always.
-
* ext/iconv/charset_alias.rb: parse config.charset_alias file directly.
- * ext/nkf/lib/kconv.rb (Kconv.conv): get rid of nil.to_a.
-
- * lib/scanf.rb (Scanf::FormatSpecifier#letter, #width): use matched
- substring directly.
-
- * test/ruby/test_assignment.rb, test/ruby/test_iterator.rb: followed
- change of sample/test.rb.
-
- * test/net/http/test_http.rb: removed superfluous splatting stars.
-
-Fri Oct 7 16:41:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (splat_value): call rb_Array() to convert svalue to
- values. [ruby-dev:27397]
-
Fri Oct 7 09:54:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/cgi.rb (CGI::Cookie::parse): Cookies from Nokia devices may
not be parsed correctly. A patch from August Z. Flatby
(augustzf) in [ruby-Patches-2595]. [ruby-core:06183]
-Thu Oct 6 22:51:30 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_Array): Array() to raise error for objects without
- to_ary, nor to_a.
-
- * object.c (nil_to_a): revert NilClass#to_a.
-
-Thu Oct 6 20:10:38 2005 Minero Aoki <aamine@loveruby.net>
+Thu Oct 6 20:12:16 2005 Minero Aoki <aamine@loveruby.net>
* ext/strscan/strscan.c (strscan_free): remove useless code.
[ruby-dev:26368] [ruby-dev:27389]
-
-Thu Oct 6 01:02:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * range.c (rb_range_beg_len): should return Qfalse for non-range
- object.
+ (backported from trunk, rev 1.22)
Wed Oct 5 04:42:38 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/xmlrpc/server.rb (XMLRPC::Server#initialize): should mount the
servlet on "/".
-Wed Oct 5 04:06:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Wed Oct 5 03:59:09 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/xmlrpc/server.rb (XMLRPC::Server#serve): delete wrong call
of "join".
@@ -6355,31 +3607,14 @@ Mon Oct 3 00:04:00 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
* pack.c (EXTEND16): [ruby-dev:27383]
-Sat Oct 1 23:55:24 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (do_select, rb_w32_select): brush up.
-
-Sat Oct 1 12:57:02 2005 Tanaka Akira <akr@m17n.org>
-
- * bignum.c (rb_big_rand): removed. [ruby-dev:25405]
-
-Sat Oct 1 01:46:51 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/open-uri.rb (OpenURI.open_loop): prohibit multiple proxy
- options.
-
Thu Sep 29 10:26:18 2005 Tanaka Akira <akr@m17n.org>
- * ext/dl/cptr.c (rb_dlptr_s_to_ptr): abolish sizeof(FILE).
+ * ext/dl/dl.c (rb_io_to_ptr): abolish sizeof(FILE).
[ruby-dev:27317]
-Thu Sep 29 10:15:14 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/open-uri.rb (:proxy_http_basic_authentication): new option.
-
Thu Sep 29 07:22:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_f_send): underscores need to be escaped.
+ * evalc. (rb_f_send): underscores need to be escaped.
fixed by Doug Kearns. [ruby-core:06053]
Thu Sep 29 00:57:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -6390,11 +3625,23 @@ Thu Sep 29 00:57:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* variable.c (rb_autoload_load): now return true if autoload
succeeded. fixed: [ruby-dev:27331]
-Wed Sep 28 23:40:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Sep 28 23:42:15 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (apply2files): add prototype.
* file.c (rb_stat_inspect): constified.
-Wed Sep 28 15:12:28 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+ * class.c (rb_mod_init_copy, rb_class_init_copy), file.c (rb_stat_init_copy),
+ numeric.c (num_init_copy), object.c (rb_obj_init_copy, Init_Object),
+ re.c (match_init_copy, rb_reg_init_copy), time.c (time_init_copy):
+ undocumented.
+
+Wed Sep 28 23:09:23 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb: document update from James Edward Gray II
+ <james@grayproductions.net>. [ruby-core:06027]
+
+Wed Sep 28 15:14:19 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/cgi.rb (WEBrick::CGI#start): req.query_string should
refer the value of QUERY_STRING. [ruby-list:41186]
@@ -6404,7 +3651,12 @@ Wed Sep 28 15:12:28 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
Wed Sep 28 10:45:44 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c: cannot compile with Tcl/Tk8.0.x [ruby-dev:27335].
+ * ext/tcltklib/tcltklib.c: cannot compile with Tcl/Tk8.0.x
+ [ruby-dev:27335].
+
+Wed Sep 28 08:12:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (read_buffered_data): check if reached EOF. fixed: [ruby-dev:27334]
Wed Sep 28 07:56:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -6415,7 +3667,7 @@ Wed Sep 28 07:56:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/yaml/types.rb (YAML::PrivateType, YAML::DomainType): ditto.
-Wed Sep 28 03:16:41 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Sep 28 03:23:35 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* rubysig.h: fixed build problem with --enable-pthread on platforms
which don't have setitimer().
@@ -6425,38 +3677,15 @@ Mon Sep 26 22:32:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (set_trace_func): add rb_secure(4) to prevent adding
tracing function.
-Mon Sep 26 20:59:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * parse.y: changed to ANSI function style.
-
-Sun Sep 25 12:02:04 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sun Sep 25 12:05:10 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* bin/erb: typo fixed.
-Sun Sep 25 11:54:11 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * lib/rinda/tuplespace.rb (Rinda::TemplateEntry::initialize): pull
- up method. Tabs converted to spaces.
-
-Sun Sep 25 09:34:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * parse.y: replaced `foo _((boo))' with `foo(boo)'.
-
-Sun Sep 25 08:19:53 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/rss/test_content.rb, test/rss/test_syndication.rb: use fcall
- instead of send in order to override visibility.
-
Sun Sep 25 01:46:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* misc/ruby-mode.el (ruby-calculate-indent): arrange deep-indent
closing parenthesis at same column as the opening.
-Sun Sep 25 01:33:41 2005 Tanaka Akira <akr@m17n.org>
-
- * process.c (proc_setrlimit): make the third argument (rlim_max)
- optional.
-
Sun Sep 25 00:42:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* misc/ruby-mode.el (ruby-expr-beg): deal with heredoc separately.
@@ -6466,37 +3695,20 @@ Sun Sep 25 00:42:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
level for continuous line inside parentheses.
http://nabeken.tdiary.net/20050915.html#p02
-Sat Sep 24 21:19:39 2005 Minero Aoki <aamine@loveruby.net>
-
- * ext/strscan/strscan.c: document enhancement.
-
- * ext/strscan/strscan.c: update copyright year.
+Sun Sep 25 00:18:11 2005 Tanaka Akira <akr@m17n.org>
- * ext/strscan/strscan.c: update coding style.
-
-Sat Sep 24 20:20:05 2005 Minero Aoki <aamine@loveruby.net>
-
- * test/net/http/test_http.rb (teardown): Net::HTTP.version_1_1 breaks
- many other tests; ensure that Net::HTTP is version 1.2 after test.
- [ruby-dev:27312]
-
-Sat Sep 24 11:44:28 2005 Minero Aoki <aamine@loveruby.net>
-
- * test/net/http/test_http.rb: new file.
+ * eval.c (unknown_node): show more information. [ruby-dev:26196]
-Sat Sep 24 08:54:05 2005 Minero Aoki <aamine@loveruby.net>
+Sat Sep 24 08:56:01 2005 Minero Aoki <aamine@loveruby.net>
* lib/fileutils.rb (cd): no longer accept :noop option, related
- code is useless. [ruby-core:05858] [ruby-Bugs:2494]
+ code is useless (backported from trunk, rev 1.67).
+ [ruby-core:05858] [ruby-Bugs:2494]
-Sat Sep 24 08:30:00 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/pathname.rb (Pathname#sub): new method.
-
-Sat Sep 24 08:29:36 2005 Minero Aoki <aamine@loveruby.net>
+Sat Sep 24 08:38:07 2005 Minero Aoki <aamine@loveruby.net>
* lib/fileutils.rb: fix visibility of FileUtils::NoWrite, Verbose,
- DryRun. [ruby-core:05954]
+ DryRun (backported from trunk, rev 1.66). [ruby-core:05954]
* test/fileutils/test_nowrite.rb: test it.
@@ -6504,163 +3716,32 @@ Sat Sep 24 08:29:36 2005 Minero Aoki <aamine@loveruby.net>
* test/fileutils/test_verbose.rb: new file.
-Sat Sep 24 07:59:01 2005 Minero Aoki <aamine@loveruby.net>
-
- * sample/ripper/colorize.rb: removed (replaced by ruby2html.rb).
-
- * sample/ripper/ruby2html.rb: added.
-
-Sat Sep 24 06:35:15 2005 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper: no longer generates .rb files.
-
- * parse.y (Init_ripper): ripper_init_eventids*() takes 1 argument,
- self (class Ripper).
-
- * ext/ripper/depend: target removed: `lib/ripper/core.rb'.
-
- * ext/ripper/depend: new target `eventids2table.c'.
-
- * ext/ripper/depend: new target `check'.
-
- * ext/ripper/eventids2.c: include eventids2table.c.
-
- * ext/ripper/eventids2.c: initialize SCANNER_EVENT_TABLE.
-
- * ext/ripper/extconf.rb: update $cleanfiles list.
-
- * ext/ripper/tools/generate.rb: no longer generate ripper/core.rb.
-
- * ext/ripper/tools/generate.rb: new mode `check'.
-
- * ext/ripper/tools/generate.rb: new mode `eventids2table'.
-
- * ext/ripper/lib/ripper/core.rb.in: removed.
-
- * ext/ripper/lib/ripper/core.rb: added.
-
- * ext/ripper/lib/ripper/filter.rb: update copyright year.
-
- * ext/ripper/lib/ripper/lexer.rb: ditto.
-
- * ext/ripper/lib/ripper/sexp.rb: ditto.
-
Sat Sep 24 02:40:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/delegate.rb: document update from James Edward Gray II
<james@grayproductions.net>. [ruby-core:05942]
-Sat Sep 24 02:05:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * process.c (proc_daemon): should restrict execution on levels
- higher than $SAFE=2. suggested by URABE Shyouhei
- <shyouhei@ice.uec.ac.jp>.
-
-Fri Sep 23 20:10:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/ripper/tools/generate.rb, ext/ripper/tools/preproc.rb: StringIO
- is not available for miniruby. fixed: [ruby-dev:27307]
-
-Fri Sep 23 17:36:48 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c: avoid core dump with WIN32OLE_EVENT.
- [ruby-dev:27133]
-
-Fri Sep 23 16:27:39 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/forwardable.rb: replaced by new implementation from
- <Daniel.Berger@qwest.com>. [ruby-core:05899]
-
-Fri Sep 23 07:07:47 2005 Minero Aoki <aamine@loveruby.net>
-
- * test/ripper/depend: use --output option instead of redirect;
- nmake does not remove a target when the target file is created by
- redirect. [ruby-dev:26466]
-
- * test/ripper/tools/preproc.rb: new option --output.
-
-Fri Sep 23 06:57:52 2005 Minero Aoki <aamine@loveruby.net>
-
- * test/ripper/tools/generate.rb: check parser event arity.
-
- * test/ripper/tools/generate.rb: detect crash of parser-event-IDs
- and scanner-event-IDs.
-
-Fri Sep 23 06:01:30 2005 Minero Aoki <aamine@loveruby.net>
-
- * test/ruby/test_file.rb: check File#chown(nil,nil).
- [ruby-dev:27140]
-
-Fri Sep 23 05:57:23 2005 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper: refactoring code generation tools. [ruby-dev:27247]
- [ruby-dev:27273]
-
- * ext/ripper/depend: use generate.rb.
-
- * ext/ripper/lib/ripper/core.rb: removed.
-
- * ext/ripper/tools/generate-eventids1.rb: removed (code moved to
- generate.rb).
-
- * ext/ripper/tools/generate-ripper_rb.rb: removed (code moved to
- generate.rb).
-
- * ext/ripper/tools/list-parse-event-ids.rb: removed (code moved to
- generate.rb).
-
- * ext/ripper/tools/list-scan-event-ids.rb: removed (code moved to
- generate.rb).
-
- * ext/ripper/lib/ripper/core.rb: removed.
-
- * ext/ripper: refactoring tests. [ruby-dev:27273]
-
- * ext/ripper/test/check-event-arity.rb: removed (code moved to
- tools/generate.rb).
-
- * ext/ripper/test/check-event-coverage.rb: removed (code moved to
- test/ripper/test_parser_events.rb).
-
- * ext/ripper/test/check-scanner-event-coverage.rb: removed (code
- moved to test/ripper/test_scanner_events.rb).
-
- * ext/ripper/test/list-called-events.rb: removed.
-
- * ext/ripper/test/src_rb: removed.
-
- * ext/ripper/test/validate.rb: removed.
-
- * test/ripper/test_scanner_events.rb: check event coverage.
-
- * ext/ripper/lib/ripper/core.rb.in: update copyright year.
-
-Thu Sep 22 23:40:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Sep 22 23:36:24 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (find_executable0): default path if environment is not
set. [ruby-dev:27281]
- * ext/ripper/extconf.rb (have_command): replaced with find_executable.
-
-Thu Sep 22 17:31:48 2005 Shugo Maeda <shugo@ruby-lang.org>
+Thu Sep 22 16:33:12 2005 Shugo Maeda <shugo@ruby-lang.org>
* test/readline/test_readline.rb (TestReadline::replace_stdio):
merged the patch of [ruby-dev:25232] instead of [ruby-dev:25223].
- (merged from ruby_1_8 branch)
Wed Sep 21 23:30:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (configuration): generalized nmake dependent code.
-Wed Sep 21 14:16:30 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/ripper/depend (SUFFIXES): no longer needed.
+Wed Sep 21 09:07:55 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/ripper/depend (c): avoid nmake problem. fixed [ruby-dev:27191]
+ * stable version 1.8.3 released.
Wed Sep 21 08:52:25 2005 why the lucky stiff <why@ruby-lang.org>
- * ext/syck/token.c: correctly compute indentation of a block
+ * ext/syck/token.c: correctly compute identation of a block
scalar's parent node. [ruby-talk:150620]
Wed Sep 21 08:20:24 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -6677,18 +3758,19 @@ Wed Sep 21 02:44:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* file.c (path_check_0): disallow sticky world writable directory
in PATH (and $LOAD_PATH). [ruby-dev:27226]
-Wed Sep 21 00:32:22 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * file.c (fpath_check): typo fixed.
+
+Tue Sep 20 22:29:49 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * numeric.c (fix_idiv): 1.div(1.0) should return integer value.
- [ruby-dev:27235]
+ * test/wsdl/simpletype/rpc/test_rpc.rb, test/wsdl/ref/test_ref.rb,
+ test/wsdl/any/test_any.rb test/soap/wsdlDriver/test_calc.rb:
+ suppress deliberate warnings with $VERBOSE = nil.
-Tue Sep 20 22:25:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Sep 20 21:26:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/io/wait/lib/nonblock.rb: disable on platforms non-blocking flag
is not available. fixed: [ruby-dev:27187]
- * file.c (rb_stat_inspect): protoized function pointer.
-
Tue Sep 20 18:23:04 2005 Tanaka Akira <akr@m17n.org>
* eval.c (thread_mark): mark th->last_status. [ruby-dev:27179]
@@ -6708,23 +3790,28 @@ Tue Sep 20 17:48:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/xmlrpc/server.rb (WEBrickServlet::service): ditto.
-Tue Sep 20 17:26:42 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Sep 20 17:34:46 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* test/webrick/test_cgi.rb: set ENV["PATH"] to CGIEnvPath on
windows. bcc32's runtime is not installed into system directory,
so it cannot be found without this setting. [ruby-dev:27166]
-Tue Sep 20 17:14:10 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * io.c: PIPE_BUF is not defined on BeOS. use _POSIX_PIPE_BUF instead.
- [ruby-dev:27185]
-
Tue Sep 20 17:10:38 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* test/dbm/test_dbm.rb (TestDBM::test_s_open_error): remove
test_s_open_error test to detect duplicate open.
[ruby-dev:27202]
+Tue Sep 20 17:08:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * io.c: PIPE_BUF is not defined on BeOS. use _POSIX_PIPE_BUF instead.
+ [ruby-dev:27185]
+
+Tue Sep 20 16:53:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * test/readline/test_readline.rb (TestReadline::replace_stdio):
+ BSD seek support from [ruby-dev:25223]. fixed: [ruby-dev:27150]
+
Tue Sep 20 15:39:40 2005 why the lucky stiff <why@ruby-lang.org>
* ext/syck/emitter.c (syck_scan_scalar): prevent indicators from
@@ -6741,57 +3828,49 @@ Tue Sep 20 15:39:40 2005 why the lucky stiff <why@ruby-lang.org>
* ext/syck/rubyext.c: loading of binary-typed nodes. prevent
emission of plain strings that look like symbols, but which aren't.
-Tue Sep 20 05:48:26 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Sep 20 05:50:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* test/xmlrpc/test_webrick_server.rb (setup_http_server):
should not include 'webrick/https' unless 'use_ssl' because
it fails where openssl is not installed.
-Tue Sep 20 01:24:45 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (splat_value): use to_a to splat non Array object.
-
- * object.c (nil_to_a): remove nil.to_a. [experimental]
-
-Tue Sep 20 01:01:41 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/mathn.rb (Fixnum): remove debug print.
-
- * lib/rational.rb (Rational): ditto.
-
Tue Sep 20 00:34:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (io_close): call rb_io_close() directly if io is a T_FILE
object. [ruby-dev:27156]
-Mon Sep 19 18:58:10 2005 Minero Aoki <aamine@loveruby.net>
+Mon Sep 19 19:09:08 2005 Minero Aoki <aamine@loveruby.net>
* file.c (rb_file_chown): should accept nil. [ruby-dev:27171]
+ (backport from trunk, rev 1.208)
-Mon Sep 19 18:29:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+Mon Sep 19 18:35:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * file.c (file_expand_path): allow pathnames to expand.
- [ruby-dev:27152]
+ * ext/dl/dl.c (rb_io_to_ptr): fix DragonFlyBSD support.
+ [ruby-dev:27151]
-Mon Sep 19 15:12:15 2005 Minero Aoki <aamine@loveruby.net>
+Mon Sep 19 14:17:04 2005 Minero Aoki <aamine@loveruby.net>
- * ext/ripper/depend: do not make ripper/core.rb. [ruby-dev:26462]
+ * ext/syck/emitter.c (syck_emit): passing an int* value to the
+ long* parameter causes unaligned access on LP64 systems.
+ [ruby-dev:27161]
-Mon Sep 19 14:49:19 2005 Minero Aoki <aamine@loveruby.net>
+Mon Sep 19 13:44:03 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * ext/ripper/eventids2.c: add prefix `t' to tLAMBDA-related lexer
- events.
+ * ext/win32ole/win32ole.c: avoid core dump with WIN32OLE_EVENT.
+ [ruby-dev:27133]
- * ext/ripper/lib/ripper/core.rb: updated.
+Mon Sep 19 10:36:06 2005 Minero Aoki <aamine@loveruby.net>
-Mon Sep 19 14:39:46 2005 Minero Aoki <aamine@loveruby.net>
+ * lib/fileutils.rb (cp_r): default is :dereference_root=>true for
+ backward compatibility. [ruby-dev:27145]
- * parse.y (do_block): do_block event dispatches 2 args.
- [ruby-dev:26964]
+ * test/fileutils/test_fileutils.rb (test_cp_r): test it.
- * ext/ripper/lib/ripper/core.rb: updated.
+Mon Sep 19 09:57:39 2005 Minero Aoki <aamine@loveruby.net>
- * ext/ripper/tools/list-parser-event-ids.rb: check arity mismatch.
+ * test/fileutils/test_fileutils.rb: backported from trunk (1.36).
+ (again) [ruby-dev:27145]
Mon Sep 19 07:45:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
@@ -6803,23 +3882,43 @@ Mon Sep 19 07:45:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_engine.c: (ossl_engine_load_privkey): set private
key flag.
- * test/openssl/test_pkey_rsa.rb: add test about private detection.
+Mon Sep 19 06:41:32 2005 Minero Aoki <aamine@loveruby.net>
-Mon Sep 19 06:38:03 2005 Minero Aoki <aamine@loveruby.net>
+ * lib/fileutils.rb: backported from trunk (rev 1.65):
- * lib/fileutils.rb: method renaming: collect_methods ->
- collect_method.
+ * lib/fileutils.rb (rm_r): new option :secure.
-Mon Sep 19 05:58:59 2005 Minero Aoki <aamine@loveruby.net>
+ * lib/fileutils.rb (rm_rf): new option :secure.
- * lib/fileutils.rb: use module_function instead of single extend.
+ * lib/fileutils.rb: new method #remove_entry_secure.
+
+ * lib/fileutils.rb (cd): remove option :noop.
+
+ * lib/fileutils.rb (cp_r): new option :dereference_root.
+
+ * lib/fileutils.rb (cp_r): new option :dereference_root.
+
+ * lib/fileutils.rb: new method #remove_entry.
- * test/fileutils/test_fileutils.rb: test existence of singleton
- methods.
+ * lib/fileutils.rb: new method #chmod_R.
-Mon Sep 19 05:32:41 2005 Minero Aoki <aamine@loveruby.net>
+ * lib/fileutils.rb: new method #chown.
- * lib/fileutils.rb (remove_entry_secure): does not use chdir(2).
+ * lib/fileutils.rb: new method #chown_R.
+
+ * lib/fileutils.rb: new method .commands.
+
+ * lib/fileutils.rb: new method .options.
+
+ * lib/fileutils.rb: new method .have_option?.
+
+ * lib/fileutils.rb: new method .options_of.
+
+ * lib/fileutils.rb: new method .collect_method.
+
+ * lib/fileutils.rb: use module_function instead of single extend.
+
+ * test/fileutils/test_fileutils.rb: backported from trunk (1.36).
Mon Sep 19 03:17:48 2005 Tanaka Akira <akr@m17n.org>
@@ -6831,24 +3930,13 @@ Mon Sep 19 03:17:48 2005 Tanaka Akira <akr@m17n.org>
which is full. [ruby-dev:27132]
* io.c (rb_io_syswrite): wrap the write system call by
- TRAP_BEG/TRAP_END to run signal hander in syswrite method.
- [ruby-dev:27134]
-
-Mon Sep 19 01:07:38 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * numeric.c (Init_Numeric): should define Fixnum#div.
- [ruby-dev:27129]
-
- * file.c (rb_thread_flock): wrap flock(2) by TRAP_BEG and
- TRAP_END. [ruby-dev:27122]
+ TRAP_BEG/TRAP_END to enable signals when writing to a pipe which is
+ full. [ruby-dev:27134]
- * file.c (rb_file_join): call FilePathValue() to all Pathnames to
- join. [ruby-dev:27127]
+Mon Sep 19 03:02:08 2005 Tanaka Akira <akr@m17n.org>
- * file.c (rb_get_path): call StringValueCStr() to ensure no nul
- bytes in path strings.
-
- * gc.c (garbage_collect): need value for return. [ruby-dev:27127]
+ * io.c (io_fwrite): wrap the write system call by TRAP_BEG/TRAP_END to
+ enable signals when writing to a pipe which is full.
Sun Sep 18 02:10:47 2005 why the lucky stiff <why@ruby-lang.org>
@@ -6866,10 +3954,6 @@ Sun Sep 18 02:10:47 2005 why the lucky stiff <why@ruby-lang.org>
* test/yaml/test_yaml.rb: remove outdated tests.
-Sun Sep 18 01:10:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (garbage_collect): return false if no GC run.
-
Sat Sep 17 23:25:04 2005 sheepman <sheepman@sheepman.sakura.ne.jp>
* lib/mathn.rb (Rational::inspect): should preserve original
@@ -6880,79 +3964,6 @@ Sat Sep 17 23:20:27 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/cgi.rb (CGI::Cookie): should handle multiple values for a
cookie name. [ruby-talk:156140]
- * test/socket/test_tcp.rb (TestTCPSocket::test_recvfrom): typo
- fixed. [ruby-dev:27123]
-
-Sat Sep 17 20:58:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * win32/win32.c (rb_w32_select): fixed deadlock bug.
- because select(2) modifies its fd_set arguments, it must be
- restored sometimes.
-
- * win32/win32.c (rb_w32_select): performance improvement when
- 'always readable/writable handles' and sockets are passed.
- sockets should be polled every time.
-
- require "net/http"
-
- Thread.new {
- loop do
- STDOUT.write(".") # busy on console (this is worst case though)
- end
- }
-
- # socket operation took long time. (sometimes timed out)
- Net::HTTP.start("www.ruby-lang.org") do |http|
- http.get("/cgi-bin/cvsweb.cgi/ruby/array.c?rev=1.179")
- end
-
-Sat Sep 17 14:54:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * test/ruby/test_readpartial.rb (test_open_pipe, test_with_stdio):
- these tests are working now, so turned on. (windows)
-
-Sat Sep 17 14:18:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * win32/win32.c (rb_w32_select): I hope performance problem was
- solved.
-
-Sat Sep 17 13:45:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * win32/win32.c (rb_w32_select): console support is back.
- but still has performance problem because I loosely took 1 second
- for wait time. I'll fix it later. (The reason I drastically changed
- the code is that I wanted to implement the fileset management as
- single function, and I was worried that if pipe or console
- was always available, socket may not be processed any time)
-
-Sat Sep 17 11:24:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * win32/win32.c (rb_w32_select): select for socket didn't work.
- this caused deadlock in drb test. this happened because GetFileType
- for socket handle returns FILE_TYPE_PIPE. Of course, it's not a
- pipe. So socket handle didn't reach winsock's select function.
-
- * win32/win32.c (rb_w32_select): read for pipe was still blocked
- even if writer handle was closed.
-
- r,w = IO.pipe
-
- Thread.new {
- sleep 3; puts "------- 1"
- w.puts("foo")
- sleep 3; puts "------- 2"
- w.puts("boo")
- sleep 3; puts "------- 3"
- w.close
- }
-
- until r.eof? # should break by w.close but didn't.
- puts r.gets
- end
-
- * win32/win32.c (rb_w32_select): temporary reverted console support
- but it'll be back soon.
-
Sat Sep 17 10:42:13 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string and bg_eval_string
@@ -6976,14 +3987,14 @@ Sat Sep 17 08:35:39 2005 Kouhei Sutou <kou@cozmixng.org>
* test/rss/test_maker_1.0.rb (RSS::TestMaker10#test_items): ditto.
-Sat Sep 17 08:02:53 2005 Shugo Maeda <shugo@ruby-lang.org>
+Fri Sep 16 23:09:20 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * lib/net/imap.rb: supported DIGEST-MD5. Thanks, Mathieu Arnold.
+ * ext/win32ole/win32ole.c (ole_search_event_at): bug fix
+ in ext/win32ole/sample/ienavi.rb.
- * lib/net/imap.rb: use fcall instead of send. Thanks, Satoru
- Takabayashi.
+ * ext/win32ole/win32ole/tests/testOLEEVENT.rb: ditto.
-Fri Sep 16 22:45:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Sep 16 22:41:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_s_extname): empty string for path name ending with a
period. fixed: [ruby-core:05651]
@@ -6991,19 +4002,6 @@ Fri Sep 16 22:45:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_join): smarter behavior at edge cases.
fixed: [ruby-core:05706]
- * gc.c (rb_memerror, ruby_xmalloc, ruby_xrealloc, rb_newobj): just
- abondon if no memory available, when interpreter is not running.
- [ruby-dev:27104]
-
- * gc.c (garbage_collect): return whether GC could run.
-
- * dir.c (rb_push_glob): fix delimiter bug. fixed: [ruby-dev:27105]
-
- * dir.c (dir_s_aref, dir_s_glob): allow multiple patterns.
- [ruby-dev:27110]
-
- * win32/win32.c (cmdglob): enable brace expansion.
-
Fri Sep 16 18:34:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/syck/node.c (syck_replace_str): was using return from the
@@ -7019,12 +4017,12 @@ Fri Sep 16 12:02:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/syck/rubyext.c (syck_resolver_transfer): remove C++ style
comment (//). [ruby-core:05793]
-Fri Sep 16 00:17:03 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Fri Sep 16 00:14:14 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/logger/test_logger.rb: unintentionally overwritten changes by
Usa. reverted.
-Fri Sep 16 00:03:11 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Fri Sep 16 00:06:18 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/cgi.rb (WEBrick::CGI::Socket#initialize): should set
$stdout.binmode.
@@ -7038,10 +4036,10 @@ Thu Sep 15 23:25:21 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* SOAP
* allow to configure an envelope namespace of SOAP request. (#124)
- TemporaryNamespace = 'http://www.w3.org/2003/05/soap-envelope'
- @client.options["soap.envelope.requestnamespace"] =
+ TemporaryNamespace = 'http://www.w3.org/2003/05/soap-envelope'
+ @client.options["soap.envelope.requestnamespace"] =
TemporaryNamespace
- @client.options["soap.envelope.responsenamespace"] =
+ @client.options["soap.envelope.responsenamespace"] =
TemporaryNamespace
@client.do_proc(...)
@@ -7113,62 +4111,45 @@ Thu Sep 15 23:25:21 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* updated deprecated method usage. (#138)
-Thu Sep 15 22:40:27 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Sep 15 23:02:57 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * test/ruby/test_signal.rb (test_exit_action): skip the test using
- fork on fork-less platforms.
+ * win32/win32.h (rb_w32_stat): added prototype.
-Thu Sep 15 13:54:33 2005 Tanaka Akira <akr@m17n.org>
+Thu Sep 15 22:35:55 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/open-uri.rb: add :read_timeout option.
- [ruby-core:4848]
+ * test/ruby/test_signal.rb (test_exit_action): skip the test using
+ fork on fork-less platforms.
Thu Sep 15 11:39:18 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/dialog.rb: If a dialog does not show up yet,
TkDialogObj#name raises an exception. [ruby-talk:156109]
-Thu Sep 15 11:01:58 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Sep 15 01:39:19 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * win32/win32.c (rb_w32_pipe_exec): remove unnecessary CloseHandle().
-
- * win32/win32.c (extract_console_fd, peek_console): new functions.
-
- * win32/win32.c (rb_w32_select): check consoles by polling them.
+ * lib/rinda/tuplespace.rb (Rinda::TemplateEntry::initialize): pull
+ up method. Tabs converted to spaces.
Thu Sep 15 00:18:24 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/net/telnet.rb (Net::Telnet::waitfor): replace sysread with
readpartial. [ruby-talk:127641]
-Wed Sep 14 23:28:28 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (collect_file_fd): rename from extract_file_fd.
-
- * win32/win32.c (extract_pipe_fd, peek_pipe): new functions.
-
- * win32/win32.c (rb_w32_select): check pipes by polling them.
-
Wed Sep 14 22:40:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* dir.c (ruby_glob): glob function not using ruby exception system.
-Wed Sep 14 17:24:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Sep 14 01:26:03 2005 Minero Aoki <aamine@loveruby.net>
- * dir.c: changed `foo (*bar)_((boo))' to `foo (*bar)(boo)`.
+ * lib/net/https.rb: backported from trunk, rev 1.3.
+ [ruby-dev:25673] (again), [ruby-dev:26617] (again),
+ [ruby-dev:27062]
- * enumerator.c, eval.c, gc.c, intern.h, io.c, process.c, ruby.c,
- ruby.h, signal.c: ditto.
+ * ext/openssl/lib/net/https.rb: removed.
-Wed Sep 14 15:06:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * ext/openssl/lib/net/protocols.rb: removed.
- * bignum.c: changed `foo _((boo))' to `foo(boo)`. [ruby-dev:27056]
-
- * defines.h, dir.c, dln.h, enumerator.c, env.h, error.c, eval.c, file.c,
- gc.c, hash.c, inits.c, intern.h, io.c, lex.c, marshal.c, missing.h,
- node.h, numeric.c, pack.c, process.c, re.h, ruby.c, ruby.h, rubyio.h,
- rubysig.h, signal.c, sprintf.c, st.h, string.c, struct.c, time.c,
- util.c, util.h, variable.c: ditto.
+ * lib/net/http.rb: #use_ssl?, #use_ssl are moved from net/https.
Tue Sep 13 22:09:40 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
@@ -7189,20 +4170,19 @@ Tue Sep 13 21:47:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (BEGIN_CALLARGS): pop halfly pushed status.
fixed: [ruby-dev:26881]
-Tue Sep 13 20:24:37 2005 Tanaka Akira <akr@m17n.org>
+Tue Sep 13 16:26:45 2005 Minero Aoki <aamine@loveruby.net>
- * ruby.h (PRINTF_ARGS): new macro for printf style argument checking.
+ * lib/net/http.rb: backported from trunk, rev 1.128.
+ [ruby-dev:25673] [ruby-dev:26617]
-Tue Sep 13 15:41:29 2005 Minero Aoki <aamine@loveruby.net>
+ * lib/net/protocol.rb: backported from trunk, rev 1.78.
- * lib/net/http.rb: wrote docuemntation of HTTPRequest/HTTPResponse
- classes.
+ * lib/net/protocol.rb: new method #old_open to support net/smtp
+ and net/pop.
-Tue Sep 13 14:27:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * lib/net/smtp.rb: use #old_open.
- * string.c, missing.h: failed to build on powerpc-apple-darwin7.9.0
- because of crypt argument's constness mismatch. (I hope this works)
- (http://mput.dip.jp/autobuild/ruby-trunk/log/20050913T110001.gz)
+ * lib/net/pop.rb: ditto.
Tue Sep 13 12:33:05 2005 why the lucky stiff <why@ruby-lang.org>
@@ -7218,12 +4198,12 @@ Tue Sep 13 12:33:05 2005 why the lucky stiff <why@ruby-lang.org>
continue support of Object#to_yaml_type.
* ext/syck/rubyext.c: new emitter code. yaml_new and yaml_initialize
- get called, should they be present. consolidated all the diaspora of internal node types into the family below YAML::Syck::Node -- Map,
+ get called, should they be present. consolidated all the diaspora of internal
+ node types into the family below YAML::Syck::Node -- Map,
Seq, Scalar -- all of whom are SyckNode structs pointing to
- Ruby data. moved Object#yaml_new into the node_import and made it
- the default behavior. the target_class is always called wih
- yaml_new, prepended a parameter, which is the klass. loaded nodes
- through GenericResolver show their style.
+ Ruby data. moved Object#yaml_new into the node_import and made it the
+ default behavior. the target_class is always called wih yaml_new, prepended
+ a parameter, which is the klass. loaded nodes through GenericResolver show their style.
new Resolver#tagurize converts type ids to taguris.
* ext/syck/implicit.re: were 'y' and 'n' seriously omitted??
@@ -7242,28 +4222,6 @@ Tue Sep 13 12:33:05 2005 why the lucky stiff <why@ruby-lang.org>
* ext/syck/syck.h: reflect block_styles and new node functions.
-Tue Sep 13 08:09:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/ostruct.rb (new_ostruct_member): Object#send no longer call
- private methods. [ruby-dev:27044]
-
- * test/rss/test_dublincore.rb, test/rss/test_trackback.rb,
- test/ruby/test_eval.rb, test/socket/test_socket.rb: ditto.
-
- * test/ruby/test_lambda (test_call_with_block): lambda makes new scope
- for formal block parameter.
-
-Tue Sep 13 01:17:45 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (proc_save_safe_level): no need to restrict safe level
- memoize in $SAFE>=3. [ruby-dev:27050]
-
-Tue Sep 13 00:02:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (apply2files): stricter callback definition.
-
- * file.c (rb_path_check): constified.
-
Mon Sep 12 20:53:06 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* test/openssl/test_pkcs7.rb (test_enveloped): skip this test
@@ -7271,83 +4229,29 @@ Mon Sep 12 20:53:06 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
compiled with OpenSSL-0.9.7d or earlier versions).
http://www.mail-archive.com/openssl-dev@openssl.org/msg17376.html
-Mon Sep 12 20:32:00 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * win32/win32.[hc] (rb_w32_argv_size, ...): reverted my latest change
- to avoid incompatible pointer warning. (mingw32)
-
-Mon Sep 12 19:58:53 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dln.c: avoid warning of const to non-const convertion.
- [ruby-dev:27041]
-
- * eval.c, io.c, ruby.c: ditto.
-
-Mon Sep 12 19:26:29 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * array.c: moved to ANSI function style from K&R function style.
- (used protoize on windows, so still K&R remains on #ifdef part of
- other platforms. And `foo _((boo))' stuff is still there)
- [ruby-dev:26975]
-
- * bignum.c, class.c, compar.c, dir.c, dln.c, dmyext.c, enum.c,
- enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c,
- io.c, main.c, marshal.c, math.c, numeric.c, object.c, pack.c,
- prec.c, process.c, random.c, range.c, re.c, regcomp.c, regenc.c,
- regerror.c, regexec.c, regparse.c, regparse.h, ruby.c, signal.c,
- sprintf.c, st.c, string.c, struct.c, time.c, util.h, variable.c,
- version.c: ditto.
-
Mon Sep 12 14:03:33 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* test/dbm/test_dbm.rb: remove locking test, which may not be
supported on some platforms. [ruby-dev:27030]
-Sun Sep 11 23:23:02 2005 Shugo Maeda <shugo@ruby-lang.org>
+Mon Sep 12 10:45:58 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * lib/net/imap.rb (starttls): supported the STARTTLS command.
+ * ext/dl/dl.c (rb_io_to_ptr): merged a patch for DragonFly BSD
+ from Takahiro Kambe <taca at back-street.net>. [ruby-dev:27023]
-Sun Sep 11 22:18:07 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sun Sep 11 22:05:51 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* bin/erb (ERB::Main#run): set ERB#filename so that it is used
when reporting syntax/runtime errors. Tabs converted to spaces.
-Sat Sep 10 22:34:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c, bignum.c: protoize.
-
-Sat Sep 10 00:23:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (splat_value): simpler and consistent array conversion
- for argument splat. [yarv-dev:599]
-
-Fri Sep 9 16:45:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_times): make empty strings to keep taintness,
- and a little improvement. [ruby-dev:26900]
-
- * ext/iconv/iconv.c (iconv_try), ext/iconv/extconf.rb: get rid of meta
- characters in command line option. fixed: [ruby-talk:155369]
-
- * ext/iconv/iconv.c: protoized.
-
-Thu Sep 8 14:58:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * merged a patch from Takahiro Kambe <taca at back-street.net> to
- support DragonFly BSD. [ruby-dev:26984]
-
-Thu Sep 8 13:14:57 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
-
- * missing/strchr.c (strrchr): fixed a bug in detecting NUL in a
- string. [ruby-dev:26985]
-
-Wed Sep 7 17:29:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Sat Sep 10 10:17:03 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_engine.c (ossl_engine_s_by_id):
OpenSSL::Engine.by_id calls given block before calling
ENGINE_init (block parameter is the return value of this method
itself). this functionality is useful to load dynamic shared
- engines.
+ engines. the following code is a sample of loading a key using
+ OpenSC PKCS #11 module.
require "openssl"
pkcs11 = OpenSSL::Engine.by_id("dynamic"){|e|
@@ -7364,7 +4268,7 @@ Wed Sep 7 17:29:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_engine.c (ossl_engine_get_cmds): new method
OpenSSL::Engine#cmds. it returms engine command definitions.
-Wed Sep 7 15:48:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Sat Sep 10 10:09:47 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_asn1.c (asn1str_to_str): new function.
@@ -7377,6 +4281,64 @@ Wed Sep 7 15:48:37 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* test/openssl/test_pkcs7.rb: new file.
+Sat Sep 10 10:05:51 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): assume that
+ the argument is a DER string if Base64 decoding failed.
+
+ * ext/openssl/ossl_ns_pki.c (ossl_spki_to_der): new method.
+
+ * test/openssl/test_ns_spki.rb: add new file.
+
+Sat Sep 10 09:56:24 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/digest.rb: added SHA224, SHA256, SHA384 and SHA512.
+ these features are enabled if this library is compiled with
+ OpenSSL 0.9.8 or later.
+
+ * test/openssl/test_digest.rb: add test for new digests.
+
+Sat Sep 10 09:51:30 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl.c (ossl_raise): should use ERR_peek_last_error
+ to get last error on the current thread. And should report
+ errors on the stack while OpenSSL.debug is true.
+
+ * ext/openssl/ossl.c (ossl_get_errors): new method for debugging
+ this library.
+
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_set_ciphers): fix error message.
+
+ * ext/openssl/ossl_x509req.c (ossl_x509req_set_attributes): get rid
+ of unused variable.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_initialize): should
+ set @time to avoid warning.
+
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths,
+ X509_STORE_add_cert, X509_STORE_add_crl): should raise error if
+ wrapped functions failed.
+
+ * test/openssl/test_x509store.rb: add test for errors.
+
+Fri Sep 9 22:13:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (rb_call0): prohibit calling tainted method (>2) when
+ $SAFE == 0.
+
+Fri Sep 9 16:45:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_times): make empty strings to keep taintness,
+ and a little improvement. [ruby-dev:26900]
+
+ * ext/iconv/iconv.c (iconv_try), ext/iconv/extconf.rb: get rid of meta
+ characters in command line option. fixed: [ruby-talk:155369]
+
+Thu Sep 8 14:58:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * merged a patch from Takahiro Kambe <taca at back-street.net> to
+ support DragonFly BSD. [ruby-dev:26984]
+
Wed Sep 7 12:55:08 2005 Tanaka Akira <akr@m17n.org>
* lib/open-uri.rb: abolish mod === tempfile to avoid a problem
@@ -7390,15 +4352,6 @@ Wed Sep 7 10:45:15 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_thread_terminated): show backtrace before propagate
exceptions to main thread.
-Wed Sep 7 09:21:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * win32/win32.[hc] (rb_w32_utime): constified.
-
- * win32/win32.h (rb_w32_stat): added prototype.
-
- * win32/win32.[hc] (rb_w32_argv_size,rb_w32_join_argv,rb_w32_aspawn):
- changed `char *const *' to `const char *const *'. (constify string)
-
Wed Sep 7 08:35:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* Makefile.in, configure.in (MINIOBJS): miniruby on HP-UX can not load
@@ -7417,62 +4370,37 @@ Wed Sep 7 08:35:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/etc/etc.c (setup_passwd), ext/etc/extconf.rb: pw_age might be
char*. fixed: [ruby-core:05470]
-Wed Sep 7 08:32:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_times): should taint empty strings as well.
-
- * object.c (Init_Object): make class_variable_{get,set} public.
- [ruby-dev:26965]
+Wed Sep 7 08:32:47 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-Mon Sep 5 22:28:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * object.c (rb_mod_cvar_get, rb_mod_cvar_set): document fix from
+ sheepman <sheepman@sheepman.sakura.ne.jp>; a bug in visibility
+ description. [ruby-dev:26965]
- * parse.y (stmt, mlhs_node, lhs, arg, method_call): aref_args might be
- nothing. fixed: [ruby-dev:26952]
-
- * ext/ripper/eventids2.c: added new tokens. fixed: [ruby-dev:26952]
+ * sprintf.c (rb_f_sprintf): warn "too many argument" on verbose
+ mode (-v/-w); backported from 1.9. [ruby-dev:26963]
Mon Sep 5 17:03:07 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * lib/find.rb: should raise ENOENT if root entry does not exist.
- [ruby-list:41054]
-
* lib/ostruct.rb: a patch from Florian Gross <florgro at gmail.com>
merged to allow recursive inspect (and to_s) for OpenStruct.
[ruby-core:05532]
-Mon Sep 5 08:20:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/observer.rb: a patch from nornagon <nornagon at gmail.com>
- merged to allow arbitrary names for update methods.
- [ruby-core:05416]
-
Mon Sep 5 07:01:12 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/openssl/lib/openssl/buffering.rb (Buffering#do_write):
should clear data from the buffer which already been output.
-Sun Sep 4 15:01:35 2005 Minero Aoki <aamine@loveruby.net>
-
- * parse.y (f_arg): Ripper should not do semantic check.
- [ruby-dev:26948]
-
-Sat Sep 3 23:52:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_f_fcall): new method to avoid inefficiency of
- obj.instance_eval{send(...)} tricks.
-
-Sat Sep 3 13:59:31 2005 Tanaka Akira <akr@m17n.org>
+Fri Sep 2 23:51:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/pathname.rb (Pathname#descend): Pathname.new("./a/b/c").descend
- didn't yield "."
- (Pathname#ascend): ditto.
+ * lib: do not use __send__ to access private methods. [ruby-dev:26935]
-Fri Sep 2 23:51:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Sep 2 03:29:00 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
- * parse.y (f_arg): f_norm_arg is a VALUE in ripper, not an ID.
- fixed: [ruby-dev:26942]
+ * lib/irb/init.rb: make IRB -I option that is same befavior for ruby.
+ [ruby-dev:26872], [ruby-dev: 26920]
- * lib: do not use __send__ to access private methods. [ruby-dev:26935]
+ * lib/irb/locale.rb: support to print help message when OS locale is
+ ja_JP.utf-8. [ruby-dev:26872]
Thu Sep 1 17:11:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -7487,31 +4415,20 @@ Thu Sep 1 14:12:45 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
to support '-namespace' option of 'interp invokehidden' command
on Tcl8.5.
-Wed Aug 31 14:41:30 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Aug 31 14:43:15 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/Makefile.sub (OPTFLAGS): default global optimization to
disabled for all VC++ versions. fixed: [ruby-dev:26897]
-Wed Aug 31 10:36:09 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * process.c (proc_detach, proc_setmaxgroups): missing argument type
- declaration. (I recommend ANSI-style function)
-
-Wed Aug 31 06:59:01 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_scan): already String#scan behaves differently
- regarding if block is given.
-
-Tue Aug 30 23:49:34 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c, dir.c, enum.c, hash.c, io.c, range.c, string.c, struct.c:
- let enumerable methods return Enumerator. [ruby-dev:26924]
+Wed Aug 31 11:35:43 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * intern.h (RETURN_ENUMERATOR): utility macro for enumerable methods.
+ * test/gdbm/test_gdbm.rb (teardown): should remove GDBM temporary
+ file.
-Tue Aug 30 23:25:45 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Wed Aug 31 10:30:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * lib/debug.rb: no need to restart at exit.
+ * process.c (proc_detach, proc_setmaxgroups): missing argument type
+ declaration. (I recommend ANSI-style function)
Tue Aug 30 23:20:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -7530,46 +4447,24 @@ Tue Aug 30 19:34:27 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
ext/digest/sha1/sha1ossl.h: include <stddef.h> to avoid
error in compilation with OpenSSL-0.9.8. [ruby-list:41068]
-Tue Aug 30 16:19:40 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
-
- * lib/irb/init.rb: bug fix. [ruby-dev: 26920]
-
-Tue Aug 30 16:13:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enum.c (enum_count): new method. [ruby-dev:26895]
-
-Tue Aug 30 12:45:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_f_send): do not call private methods if the receiver
- is specified. [ruby-talk:153672]
-
-Mon Aug 29 19:47:18 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Aug 29 19:54:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/rdoc/usage.rb: improper exceptions. [ruby-dev:26870]
* lib/rdoc/usage.rb: support the case when non-ruby code exists before
shebang. (this is needed when ri.bat is executed on windows)
-Mon Aug 29 18:58:05 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
- * lib/irb/init.rb: make IRB -I option that is same befavior for ruby.
- [ruby-dev:26872]
+Mon Aug 29 17:48:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * lib/irb/locale.rb: support to print help message when OS locale is
- ja_JP.utf-8. [ruby-dev:26872]
-
-Mon Aug 29 01:43:05 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/pathname.rb (Pathname#descend): new method.
- (Pathname#ascend): ditto.
+ * eval.c (method_arity): should return proper arity value.
+ [ruby-dev:26390]
-Mon Aug 29 00:35:09 2005 Tanaka Akira <akr@m17n.org>
+Mon Aug 29 01:19:57 2005 Tanaka Akira <akr@m17n.org>
- * lib/time.rb: require 'date/format' instead of 'parsedate'.
- (Time.parse): extract fractional seconds using Date._parse.
- (Time.strptime): extract fractional seconds using Date._strptime.
- [ruby-talk:153859]
+ * lib/time.rb (Time.parse): extract fractional seconds using
+ Date._parse. [ruby-talk:153859]
-Sat Aug 27 20:13:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sat Aug 27 20:20:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/curses/curses.c ({curses,window}_clrtoeol): added. suggested
by Reyn Vlietstra.
@@ -7579,77 +4474,18 @@ Sat Aug 27 20:13:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/curses/view.rb: String =~ String is deprecated.
-Thu Aug 25 15:48:58 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/win32ole/win32ole.c: supress warnings. (win32)
-
-Wed Aug 24 11:01:26 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Aug 24 10:53:28 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* test/logger/test_logger.rb (test_shifting_size): should close log
device before unlink, since some platform cannot unlink opened
file.
-Tue Aug 23 06:07:02 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/lib/digest.rb: added SHA224, SHA256, SHA384 and SHA512.
- these features are enabled if this library is compiled with
- OpenSSL 0.9.8 or later.
-
- * test/openssl/test_digest.rb: add test for new digests.
-
-Tue Aug 23 05:47:04 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): try to decode
- the argument as a string.
-
- * ext/openssl/ossl_ns_pki.c (ossl_spki_to_der): new method.
-
- * ext/openssl/ossl_x509store.c (ossl_x509store_initialize): should
- set @time to avoid warning.
-
- * ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths,
- X509_STORE_add_cert, X509_STORE_add_crl): should raise error if
- wrapped functions fails.
-
- * ext/openssl/ossl_ssl.c (ossl_sslctx_set_ciphers): fix error message.
-
- * ext/openssl/ossl_x509req.c (ossl_x509req_set_attributes): get rid
- of unused variable.
-
- * test/openssl/test_ns_spki.rb: add new file.
-
- * test/openssl/test_x509store.rb: add test for error.
-
-Tue Aug 23 01:11:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * sprintf.c (ruby__sfvwrite): should move `buf' to the end of
- `result'. [ruby-dev:26859]
-
-Mon Aug 22 23:51:19 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y: ONIG_OPTION_CAPTURE_GROUP conflicts with
- RE_OPTION_ONCE. [ruby-dev:26852]
-
-Mon Aug 22 20:11:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * missing/vsnprintf.c (BSD__sprint): needs to call vwrite function
- pointer. fixed: [ruby-dev:26854]
-
-Sat Aug 20 23:55:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (parser_yylex): update paren_nest for brackets [].
-
-Sun Aug 21 00:10:23 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Sun Aug 21 00:13:27 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/wsdl/xmlSchema/importer.rb (WSDL::XMLSchema::Importer#fetch): add
a workaround for importing an WSDL whose path begins with drive
letter. [ruby-dev:26242]
-Sat Aug 20 22:05:25 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * regexec.c (code_is_in_cclass_node): check code size.
- [ruby-dev:26840]
-
Sat Aug 20 22:37:13 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/logger.rb (write, shift_log?, shift_log): file shifting race
@@ -7662,25 +4498,23 @@ Fri Aug 19 18:13:39 2005 Tanaka Akira <akr@m17n.org>
* lib/time.rb (Time.apply_offset): fix a problem with last day of
month. reported by Lucas Nussbaum. [ruby-talk:152866]
-Thu Aug 18 11:05:36 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Aug 18 12:46:28 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub (COMMON_HEADERS): reverted 1.42.2.24.
+ I misunderstood, bccwin32 on ruby_1_8 uses winsock2 originally.
+ [ruby-dev:26806]
- * win32/win32.c (socketpair_internal): need to call open_ifs_socket()
- to create sockets instead of winsock's socket().
- fixed: [yarv-dev:581]
+ * win32/win32.h: include winsock2.h instead of winsock.h. (bcc32)
Wed Aug 17 23:58:05 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * object.c (rb_to_integer): argument constified.
+
* eval.c (terminate_process): take String message.
* eval.c (rb_thread_switch): propagate the exception caused thread
termination directly. fixed: [ruby-core:05552]
-Wed Aug 17 21:20:05 2005 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/lib/kconv.rb: ensure that symbol_to_option is private_class_method
- and all other methods are module_function
- fixed: [ruby-dev:26808]
-
Wed Aug 17 00:05:46 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_add_method): preserve safe level in the environment
@@ -7689,46 +4523,12 @@ Wed Aug 17 00:05:46 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_call0): restore preserved safe level in the method
execution.
- * parse.y (lambda): need separate block variable stack
- manipulation and lpar_beg maintenance. based on a patch found
- in [ruby-core:05551] from Mauricio Fernandez <mfp at acm.org>.
-
- * parse.y (parser_yylex): adjust lpar_beg after tLAMBEG and
- kDO_LAMBDA. [ruby-core:05551]
-
-Mon Aug 15 07:24:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * intern.h (rb_check_to_integer): add declaration.
-
- * object.c (rb_to_integer, rb_check_to_integer): argument constified.
-
Mon Aug 15 00:38:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_rescue2): reduce PUSH_TAG() as well as NODE_RESCUE.
[ruby-dev:26800]
- * range.c (range_check, range_init): reduce uselse exceptions.
-
-Mon Aug 15 00:34:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (yycompile): remove unreachable code. [yarv-dev:570]
-
-Sat Aug 13 22:16:12 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (remove_entry_secure): forgot final chdir.
-
-Sat Aug 13 22:07:49 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (remove_entry_secure): uses chdir(2) and check
- if current directory is correct. [ruby-dev:26100] [ruby-dev:26226]
-
-Sat Aug 13 21:11:05 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c: add WIN32OLE_VARIANT class.
-
- * ext/win32ole/tests/testall.rb: ditto.
-
- * ext/win32ole/tests/testOLEVARIANT.rb: ditto.
+ * range.c (range_check, range_init): reduce useless exceptions.
Sat Aug 13 18:51:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -7738,30 +4538,10 @@ Sat Aug 13 18:51:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/stringio/stringio.c (strio_set_string): disallow nil.
http://www.rubyist.net/~nobu/t/20050811.html#c05
-Sat Aug 13 08:01:59 2005 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/lib/kconv.rb: Kconv.kconv is now alias of Kconv.conv
- * ext/nkf/lib/kconv.rb: remove nkf dependend symbols fomr SYMBOL_TO_OPTION
-
-Fri Aug 12 17:06:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (f_larglist): allow optional arguments even when
- parentheses are omitted. based on Nobu's patch from
- http://www.rubyist.net/~nobu/t/20050805.html
-
- * parse.y (parser_yylex): update & maintain lpar_beg for detect
- lambda parameters.
-
Thu Aug 11 23:29:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/stringio/stringio.c: keep holding string after closed.
-Thu Aug 11 20:48:40 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
-
- * numeric.c (fix_equal, fix_cmp, fix_gt, fix_ge, fix_lt, fix_le):
- reduce coercing when a method knows about a operand type.
- [ruby-dev:26789]
-
Thu Aug 11 13:01:48 2005 Kouhei Sutou <kou@cozmixng.org>
* lib/rss: fixed sort bug. [ruby-list:41018]
@@ -7786,33 +4566,6 @@ Thu Aug 11 13:01:48 2005 Kouhei Sutou <kou@cozmixng.org>
(RSS::TestSetupMaker10::test_setup_maker_items_sort): added some
tests for RSS::Maker::ItemsBase#do_sort.
-Wed Aug 10 12:01:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/delegate.rb: simplifies Delegator classes; SimpleDelegator
- now uses method_missing for all methods.
-
-Wed Aug 10 10:38:50 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (rb_big_mul0): multiply two numbers (x, y) without
- normalizing the result. x should be a big number.
- [ruby-dev:26778]
-
- * bignum.c (rb_big_pow): use rb_big_mul0() instead of
- rb_big_mul().
-
- * array.c (rb_ary_or, rb_ary_and, rb_ary_plus, rb_ary_diff):
- revert the change on 2005-08-03. Set operation on other item
- should have in separate methods.
-
- * parse.y (shadowing_lvar_gen): warn when arguments shadows
- external local variables.
-
- * parse.y (f_opt): optional arguments should not clobber external
- local variables.
-
- * parse.y (f_rest_arg): rest arguments should not clobber external
- local variables.
-
Wed Aug 10 10:29:40 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb: fix bug on handling __ruby2val_optkeys().
@@ -7824,19 +4577,9 @@ Wed Aug 10 10:29:40 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib/blt/component.rb: ditto.
-Tue Aug 9 21:53:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (formal_assign): let default values override
- arguments to zsuper. fixed: [ruby-dev:26743]
-
-Tue Aug 9 20:30:19 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
-
- * bignum.c (rb_big_coerce): allow bignum x bignum coercing.
- [ruby-dev:26778]
-
Tue Aug 9 15:12:04 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c: remove dangerous 'rb_jump_tag's.
+ * ext/tcltklib/tcltklib.c: remove dangerous 'rb_jump_tag's.
* ext/tk/lib/tk.rb: add __val2ruby_optkeys and __ruby2val_optkeys to
help to convert option values between ruby and tcl.
@@ -7859,56 +4602,28 @@ Tue Aug 9 15:12:04 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib/*: support to treat tkvariable-type
configure options.
-Tue Aug 9 08:24:05 2005 Mauricio Fernandez <mfp@acm.org>
-
- * parse.y (f_block_arg), eval.c (rb_yield_0): deal with dynamic
- variable lambda arguments. [ruby-core:05540]
-
-Mon Aug 8 22:13:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (assign): deal with new block argument.
- fixed: [ruby-core:05536]
-
- * eval.c (rb_node_arity): follow change of NODE_ARGS.
- fixed: [ruby-dev:26761]
-
-Mon Aug 8 21:28:13 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Aug 9 20:30:19 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
- * test/ruby/test_fnmatch.rb: separated from test_file.rb.
+ * bignum.c (rb_big_coerce): allow bignum x bignum coercing.
+ [ruby-dev:26778]
-Mon Aug 8 20:40:35 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Mon Aug 8 20:43:02 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/ruby/test_method.rb: added. [ruby-dev:26761]
-Mon Aug 8 01:26:37 2005 Mauricio Fernandez <mfp@acm.org>
-
- * parse.y (f_larglist): mistake in syntax rule. [ruby-core:05535]
+Sun Aug 7 23:50:14 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-Mon Aug 8 05:16:55 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+ * test/ruby/test_super.rb: added from HEAD. [ruby-dev:26743]
- * ext/openssl/ossl.c (ossl_raise): should use ERR_peek_last_error
- to get last error on the current thread. And should report
- if errors are on the stack while OpenSSL.debug is true.
-
- * ext/openssl/ossl.c (ossl_get_errors): new method for debugging
- this library.
-
-Mon Aug 8 05:15:19 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Sun Aug 7 01:31:15 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * lib/webrick/httpproxy.rb (HTTPProxyServer#intialize),
- lib/webrick/httpserver.rb (HTTPServer#intialize),
- lib/webrick/httpservlet/cgihandler.rb (CGIHandler#initialize),
- lib/webrick/httpservlet/erbhandler.rb (ERBHandler#initialize),
- lib/webrick/httpservlet/filehandler.rb(DefaultFileHandler#initialize):
- super (called with no arguments) takes default value of optional
- arguments. [ruby-dev:26743]
+ * ext/win32ole/win32ole.c (WIN32OLE_EVENT#on_event): should set
+ only one event handler.
- * lib/webrick/httputils.rb: add a media-type "text/html" for .xhtml.
+ * ext/win32ole/tests/testOLEEVENT.rb: ditto.
-Sun Aug 7 23:52:39 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * test/ruby/test_super.rb: added optional arg tests. [ruby-dev:26743]
- the tests expects 1.8 behavior at this time.
+ * ext/win32ole/tests/testOLEPARAM.rb: remove re-defined
+ test_ole_type_detail method.
Sat Aug 6 12:35:24 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -7921,58 +4636,33 @@ Sat Aug 6 12:35:24 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/variable.rb: retains backward conpatibility.
-Fri Aug 5 12:48:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Aug 5 12:50:32 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/tk/tcltklib.c: fixed memory leak when tk_funcall raised
+ * ext/tcltklib/tcltklib.c: fixed memory leak when tk_funcall raised
exception. (copies argv into heap in tk_funcall instead of
caller)
-Fri Aug 5 12:36:40 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Aug 5 12:42:57 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* lib/mkmf.rb (create_makefile): need to convert path separetor
before invoking install command.
-Fri Aug 5 08:08:05 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (return_jump): fix "can't across thread" error message
- when no thread associated.
- http://www.namikilab.tuat.ac.jp/~sasada/diary/200507.html#d31
-
-Fri Aug 5 00:25:12 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Aug 5 00:27:04 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/tk/tcltklib.c: refactoring - extract ruby string <->
+ * ext/tcltklib/tcltklib.c: refactoring - extract ruby string <->
tcl object conversion as get_str_from_obj and get_obj_from_str.
Fri Aug 5 00:19:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * enumerator.c (Init_Enumerator): provided features should have
- extensions.
-
- * eval.c (rb_feature_p): returns type of the feature instead of
- extension.
-
- * eval.c (search_required): ruby library should be prior to statically
- linked extentions. fixed: [ruby-dev:26711]
-
- * eval.c (formal_assign): returns position of rest arguments variable.
-
- * parse.y (f_rest_arg): use anonymous variable for rest arguments.
- fixed: [ruby-dev:26647]
-
* extmk.rb (extmake): needs to be wrapped in an Array.
-Thu Aug 4 20:03:18 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
-
- * numeric.c (Init_Numeric): do not share implementation among
- Fixnum#/ and Fixnum#div. [ruby-core:05531]
-
Thu Aug 4 18:38:36 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c: cannot compile for Tcl7.6/Tk4.2.
+ * ext/tcltklib/tcltklib.c: cannot compile for Tcl7.6/Tk4.2.
- * ext/tk/tcltklib.c: add nativethread consistency check.
+ * ext/tcltklib/tcltklib.c: add nativethread consistency check.
- * ext/tk/stubs.c: ditto.
+ * ext/tcltklib/stubs.c: ditto.
* ext/tk/lib/tk.rb: forgot to define TclTkIp.encoding and encoding=
when Tcl is 7.6 or 8.0.
@@ -7986,11 +4676,6 @@ Thu Aug 4 18:38:36 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib/SUPPRT_STATUS: update RELEASE_DATE
-Thu Aug 4 13:30:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * numeric.c (fix_div): should not convert the result into
- integer. [ruby-core:05524]
-
Thu Aug 4 08:03:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb (extmake): should not modify $mflags for each
@@ -8005,84 +4690,47 @@ Thu Aug 4 00:25:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* {win32,wince}/Makefile.sub: separate config.h for compiler versions.
-Thu Aug 4 00:24:59 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * sprintf.c: replacing is no longer needed.
-
Wed Aug 3 21:59:16 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/variable.rb: TkVariable#trace didn't work on
TkVariable retrived from TkVariable.new_hash.ref. [ruby-dev:26721]
-Wed Aug 3 12:40:28 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
-
- * numeric.c (fix_plus): reduce coercing when a method knows about
- a operand type. [ruby-dev:26723]
-
- * numeric.c (fix_minus, fix_mul, fix_quo, fix_div, fix_mod,
- fix_divmod, fix_pow): ditto.
-
- * bignum.c (rb_big_div, rb_big_modulo): export to reduce
- coercing.
-
-Wed Aug 3 10:13:52 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * configure.in, {bcc32,win32,wince}/Makefile.sub (HAVE_SNPRINTF,
- HAVE_VSNPRINTF): use win32/win32.c's implementation instead of
- missing/vsnprintf.c's.
-
- * win32/win32.[ch] (rb_w32_snprintf, rb_w32_vsnprintf): reverted.
-
-Wed Aug 3 10:05:08 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in: check vsnprintf() and snprintf().
-
- * sprintf.c, missing/vsnprintf.c: made vsnprintf() and snprintf()
- private. fixed: [ruby-dev:26651]
-
Wed Aug 3 08:22:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/socket/socket.c (ruby_connect): revert [ruby-talk:111654]
changes at 2004-09-07. [ruby-dev:26656]
-Wed Aug 3 06:53:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (rb_ary_or): wraps the operand in an array if it is not
- an array. [ruby-talk:150495] [EXPERIMENTAL]
-
- * array.c (rb_ary_and, rb_ary_plus, rb_ary_diff): ditto.
+Tue Aug 2 10:20:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-Tue Aug 2 10:23:12 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/tk/tcltklib.c: use Tcl_[GS]etVar2Ex instead of
+ * ext/tcltklib/tcltklib.c: use Tcl_[GS]etVar2Ex instead of
Tcl_Obj[GS]etVar2. (avoid Tcl_NewStringObj on supported platforms)
- * ext/tk/tcltklib.c: use ip_{get,set,unset}_variable2_core from
+ * ext/tcltklib/tcltklib.c: use ip_{get,set,unset}_variable2_core from
ip_{get,set,unset}_variable.
- * ext/tk/tcltklib.c: replaced Tcl_Panic with rb_bug.
+ * ext/tcltklib/tcltklib.c: replaced Tcl_Panic with rb_bug.
-Tue Aug 2 01:40:38 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Tue Aug 2 01:41:28 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/ping.rb (Ping.pingecho): should rescue StandardError.
[ruby-dev:26677]
-Mon Aug 1 19:02:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Aug 1 19:09:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/tk/tcltklib.c: refactoring - replaced rb_ivar_defined &
+ * ext/tcltklib/tcltklib.c: refactoring - replaced rb_ivar_defined &
rb_ivar_get with single rb_attr_get call.
-Mon Aug 1 18:44:08 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Aug 1 18:45:07 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/tk/tcltklib.c (Tcl_GetStringResult): refactoring - define
+ * ext/tcltklib/tcltklib.c (Tcl_GetStringResult): refactoring - define
alternative macro on Tcl7.x or earlier.
-Mon Aug 1 13:53:55 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Aug 1 13:57:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/tk/tcltklib.c (deleted_ip): refactoring - interpreter
+ * ext/tcltklib/tcltklib.c (deleted_ip): refactoring - interpreter
deletion check. [ruby-dev:26664]
-Mon Aug 1 01:08:21 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Mon Aug 1 01:17:40 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb (check_insecure_method): use private_methods and
protected_methods instead of respond_to? to check method visibility.
@@ -8092,205 +4740,85 @@ Mon Aug 1 01:08:21 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* test/drb/ut_drb.rb: ditto.
-Sat Jul 30 18:49:44 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c: add WIN32OLE_TYPE#ole_typelib,
- WIN32OLE_TYPE#implemented_ole_types.
-
- * ext/win32ole/tests/testOLETYPE.rb: ditto.
-
-Fri Jul 29 16:12:02 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
-
- * lib/irb/context.rb: fix `irb --readline` option. [ruby-dev:40955]
+Mon Aug 1 00:07:32 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+ * lib/irb/context.rb: fix `irb --readline` option. [ruby-list:40955]
Fri Jul 29 09:59:38 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_call0): fix calling zsuper from a method with anonymous
- rest argument. [ruby-dev:26639]
-
* eval.c (rb_yield_0): push yielded node instead of yielding.
fixed: [yarv-dev:549]
-Thu Jul 28 21:49:17 2005 IWATSUKI Hiroyuki <don@na.rim.or.jp>
-
- * parse.y (rb_parser_end_seen_p): exclude from ripper.
- <http://moonrock.jp/~don/d/200507.html#d28_t2>
-
- * sprintf.c (clearerr): remove standard macro before re-definition.
- <http://moonrock.jp/~don/d/200507.html#d28_t3>
-
Thu Jul 28 18:09:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/stubs.c: When --enable-tcltk-stubs, the initialize
+ * ext/tcltklib/stubs.c: When --enable-tcltk-stubs, the initialize
routine creates a Tcl/Tk interpreter and deletes it. However,
init cost of Tk's MainWindow is not so small. And that makes it
impossible to use libraries written with Tcl functions only on
an environment without a graphical display. This changes support
delaying initalization of Tk_Stubs until the script needs Tk.
- * ext/tk/stubs.h: New file. Define prototypes and return codes of
- functions on stubs.c.
+ * ext/tcltklib/stubs.h: New file. Define prototypes and return
+ codes of functions on stubs.c.
- * ext/tk/tcltklib.c: Support delaying initalization of Tk_Stubs
- until the script needs Tk.
+ * ext/tcltklib/tcltklib.c: Support delaying initalization of
+ Tk_Stubs until the script needs Tk.
- * ext/tk/tcltklib.c: Show friendly error messages for errors on
- initialization.
+ * ext/tcltklib/tcltklib.c: Show friendly error messages for errors
+ on initialization.
- * ext/tk/tcltklib.c: Avoid SEGV on ip_finalize() when ruby is
+ * ext/tcltklib/tcltklib.c: Avoid SEGV on ip_finalize() when ruby is
exiting and $DEBUG is true. (Not fix. If you know the reason of
why, please fix it.)
- * ext/tk/tkutil/tkutil.c (ary2list, ary2list2): bug fix on handling
- of encoding.
+ * ext/tk/tkutil.c (ary2list, ary2list2): bug fix on handling of
+ encoding.
* ext/tk/lib/multi-tk.rb: MultiTkIp#eval_string and bg_eval_string
don't work propery.
* ext/tk/lib/tk.rb: Forget extending Tk::Encoding module to Tk.
-
* ext/tk/lib/tk/variable.rb: TkVarAccess fails to initialize the
object for an element of a Tcl's array variable.
-Thu Jul 28 17:23:37 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (f_larglist): allow block argument in lambda parameter
- list without parenthesis.
-
-Thu Jul 28 17:14:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (each_i): typo fixed. [ruby-dev:26622]
-
-Thu Jul 28 15:04:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (f_arg): better argument name duplication check
-
- * parse.y (new_args_gen): factored out name duplication check for
- optional and rest arguments.
-
- * parse.y (new_bv_gen): allow shadowing outer local variables;
- warning remains.
-
-Thu Jul 28 13:46:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (ripper_warningS): the argument was omitted.
- [ruby-dev:26621]
-
-Thu Jul 28 11:30:57 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (f_larglist): allow bv_decl at the end of lambda
- argument list. [EXPERIMENTAL]
-
- * parse.y (new_bv_gen): allow local variable shadowing, with
- warning in verbose mode.
-
Wed Jul 27 23:23:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* gc.c (obj_free): make message format consistent with one from
gc_mark(). [ruby-talk:149668]
- * sprintf.c (quad_t): prepare quad_t as well. [ruby-talk:149668]
-
Wed Jul 27 22:11:37 2005 Kouhei Sutou <kou@cozmixng.org>
* sample/rss/tdiary_plugin: removed. because the plugin
is imported in the tDiary plugin packages.
-Wed Jul 27 19:11:53 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (cd): follow :noop option change. (This patch
- is contributed by Doug Kearns)
-
-Wed Jul 27 16:25:59 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (lambda): Perl6 style -> lambda expression. [NEW]
- [VERY EXPERIMENTAL]
-
-Wed Jul 27 10:43:14 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (id2ref): must not assign pointers to long int. use
- LONG_LONG instead if SIZEOF_LONG < SIZEOF_VOIDP.
- [ruby-talk:149645]
-
- * ruby.h: use LONG_LONG to simplify the change.
- [ruby-talk:149645]
-
Wed Jul 27 10:59:02 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (dir_each): rewinddir(3) before iteration.
[ruby-talk:149628]
-Wed Jul 27 02:34:58 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_f_throw): replace all '0x%lx' by '%p'.
- [ruby-talk:149553]
-
- * missing/vsnprintf.c (BSD_vfprintf): '%p' need to handle 64bit
- size pointer. [ruby-talk:149553]
-
-Tue Jul 26 22:41:28 2005 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/lib/ripper/sexp.rb: new method Ripper.sexp_raw.
-
- * ext/ripper/lib/ripper/sexp.rb (Ripper.sexp): returns more
- readable tree. This is suggested by Kirill A. Shutemov.
-
-Tue Jul 26 22:05:12 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: merge a patch contributed by Daniel Berger,
- with some modification. (RubyForge #2128)
-
-Tue Jul 26 18:11:33 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ruby.h: support LLP64 model. [ruby-talk:149524]
-
-Tue Jul 26 12:57:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Tue Jul 26 12:57:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/openssl_missin.c: include <openssl/engine.h> before
<openssl/x509_vfy.h> to avoid compilation error of mswin32.
suggested by NAKAMURA Usaku.
-Mon Jul 25 23:48:55 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.[ch]: (rb_w32_vsnprintf, rb_w32_snprintf): removed.
-
Mon Jul 25 21:30:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * common.mk: Borland MAKE doesn't look for file names which have paths
- from VPATH. fixed: [ruby-dev:26604]
-
- * ruby.h (NORETURN, DEPRECATED): moved just after config.h.
-
- * {win32,wince}/Makefile.sub: vsnprintf() is in missing now.
-
* {bcc32,win32,wince}/Makefile.sub: moved CPPFLAGS only for ruby
source to XCFLAGS.
-Mon Jul 25 14:10:02 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/multi-tk.rb: fix en-bugged part in the last commit.
-
Mon Jul 25 13:45:18 2005 NAJIMA Hiroki <najima@mickey.ai.kyutech.ac.jp>
* io.c: check HAVE_SYS_IOCTL_H before including the header.
[ruby-dev:26610]
-Sat Jul 23 16:48:12 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_engine.c (ossl_engine_s_load): should check
- OPENSSL_NO_STATIC_ENGINE.
-
-Sat Jul 23 11:46:30 2005 Tanaka Akira <akr@m17n.org>
-
- * eval.c (rb_fd_select): the all three fd_sets must be long enough for
- select. fixed: [ruby-talk:149059]
+Mon Jul 25 14:10:02 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-Sat Jul 23 10:01:41 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/tk/lib/multi-tk.rb: fix en-bugged part in the last commit.
- * sprintf.c (rb_vsprintf, rb_sprintf): new functions return new String,
- using missing/vsnprintf.c. [ruby-dev:26580]
+Sat Jul 23 16:49:04 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * missing/vsnprintf.c: made the output changeable.
+ * ext/openssl/ossl_engine.c (ossl_engine_s_load): should check
+ OPENSSL_NO_STATIC_ENGINE.
Fri Jul 22 21:06:08 2005 Tadashi Saito <shiba@mail2.accsnet.ne.jp>
@@ -8324,12 +4852,12 @@ Fri Jul 22 14:37:43 2005 Kouhei Sutou <kou@cozmixng.org>
Fri Jul 22 07:01:42 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tkutil/tkutil.c (tk_conv_args): forget to revert
- thread_critical and gc_disable when raise ArgumentError.
+ * ext/tk/tkutil.c (tk_conv_args): forget to revert thread_critical
+ and gc_disable when raise ArgumentError.
* ext/tk/lib/remote-tk.rb: RemoteTkIp doesn't need to include TkUtil.
- * ext/tk/tcltklib.c: add TclTkIp#has_mainwindow? method.
+ * ext/tcltklib/tcltklib.c: add TclTkIp#has_mainwindow? method.
* ext/tk/lib/tk.rb: add Tk.has_mainwindow? method.
@@ -8361,17 +4889,11 @@ Fri Jul 22 07:01:42 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: fail to control a slave IP when Tk.mainloop
runs on the IP.
-Thu Jul 21 01:00:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf-utf8/{nkf.c,utf8tbl.c,config.h}:
- import 1.76
- [ruby-dev:26592] nkf constification
-
-Wed Jul 20 19:18:52 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jul 20 19:20:37 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* io.c (S_ISREG): need to define S_ISREG before it is used first.
-Wed Jul 20 18:33:15 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Jul 20 18:40:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* io.c (wsplit_p): patch for the environment where
fcntl(F_GETFL, O_NONBLOCK) is not supported. in that case,
@@ -8387,7 +4909,7 @@ Wed Jul 20 10:04:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* variable.c (rb_class_path): need to adjust snprintf() len for
teminating NUL. [ruby-dev:26581]
-Wed Jul 20 03:58:52 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Jul 20 04:01:55 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/socket/socket.c: sorry, BeOS also uses HAVE_CLOSESOCKET,
so reverted.
@@ -8395,7 +4917,7 @@ Wed Jul 20 03:58:52 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/socket/extconf.rb: should not define HAVE_CLOSESOCKET
on windows.
-Wed Jul 20 03:12:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Jul 20 03:16:43 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/socket/socket.c: should not undef close() on win32.
it's defined to rb_w32_close(), otherwise handle leaks.
@@ -8411,22 +4933,19 @@ Tue Jul 19 22:47:29 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* error.c (syserr_initialize): add 1 byte for snprintf() size for
NUL at the end. [ruby-dev:26574]
-Tue Jul 19 17:16:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * signal.c (trap): remove sigexit(); handle "EXIT" via sig_exec().
- [ruby-dev:26440]
+Tue Jul 19 16:39:46 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (rb_io_inspect): replace sprintf() with "%s" format all
over the place by snprintf() to avoid integer overflow.
-Tue Jul 19 14:10:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Jul 19 14:08:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/tk/tcltklib.c: rbtk_eventloop_depth is used as int.
+ * ext/tcltklib/tcltklib.c: rbtk_eventloop_depth is used as int.
- * ext/tk/tcltklib.c: rbtk_pending_exception is tested with
+ * ext/tcltklib/tcltklib.c: rbtk_pending_exception is tested with
NIL_P, so should assign Qnil instead of 0 (Qfalse).
- * ext/tk/tcltklib.c (ip_invoke_real): fixed memory leak when
+ * ext/tcltklib/tcltklib.c (ip_invoke_real): fixed memory leak when
ip is deleted.
Tue Jul 19 13:19:46 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -8435,50 +4954,33 @@ Tue Jul 19 13:19:46 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
returns a string even if the default value type of the TkVariable
object is not "string".
-Mon Jul 18 21:39:18 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Jul 18 21:40:20 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* eval.c (rb_call0): make the pointer to NODE volatile
instead of NODE itself.
Mon Jul 18 14:32:21 2005 Tanaka Akira <akr@m17n.org>
- * eval.c (rb_call0): make body volatile to avoid possible optimization
- problem.
+ * eval.c (rb_call0): make body volatile to avoid optimization problem.
[ruby-dev:26195]
Mon Jul 18 12:23:27 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/io/wait/wait.c: wrong backport from trunk, and compile error on
- platforms fd_set is not a bit set. fixed: [ruby-dev:26562]
+ * ext/io/wait/wait.c: wrong backport from trunk. fixed: [ruby-dev:26562]
Mon Jul 18 09:36:25 2005 Tanaka Akira <akr@m17n.org>
* rubyio.h (FMODE_WSPLIT, FMODE_WSPLIT_INITIALIZED): new constant.
* io.c (wsplit_p): new function.
- (io_fflush): split writing data by PIPE_BUF if wsplit_p is true in
+ (io_fwrite): split writing data by PIPE_BUF if wsplit_p is true in
multi-threaded mode.
- (io_fwrite): ditto.
[ruby-dev:26540]
-Mon Jul 18 05:00:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf-utf8/nkf.c: import nkf.c 1.73
- fix: TestKconv 1F
-
Sun Jul 17 13:46:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/io/wait/extconf.rb, ext/io/wait/wait.c: Win32 platforms support.
-Sat Jul 16 23:43:16 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enumerator.c (Init_Enumerator): wrong argument specs.
- [ruby-core:05481]
-
-Sat Jul 16 15:52:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * win32/win32.[hc]: constified socket functions. [ruby-dev:26553]
-
Fri Jul 15 23:59:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/rdoc/parsers/parse_c.rb (handle_class_module): handle a
@@ -8489,25 +4991,23 @@ Fri Jul 15 23:59:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/rdoc/parsers/parse_c.rb (find_call_seq): allow :nodoc: modifier
in C. [ruby-core:04572]
-Fri Jul 15 23:20:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jul 15 18:00:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * enumerator.c (Init_Enumerator): use an internal directly.
+ * bcc32/Makefile.sub (COMMON_HEADERS): ruby_1_8 is using winsock.h.
+ failed to compile ext/socket on bcc5.6.4. [ruby-dev:26193]
-Fri Jul 15 07:58:10 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Fri Jul 15 07:58:56 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/server.rb (WEBrick::GenericServer#accept_client):
sockets should be non-blocking mode. [ruby-dev:26405]
* lib/webrick/utils.rb (WEBrick::Utils.set_non_blocking): new method.
-Fri Jul 15 00:11:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#read_chunked):
+ should call sock.read repeatedly until the preferred size data
+ is obtained.
- * enum.c (enumeratorize): create new enumerator for current method if
- no block is given.
-
- * enumerator.c: moved from ext/enumerator.
-
-Thu Jul 14 18:27:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Jul 14 18:27:16 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.c (rb_w32_strerror): should return correct message
for ENAMETOOLONG and ENOTEMPTY. (bcc32) [ruby-dev:26533]
@@ -8519,11 +5019,7 @@ Thu Jul 14 00:45:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* LEGAL (ext/nkf/nkf-utf8): updated from nkf1.7 to nkf-utf8.
-Wed Jul 13 22:44:00 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y: remove static variables. [ruby-dev:26530]
-
-Wed Jul 13 19:36:29 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Jul 13 19:37:47 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.c (rb_w32_mkdir): should set EEXIST (not EACCES)
if file or directory already exists. (bcc32) [ruby-dev:26508]
@@ -8536,7 +5032,7 @@ Wed Jul 13 19:36:29 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
Wed Jul 13 12:40:00 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c: TclTkLib.do_one_event doesn't work.
+ * ext/tcltklib/tcltklib.c: TclTkLib.do_one_event doesn't work.
* ext/tk/lib/tk.rb: Tk.thread_update is available.
@@ -8544,30 +5040,16 @@ Tue Jul 12 23:32:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb: keep curdir unexpanded.
-Mon Jul 11 23:50:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c, intern.h (rb_proc_call, rb_obj_method, rb_method_call):
- export.
-
- * ext/enumerator/enumerator.c (enumerator_with_index): [EXPERIMENTAL]
- added a new method Enumerator#with_index. [ruby-talk:147728]
-
Mon Jul 11 08:31:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * regparse.c (fetch_escaped_value): mask values following \c in
+ * regex.c (read_special): fix parsing backslashes following \c in
regexp. fixed: [ruby-dev:26500]
-Sun Jul 11 05:18:17 2005 Michael Neumann <mneumann@ruby-lang.org>
-
- * lib/xmlrpc/server.rb (XMLRPC::Server): Switch from GServer over to
- WEBrick. This makes file lib/xmlrpc/httpserver.rb obsolete (at least it is
- no further used by the XML-RPC library).
-
-Mon Jul 11 02:50:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Jul 11 02:53:00 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/cgi.rb (WEBrick::CGI::Socket#request_line):
- mistook to merge the patch of [ruby-dev:26235] at
- revision 1.11.
+ mistook in merging the patch of [ruby-dev:26235] at
+ revision 1.4.2.6.
Sun Jul 10 23:58:04 2005 Tanaka Akira <akr@m17n.org>
@@ -8575,12 +5057,18 @@ Sun Jul 10 23:58:04 2005 Tanaka Akira <akr@m17n.org>
avoid unlink a directory by root.
cf. [ruby-dev:26237]
+Sun Jul 11 05:18:17 2005 Michael Neumann <mneumann@ruby-lang.org>
+
+ * lib/xmlrpc/server.rb (XMLRPC::Server): Switch from GServer over to
+ WEBrick. This makes file lib/xmlrpc/httpserver.rb obsolete (at least it is
+ no further used by the XML-RPC library).
+
Sun Jul 10 12:47:01 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/debug.rb (debug_command): added a deficient format specifier.
fixed: [ruby-core:05419]
-Sat Jul 9 22:02:37 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+Sat Jul 9 21:28:46 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole.c (ole_method_dispid): convert dispid
in Ruby and C by INT2NUM and NUM2INT.
@@ -8605,36 +5093,6 @@ Fri Jul 8 15:45:04 2005 Kouhei Sutou <kou@cozmixng.org>
* test/rss/test_parser.rb (RSS::TestParser#test_category20):
adjusted test case.
-Wed Jul 6 18:45:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_obj_pattern_match): now returns nil.
- [ruby-core:05391]
-
-Mon Jul 4 14:35:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * sample/svr.rb: service can be stopped by ill-behaved client; use
- tsvr.rb instead.
-
-Mon Jul 4 13:25:21 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * missing/erf.c: original erf.c by prof. Okumura is confirmed to
- be public domain. reverted BSD implementation.
-
-Wed Jul 6 11:15:21 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (open_ifs_socket): new function.
-
- * win32/win32.c (StartSockets, rb_w32_socket): use open_ifs_socket()
- instead of socket().
- all changes are derived from [ruby-core:5388].
-
-Wed Jul 6 00:15:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf-utf8/{nkf.c,utf8tbl.c,config.h}:
- imported nkf.c 1.70 (support UTF-8-MAC)
-
- * ext/nkf/lib/kconv.rb: add :utf8mac and :internalunicode
-
Tue Jul 5 23:44:06 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* instruby.rb: expand source library path.
@@ -8651,19 +5109,19 @@ Tue Jul 5 15:15:10 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/tkutil.c: fix typo.
-Tue Jul 5 14:52:56 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Tue Jul 5 14:51:35 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c: bug fix on treating Unicode strings.
+ * ext/tcltklib/tcltklib.c: bug fix on treating Unicode strings.
- * ext/tk/tcltklib.c: add methods to treat encoding mode.
+ * ext/tcltklib/tcltklib.c: add methods to treat encoding mode.
- * ext/tk/MANUAL_tcltklib.eng: add description of TclTkLib#encoding,
+ * ext/tcltklib/MANUAL.eng: add description of TclTkLib#encoding,
encoding_system, and so on.
- * ext/tk/MANUAL_tcltklib.eucj: ditto.
+ * ext/tcltklib/MANUAL.euc: ditto.
- * ext/tk/tkutil/tkutil.c: fail to create a Tcl's list string from
- an array including multiple kind of encoded strings.
+ * ext/tk/tkutil.c: fail to create a Tcl's list string from an
+ array including multiple kind of encoded strings.
* ext/tk/lib/tk.rb: ditto.
@@ -8689,11 +5147,17 @@ Tue Jul 5 14:52:56 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/namespace.rb: arguemnts for TclTkIp#_merge_tklist
should be UTF-8 strings.
-Mon Jul 4 19:29:32 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Jul 4 14:35:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * lib/set.rb: test change to follow revision 1.28. (duck typing?)
+ * sample/svr.rb: service can be stopped by ill-behaved client; use
+ tsvr.rb instead.
-Mon Jul 4 11:23:50 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jul 4 13:25:21 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * missing/erf.c: original erf.c by prof. Okumura is confirmed to
+ be public domain. reverted BSD implementation.
+
+Mon Jul 4 11:15:37 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* test/{dbm,gdbm,sdbm}/test_{dbm,gdbm,sdbm}.rb: skip some tests
which using fork on fork-less platforms.
@@ -8716,18 +5180,11 @@ Sat Jul 2 17:06:23 2005 Tanaka Akira <akr@m17n.org>
* eval.c (flush_register_windows): new function.
- * ruby.h (NOINLINE): move up to be effective in defines.h.
-
-Sat Jul 2 15:19:41 2005 Tanaka Akira <akr@m17n.org>
-
- * configure.in: check select_large_fdset.
-
- * eval.c: use select_large_fdset to support large file descriptors
- on Solaris. [ruby-dev:26404]
+Fri Jul 1 17:48:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-Fri Jul 1 17:55:08 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (rb_big_neg): may be accessing bogus pointer value.
+ * bignum.c (get2comp): revert all prior changes, and calculate
+ proper 2's complement for negative numbers. backported from
+ HEAD.
Fri Jul 1 15:50:12 2005 NAKAMURA Usaku <usa@ruby-lang.org>
@@ -8767,11 +5224,6 @@ Fri Jul 1 00:18:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/delegate.rb (Delegator::respond_to): respond_to? must check
destination object. [ruby-talk:146894]
-Thu Jun 30 23:52:12 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * signal.c (trap): non-string trap hander was ignored.
- fixed: [ruby-dev:26417]
-
Thu Jun 30 19:00:21 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
* lib/irb/ruby-lex.rb (RubyLex::identify_number): alternative implements
for [ruby-dev:26410]. And support a numeric form of 0d99999.
@@ -8786,76 +5238,46 @@ Thu Jun 30 15:13:16 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_eval): pre-evaluate argument for unambiguous
evaluation order. [ruby-dev:26383]
-Thu Jun 30 14:48:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/net/http.rb (Net::HTTP#connect, Net::HTTP#request): should
- not send proxy username and password to origin servers.
- [ruby-dev:25673]
-
- * lib/net/http.rb (Net::HTTP::ProxyDelta#edit_path): should not
- send HTTPS scheme URL to origine servers. [ruby-dev:25689]
-
Thu Jun 30 09:53:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/delegate.rb (Delegator::method_missing): forward unknown
method to the destination. suggested by
<christophe.poucet@gmail.com>. [ruby-talk:146776]
-Wed Jun 29 00:03:20 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * regparse.c (fetch_token): avoid warning of unused goto tag.
- [ruby-dev:26389]
-
Tue Jun 28 21:59:29 2005 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * dir.c, eval.c, parse.y, process.c, ruby.c: avoid warning "unused
+ * dir.c, eval.c, hash.c, process.c, ruby.c: avoid warning "unused
variable" [ruby-dev:26387]
- * dir.c (glob_helper): avoid warning "enumeration value `RECURSIVE'
- not handled in switch" [ruby-dev:26392]
+Sat Jun 25 17:15:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-Tue Jun 28 01:52:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/lib/kconv.rb: add Kconv::VERSION
- * ext/nkf/lib/kconv.rb (conv): can process arrayed options
- * ext/nkf/nkf-utf8/nkf.c: imported Revision 1.69
- * ext/nkf/nkf-utf8/utf8tbl.c: imported Revision 1.9
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_query): should
+ discard if key=val pair is empty. patch from Gary Wright.
Sat Jun 25 23:30:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* process.c (detach_process_watcher): terminate process watcher
thread right after rb_waitpid() succeed. [ruby-talk:146430]
-Sat Jun 25 17:12:20 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_query): should
- discard if key=val pair is empty. patch from Gary Wright.
-
Sat Jun 25 15:49:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * enum.c (enum_min, enum_max, enum_min_by, enum_max_by): do not ignore
- nil as the first element.
+ * enum.c (enum_min, enum_max): do not ignore nil as the first element.
-Sat Jun 25 15:13:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sat Jun 25 14:40:17 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * lib/set.rb (Set#==): [ruby-dev:25206] (ported from ruby_1_8 branch)
+ * ext/sdbm/init.c (fsdbm_select): SDBM#select had returned the array
+ which contained each elements twice. [ruby-dev:26358]
-Sat Jun 25 11:37:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jun 25 05:06:47 2005 Michael Neumann <mneumann@ruby-lang.org>
- * ext/nkf/lib/kconv.rb: remove constants
- Iconv_Shift_JIS, Uconv_EUC_JP, Iconv_UTF8
- * ext/nkf/lib/kconv.rb: add module functions to Kconv
- conv, {eucjp, shiftjis, utf8}?, guess_as_symbol
- * ext/nkf/lib/kconv.rb: add instance methods to String
- conv, {eucjp, shiftjis, utf8}?
- * ext/nkf/lib/kconv.rb: add aliases Kconv.to_* and String#to_*
+ * lib/xmlrpc/*, test/xmlrpc/*: backported changes from HEAD into 1.8
Fri Jun 24 17:00:00 2005 Shigeo Kobayashi <shigeo@tinyforest.jp>
* ext/bigdecimal/bigdecimal.c: patch from "NATORI Shin"
(u-tokyo.ac.jp) applied to fix rounding bug.
-Fri Jun 24 13:17:45 2005 akira yamada <akira@ruby-lang.org>
+Fri Jun 24 13:06:45 2005 akira yamada <akira@ruby-lang.org>
* lib/uri/common.rb, lib/uri/generic.rb: fixed typo in documents and
replaced some existent domain name with "example.com".
@@ -8892,7 +5314,7 @@ Mon Jun 20 18:44:04 2005 Tanaka Akira <akr@m17n.org>
because setjmp is not enough to fix getcontext and SPARC register
window problem.
-Mon Jun 20 17:15:51 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jun 20 16:48:36 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* ext/dbm/dbm.c (fdbm_closed): new method DBM#closed?
@@ -8905,7 +5327,7 @@ Mon Jun 20 17:15:51 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.{ch} (unlink): hook runtime function to change
file attribute before unlinking.
- merge from 1.8, see [ruby-dev:26360]
+ fixed: [ruby-dev:26360]
Mon Jun 20 02:15:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -8919,17 +5341,6 @@ Mon Jun 20 01:26:49 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
ext/openssl/ossl_pkcs12.h, ext/openssl/ossl_x509req.c: avoid
compiler warnings. suggested by Michal Rokos.
-Sun Jun 20 00:22:02 2005 Michael Neumann <mneumann@ruby-lang.org>
-
- * lib/xmlrpc/utils.rb: Patch by Nobuhiro IMAI fixes the following
- problem: Default value modification on
- Module#public_instance_methods (false -> true) breaks
- s.add_handler(XMLRPC::iPIMethods("sample"), MyHandler.new) style
- security protection.
-
- * lib/xmlrpc/client.rb: Aliased XMLRPC::Client#new2 as
- XMLRPC::Client#new_from_uri, and #new3 as #new_from_hash.
-
Sun Jun 19 14:09:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* gc.c (run_final): reduce unnecessary object allocation during
@@ -8938,30 +5349,15 @@ Sun Jun 19 14:09:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* gc.c (rb_gc_call_finalizer_at_exit): deferred finalizers list should
be cleared before calling them. fixed: [ruby-talk:145790]
-Sat Jun 18 01:15:36 2005 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/readline/readline.c (readline_readline): do not set
- rl_{in,out}stream.
-
- * ext/readline/readline.c (readline_s_set_input): new method.
-
- * ext/readline/readline.c (readline_s_set_output): new method.
-
- * lib/irb/input-method.rb: set Readline.input and Readline.output.
-
Fri Jun 17 13:01:40 2005 Tanaka Akira <akr@m17n.org>
* lib/time.rb (Time.parse): fix previous leap seconds support.
(Time.rfc2822): ditto.
(Time.xmlschema): ditto.
-Thu Jun 16 15:41:32 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ruby.c (load_file): '!' is already read. reported by gotoyuzo.
+Thu Jun 16 15:06:55 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-Thu Jun 16 15:09:38 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/tk/tcltklib.c (ip_rb_threadVwaitCommand): Tcl_Release
+ * ext/tcltklib/tcltklib.c (ip_rb_threadVwaitCommand): Tcl_Release
was missing.
Thu Jun 16 13:34:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -8977,14 +5373,10 @@ Thu Jun 16 12:53:24 2005 Tanaka Akira <akr@m17n.org>
(Time.rfc2822): ditto.
(Time.xmlschema): ditto.
-Thu Jun 16 00:13:41 2005 Tanaka Akira <akr@m17n.org>
+Thu Jun 16 08:29:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * lib/resolv.rb (Resolv::DNS::Resource#ttl): new attribute.
- (Resolv::DNS::Resource#==): ignore @ttl.
- (Resolv::DNS::Resource#hash): ditto.
- (Resolv::DNS::Message::MessageDecoder#get_rr): save TTL in a
- Resource object.
- based on [ruby-core:5190] by Eric Hodel.
+ * ext/dl/sym.c (rb_dlsym_call): needs FREE_ARGS before return.
+ fixed memory leak. [ruby-Bugs-2034]
Wed Jun 15 18:26:39 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -8995,13 +5387,13 @@ Wed Jun 15 18:26:39 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
Tue Jun 14 02:02:43 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tkutil/tkutil.c: add TkUtil::CallbackSubst.subst_arg(m, ...)
- & _define_attribute_aliases(hash) to get substitution-argument from
+ * ext/tk/tkutil.c: add TkUtil::CallbackSubst.subst_arg(m, ...) &
+ _define_attribute_aliases(hash) to get substitution-argument from
attributes (e.g. subst_arg(:x,:y,:num,:button) --> "%x %y %b %b ").
* ext/tk/lib/tk/event.rb: use _define_attribute_aliases().
-Mon Jun 13 13:03:08 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Jun 13 13:01:05 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* hash.c (ruby_setenv): fixed SEGV. [ruby-dev:26186]
@@ -9024,20 +5416,11 @@ Mon Jun 13 01:20:02 2005 Tanaka Akira <akr@m17n.org>
* eval.c (rb_gc_mark_threads): curr_thread may not be part of the
thread list. [ruby-dev:26312]
-Sat Jun 11 22:34:44 2005 Minero Aoki <aamine@loveruby.net>
-
- * parse.y: missing arg_paren event. This patch is contributed by
- Mitchell N Charity.
-
-Fri Jun 10 23:55:17 2005 Tanaka Akira <akr@m17n.org>
-
- * eval.c (unknown_node): show more information. [ruby-dev:26196]
-
Fri Jun 10 23:35:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* missing/mkdir.c: remove. [ruby-core:05177]
-Fri Jun 10 22:54:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jun 10 22:54:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* missing.h: fd_set stuffs need sys/types.h. fixed: [ruby-core:05179]
@@ -9061,47 +5444,20 @@ Thu Jun 9 19:55:41 2005 Tanaka Akira <akr@m17n.org>
* gc.c (Init_stack): remove IA64_MAGIC_STACK_LIMIT.
-Thu Jun 9 18:24:16 2005 Tanaka Akira <akr@m17n.org>
-
- * configure.in, eval.c, gc.c: use libunwind only on HP-UX.
- [ruby-dev:26297]
-
-Thu Jun 9 14:46:32 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (env_aset): do not treat nil as key-removing value.
- [ruby-list:40865]
-
- * parse.y (method_call): allow aref expression ([]) to take a
- block.
-
- * parse.y (block_dup_check): a function to check duplication of
- a block argument and an actual block.
-
Thu Jun 9 11:55:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/delegate.rb (SimpleDelegator::__setobj__): need check for
recursive delegation. [ruby-core:04940]
-Thu Jun 9 11:50:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/cgi.rb: add underscore aliases CGI::escape_html,
- CGI::unescape_html, CGI::escape_element, CGI::unescape_element.
- [ruby-core:05058]
-
Wed Jun 8 18:47:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* misc/ruby-mode.el (ruby-expr-beg): fix looking point drift.
-Wed Jun 8 12:25:59 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (rb_ary_nitems): add the block feature to Array#nitems.
- suggested by Bertram Scharpf <lists@bertram-scharpf.de> in
- [ruby-talk:134083].
-
Wed Jun 8 11:11:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * bignum.c (get2comp): revert all prior changes, and calculate
- proper 2's complement for negative numbers.
+ * bignum.c (get2comp): calculate proper 2's complement for
+ negative numbers. a bug in normalizing negative numbers
+ reported from Honda Hiroki <hhonda@ipflex.com>.
Wed Jun 8 08:33:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -9112,15 +5468,6 @@ Wed Jun 8 08:33:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (backtrace): skip successive frames sharing same node.
-Wed Jun 8 01:27:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (bignorm): fixed a bug in normalizing negative numbers
- reported from Honda Hiroki <hhonda@ipflex.com>. normalizing
- should not trim leading zeros from negative numbers.
-
- * bignum.c (rb_cstr_to_inum): must remove leading zeros for this
- case.
-
Wed Jun 8 00:15:08 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/socket/socket.c (ruby_getaddrinfo__aix): merged a patch from
@@ -9146,55 +5493,37 @@ Tue Jun 7 19:34:15 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
Tue Jun 7 18:39:31 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/thread.rb: RDoc documentation from Eric Hodel
- <drbrain@segment7.net> added. [ruby-core:05148]
+ <drbrain at segment7.net> added. [ruby-core:05148]
Tue Jun 7 18:30:04 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (create_makefile): add .SUFFIXES from depend file.
fixed: [ruby-dev:26294]
-Tue Jun 7 17:20:39 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (parser_yylex): allow ';;' to be block terminator in
- place of 'end'. [highly experimental]
-
- * misc/ruby-mode.el (ruby-block-end-re): allow ';;' to be a
- negative indent trigger. [highly experimental]
+Tue Jun 7 17:39:54 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * parse.y (parser_yylex): small error fixed.
+ * object.c (rb_mod_cvar_get): Module#class_variable_get(): back
+ ported from CVS HEAD. [ruby-talk:144741]
-Tue Jun 7 16:45:49 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (parser_yylex): "respond_to?:foo" should be interpreted
- as "respond_to? :foo" at the command level. [ruby-talk:144303]
+ * object.c (rb_mod_cvar_set): Module#class_variable_set().
+ [ruby-talk:144741]
Tue Jun 7 16:32:53 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* sprintf.c (rb_f_sprintf): raise exception on debug mode (-d),
not verbose mode (-v/-w). [ruby-core:05123]
- * sprintf.c (rb_f_sprintf): warn always on verbose mode.
-
Tue Jun 7 10:30:49 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: slave-ip fails to call procedures
delegated by master-ip.
-Mon Jun 6 16:35:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/ripper/depend: add .y to .SUFFIXES for nmake.
-
Sun Jun 5 23:00:35 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/console.rb: create console when required
* ext/tk/sample/tkextlib/tile/demo.rb: fix TypeError & create Console
-Sun Jun 5 10:23:52 2005 Tanaka Akira <akr@m17n.org>
-
- * signal.c (ruby_signal): don't set SA_RESTART.
- [ruby-dev:26276]
-
Sat Jun 4 14:55:18 2005 Tanaka Akira <akr@m17n.org>
* test/dbm/test_dbm.rb: merged from ext/dbm/testdbm.rb.
@@ -9204,61 +5533,15 @@ Sat Jun 4 14:55:18 2005 Tanaka Akira <akr@m17n.org>
* test/sdbm/test_sdbm.rb: renamed from ext/sdbm/testsdbm.rb with
modification to use test/unit.
-Fri Jun 3 23:23:02 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * intern.h (rb_fdset_t): deal with fd bit sets over FD_SETSIZE.
- fixed: [ruby-dev:26187]
-
- * eval.c (rb_fd_init, rb_fd_term, rb_fd_zero, rb_fd_set, rb_fd_clr,
- rb_fd_isset, rb_fd_copy): ditto.
-
- * io.c (rb_io_wait_readable, rb_io_wait_writable, rb_f_select): ditto.
-
- * ext/io/wait/wait.c (io_wait): ditto.
-
- * ext/socket/socket.c (wait_connectable, unix_recv_io): ditto.
-
Fri Jun 3 14:06:12 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: fix typo.
-Thu Jun 2 23:42:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y: pragma support on ripper. [ruby-dev:26266]
-
-Thu Jun 2 00:02:16 2005 Minero Aoki <aamine@loveruby.net>
-
- * struct.c: accessing >10 member caused segmentation fault.
- [ruby-dev:26247]
-
- * test/ruby/test_struct.rb: test it.
-
-Wed Jun 1 11:30:09 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Jun 1 11:32:42 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* bcc32/Makefile.sub: can use single quote character in DESTDIR.
[ruby-dev:26205]
- * bcc32/Makefile.sub: Dir.glob in 1.9 doesn't treat \ as path separator.
- [ruby-dev:26254]
-
-Wed Jun 1 00:11:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (method_call): new experiment: "(expr)(args...)" to
- invoke "expr.call(args...)". [EXPERIMENTAL]
-
-Tue May 31 23:43:41 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (command): revert implicit "call" for local variables.
-
-Tue May 31 15:52:45 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should
- break the loop if the socket reached to EOF. [ruby-talk:142285]
-
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): send response
- without reading the whole request body if keep-alive is diabled.
- [experimental]
-
Mon May 30 23:48:29 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/macpkg.rb: add PACKAGE_NAME information of Tcl/Tk
@@ -9270,12 +5553,12 @@ Mon May 30 23:48:29 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib/*: ditto.
-Sat May 28 16:39:21 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Sat May 28 16:40:15 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* test/openssl/test_x509store.rb: add test for expired CRL
and refine some assertions.
-Sat May 28 05:15:44 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Sat May 28 05:15:51 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_x509store.c (ossl_x509stctx_set_time): should
not set internal flag directry.
@@ -9291,41 +5574,22 @@ Fri May 27 16:32:04 2005 WATANABE Hirofumi <eban@ruby-lang.org>
* lib/mkmf.rb: use the semicolon as the path separator
in the environment of MSYS. fixed: [ruby-dev:26232]
-Thu May 26 20:31:21 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (remove_entry_secure): add documentation.
-
- * lib/fileutils.rb (remove_entry_secure): should not invoke
- unlink(2) against a directory.
-
-Thu May 26 08:29:19 2005 Akiyoshi, Masamichi <akiyoshi@hp.com>
-
- * vms/vmsruby_private.c, vms/vmsruby_private.h: private routines
- for VMS port are added.
-
- * eval.c (ruby_init): change to call VMS private intialization routine.
-
-Thu May 26 07:39:07 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (rm_r): use lchown(2), not chown(2).
- [ruby-dev:26226]
-
- * lib/fileutils.rb (cd): remove :noop option. (feature change)
+Thu May 26 06:08:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * lib/fileutils.rb (cp_r): should copy symlink as symlink, for
- also tree root. (feature change)
+ * ext/tk/lib/tk.rb: add shortcut-methods of tk_call + tk_split_list
- * lib/fileutils.rb (cp_r): new option :dereference_root.
+Wed May 25 22:52:42 2005 Shugo Maeda <shugo@ruby-lang.org>
- * lib/fileutils.rb: new method remove_entry.
+ * lib/irb/input-method.rb: do not use Readline::HISTORY.pop.
+ (backported from HEAD)
- * lib/fileutils.rb: new method remove_entry_secure.
+Wed May 25 21:55:40 2005 Shugo Maeda <shugo@ruby-lang.org>
- * lib/fileutils.rb: add documentation.
+ * ext/readline/readline.c: supported libedit. (backported from HEAD)
-Thu May 26 06:08:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+ * ext/readline/extconf.rb: ditto.
- * ext/tk/lib/tk.rb: add shortcut-methods of tk_call + tk_split_list
+ * test/readline/test_readline.rb: ditto.
Wed May 25 20:06:27 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -9367,10 +5631,6 @@ Wed May 25 20:06:27 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb: ditto.
-Wed May 25 19:48:12 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (rm_r): does chown(2). [ruby-dev:26199]
-
Wed May 25 12:59:48 2005 Tanaka Akira <akr@m17n.org>
* lib/open-uri.rb (OpenURI::Meta::RE_QUOTED_STRING): a content of
@@ -9386,17 +5646,17 @@ Tue May 24 16:57:24 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* ruby.c (require_libraries): caused SEGV when continuation jumped
in to the required library code.
-Tue May 24 17:45:59 2005 Shugo Maeda <shugo@ruby-lang.org>
+Tue May 24 11:56:25 2005 WATANABE Hirofumi <eban@ruby-lang.org>
- * test/readline/test_readline.rb: do not test libedit.
- fixed: [ruby-dev:26217]
+ * lib/getopts.rb: should warn only if verbose mode.
+ fixed: [ruby-dev:26201]
Tue May 24 06:45:31 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): string
literals to be matched non-greedy.
-Tue May 24 00:39:14 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Tue May 24 00:34:32 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/soap/calc: method name 'set' was able to crash with a class Set.
[ruby-dev:26210]
@@ -9404,16 +5664,11 @@ Tue May 24 00:39:14 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/wsdl/document/test_rpc.rb: dateTime comparison failed under
TZ=right/Asia/Tokyo (with leap second.) [ruby-dev:26208]
-Mon May 23 16:23:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Mon May 23 16:24:05 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/extconf.rb: Framework support on MacOS X Tiger.
+ * ext/tcltklib/extconf.rb: Framework support on MacOS X Tiger.
- * ext/tk/README.tcltklib: add description of Framework support options.
-
-Mon May 23 15:07:34 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub ($(PROGRAM)): add dependency on $(LIBRUBY_SO).
- [experimental]
+ * ext/tcltklib/README.1st: add description of Framework support options.
Mon May 23 12:21:37 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -9506,79 +5761,41 @@ Sun May 22 19:11:35 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_ssl.c (ossl_sslctx_setup): add session id support.
-Sun May 22 12:30:58 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * intern.h, parse.y (ruby_pragma): removed. fixed: [ruby-dev:26198]
-
- * parse.y (parser_pragma): pragma name was ignored.
-
-Sun May 22 02:39:57 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (rm_r): new option :secure to avoid
- time-to-check-to-time-to-use security problem. [ruby-dev:26100]
-
- * lib/fileutils.rb (remove_file, remove_dir): try chmod(700) only
- on Windows.
-
- * lib/fileutils.rb: does not depend on find.rb.
-
- * lib/fileutils.rb: new method chmod_R.
-
- * lib/fileutils.rb (chown_R): did not work.
-
-Sat May 21 10:23:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sat May 21 10:24:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* bcc32/Makefile.sub: tds files were not deleted when DESTDIR
included '\' path delimiter. [ruby-dev:26193]
-Fri May 20 15:52:18 2005 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/readline/readline.c (readline_attempted_completion_function):
- return 2 items if completion_proc returns only 1 item (for libedit).
-
-Fri May 20 01:24:33 2005 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/readline/extconf.rb: check rl_vi_editing_mode() and
- rl_emacs_editing_mode().
-
-Thu May 19 23:33:09 2005 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/readline/readline.c: supported libedit. fixed: [ruby-core:4858]
+Thu May 19 19:04:29 2005 speakillof <speakillof@yahoo.co.jp>
- * ext/readline/extconf.rb: added new option --enable-libedit.
-
- * test/readline/test_readline.rb: added assertions for
- Readline::HISTORY.
-
- * lib/irb/input-method.rb: do not use Readline::HISTORY.pop.
+ * lib/rexml/encodings/SHIFT-JIS.rb: encoding and decoding were
+ swapped. [ruby-core:4772]
Wed May 18 23:42:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* error.c (exc_exception): reverted to call Exception#initialize
directly. fixed: [ruby-dev:26177]
-Wed May 18 17:38:51 2005 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * dir.c (glob_helper): check whether path is "" before calling
- do_opendir. [ruby-dev:26183]
-
-Wed May 18 13:40:48 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (NtInitialize): fix typo.
-
-Wed May 18 11:07:47 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 18 23:39:09 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* dir.c (glob_helper): get rid of using String. [ruby-dev:26180]
+ * dir.c (push_braces): should skip balanced braces.
+
* eval.c (ruby_options), win32/win32.c (NtInitialize): move argument
intialization back. [ruby-dev:26180]
-Tue May 17 11:49:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue May 17 15:31:31 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should
+ break the loop if the socket reached to EOF. [ruby-talk:142285]
+
+Tue May 17 11:52:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (unixtime_to_filetime): use localtime() instead of
gmtime() when using FileLocalTimeToFileTime().
-Mon May 16 22:42:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon May 16 22:28:43 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* win32/win32.h, {bcc32,win32,wince}/Makefile.sub: moved rb_[ugp]id_t
to get rid of redefinition warnings on mingw.
@@ -9586,12 +5803,7 @@ Mon May 16 22:42:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* class.c (rb_class_init_copy): singleton class is disallowed to copy,
from its definition. fixed: [ruby-talk:142749]
- * parse.y (pragma_encoding): add prototype to suppress false warning
- by VC.
-
- * process.c (proc_spawn_v): use rb_w32_aspawn on Win32.
-
-Mon May 16 03:29:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon May 16 08:52:29 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.{h,c}: define rb_[pgu]id_t.
@@ -9601,7 +5813,7 @@ Mon May 16 00:21:02 2005 Tanaka Akira <akr@m17n.org>
Errno::EISDIR because EISDIR is not portable.
[ruby-core:5001]
-Sun May 15 22:28:10 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sun May 15 22:11:33 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb (DRbObject#method_missing): use raise(exception).
[ruby-dev:26164]
@@ -9626,7 +5838,7 @@ Sat May 14 23:59:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* error.c (exc_exception, {exit,name_err,syserr}_initialize): call
Execption#initialize. fixed: [ruby-talk:142593]
-Sat May 14 23:56:41 2005 Erik Huelsmann <ehuels@gmail.com>
+Sat May 14 23:57:26 2005 Erik Huelsmann <ehuels@gmail.com>
* configure.in: Check for the availability of pid_t, gid_t and uid_t and
remove AC_TYPE_UID_T. fixed: [ruby-core:04745]
@@ -9651,16 +5863,6 @@ Sat May 14 23:56:41 2005 Erik Huelsmann <ehuels@gmail.com>
* wince/sys/types.h: Remove definitions of {p,g,u}id_t.
-Sat May 14 11:47:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * intern.h (ruby_pragma): prototype. [ruby-core:04881]
-
- * parse.y (parser_pragma): parse Emacsen hack.
-
- * parse.y (parser_prepare): deal with specific syntax at the top.
-
- * ruby.c (load_file): read the first line iff it started with shebang.
-
Fri May 13 23:44:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb: keep srcdir unexpanded.
@@ -9672,45 +5874,87 @@ Fri May 13 23:44:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
also INSTALL_PROG and INSTALL_DATA system dependent.
fixed: [ruby-core:04931]
-Fri May 13 23:32:55 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (unknown_node): add volatile directive to prototype.
-
-Fri May 13 17:50:49 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri May 13 17:54:39 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* variable.c (generic_ivar_get): rb_attr_get should not warn.
[ruby-dev:26010]
-Thu May 12 17:41:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+Fri May 13 12:28:43 2005 Daniel Berger <djberge@qwest.com>
- * ext/nkf/nkf-utf8/nkf.c: follow nkf 2.0.5
+ * array.c (rb_ary_select): can remove argc check. [ruby-core:4911]
-Thu May 12 16:50:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * test/ruby/test_array.rb: add test for find_all.
+
+Fri May 13 11:29:00 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * eval.c (unknown_node): add volatile directive to prototype.
+
+Thu May 12 17:08:48 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_eof, remain_size, read_all, io_read, appendline)
+ (swallow, rb_io_each_byte, rb_io_getc): revert previous change.
+
+ * io.c (rb_io_eof, io_fread, appendline, swallow, rb_io_each_byte)
+ (rb_io_getc, rb_getc): call clearerr before getc to avoid
+ stdio incompatibility.
+
+Thu May 12 16:52:20 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/rdoc/parsers/parse_c.rb: more readability for mixing
progress "c..." and warning message.
-Thu May 12 15:50:56 2005 Tilman Sauerbeck <tilman@code-monkey.de>
+Thu May 12 16:31:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf-utf8/nkf.c: follow nkf 2.0.5
+
+Thu May 12 16:15:01 2005 Tanaka Akira <akr@m17n.org>
+
+ * io.c (rb_io_eof, remain_size, read_all, io_read, appendline)
+ (swallow, rb_io_each_byte, rb_io_getc): don't rely EOF flag.
+ [ruby-talk:141527]
+
+Thu May 12 15:56:20 2005 Tilman Sauerbeck <tilman@code-monkey.de>
* lib/rdoc/parsers/parse_c.rb: show parsing progress for C files.
[ruby-core:4341]
+Thu May 12 13:47:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/drb/test_drb{ssl,unix}.rb: can test drb
+ before install. (backported from HEAD) [ruby-dev:26146]
+
Thu May 12 09:53:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* version.c (ruby_show_version): flush for non-tty stdout.
+Thu May 12 09:07:07 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/ruby/envutil.rb, test/drb/drbtest.rb: can test drb
+ before install. (backported from HEAD) [ruby-Bugs-1672]
+
Thu May 12 01:23:55 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (rb_eval), parse.y (arg): reduce fixnum range literal at
+ parser. fixed: [ruby-dev:26113]
+
* eval.c (unknown_node): ignore broken NODE to get rid of accessing
possibly inaccessible address. fixed: [ruby-dev:26122]
should emit more useful information like [ruby-dev:26126], though.
+Wed May 11 16:20:01 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/cgi.rb: new methods WEBrick::CGI#[], WEBrick::CGI#logger
+ and WEBrick::CGI#config. (backported from HEAD)
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.escape_path): should
+ not use String#split("/"). (backported from HEAD)
+
Wed May 11 15:58:39 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (break_jump): break should not cross functions.
[ruby-list:40818]
-Wed May 11 10:41:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed May 11 10:39:37 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/tempfile.rb (Tempfile#unlink): fixed typo.
@@ -9723,12 +5967,7 @@ Sun May 8 23:17:47 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/timer.rb: fix typo.
-Sun May 8 21:00:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * hash.c (Init_Hash): remove custom "hash" and "eql?".
- (ported from 1.8) [ruby-dev:26132]
-
-Sun May 8 16:50:25 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sun May 8 16:52:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/profiler.rb: fixed "undefined method `[]' for nil:NilClass"
[ruby-core:4775] [ruby-talk:140401] [ruby-dev:26118]
@@ -9737,54 +5976,11 @@ Sat May 7 22:58:00 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (have_var): no libs argument is given.
-Fri May 6 08:08:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c:rb_hash_hash_i() should be static. [ruby-core:04815]
-
- * re.c should include regint.h for declarations of oniguruma
- functions. [ruby-core:04815]
-
-Sun May 1 09:15:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 1 09:58:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ruby.c (process_sflag): replace '-' in variable names with '_'.
[ruby-dev:26107]
- * eval.c (rb_eval), parse.y (arg): reduce fixnum range literal at
- parser. fixed: [ruby-dev:26113]
-
-Sat Apr 30 11:59:25 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (RUBY_FUNC_ATTRIBUTE): check for function attribute.
- [ruby-dev:26109]
-
- * eval.c, gc.c: moved noinline to configure.in.
-
- * rubyio.h (DEPRECATED): moved to configure.in.
-
- * ruby.h (DEPRECATED, NOINLINE): default definition.
-
- * win{32,ce}/Makefile.sub (config.h): deprecated and noinline for
- __declspec() are available for VC++7 or later.
-
-Sat Apr 30 06:57:39 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/cgi.rb: new methods WEBrick::CGI#[], WEBrick::CGI#logger
- and WEBrick::CGI#config. these are necessary to use an instance of
- WEBrick::CGI as the first argument of HTTPServlet#get_instance.
- (suggested by Tatsuki Sugiura)
-
- * lib/webrick/cgi.rb
- (WEBrick::CGI#initalize): set a dummy to @config[:ServerSoftware]
- if SERVER_SOFTWARE environment variable is not given.
- (WEBrick::CGI#start): req.path_info must be a String.
- (WEBrick::CGI::Socket#request_line): treat REQUEST_METHOD, PATH_INFO
- and SCRIPT_NAME to run in console.
-
- * lib/webrick/httputils.rb (WEBrick::HTTPUtils.escape_path): should
- not use String#split("/"). it removes trailing empty path component.
-
-Thu Apr 28 08:21:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
* ruby.c (set_arg0): use also environment variable space for setting
$0. [ruby-core:04774]
@@ -9795,46 +5991,23 @@ Wed Apr 27 23:42:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
Tue Apr 26 22:58:00 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c (ip_invoke_core): call Tcl's "::unknown"
+ * ext/tcltklib/tcltklib.c (ip_invoke_core): call Tcl's "::unknown"
command when can't get information of target command.
-Mon Apr 25 13:54:55 2005 speakillof <speakillof@yahoo.co.jp>
-
- * lib/rexml/encodings/SHIFT-JIS.rb: encoding and decoding were
- swapped. [ruby-core:4772]
-
Mon Apr 25 01:18:43 2005 Tanaka Akira <akr@m17n.org>
- * oniguruma.h (OnigWarnFunc): add a variadic argument.
- [ruby-core:4751]
+ * regex.c: declare rb_warn to have variadic argument. [ruby-core:4751]
-Sat Apr 23 19:49:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sat Apr 23 19:45:59 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/tk/tcltklib.c (ip_RubyExitCommand): exit with status code
+ * ext/tcltklib/tcltklib.c (ip_RubyExitCommand): exit with status code
via TclTkIp#_eval didn't work. [ruby-talk:139390]
-Sat Apr 23 11:45:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_provided): should check also path name to be loaded.
- fixed: [ruby-dev:26093]
-
-Fri Apr 22 16:55:35 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Apr 22 16:41:50 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/tk/tcltklib.c (ip_set_exc_message): fixed memory leak.
+ * ext/tcltklib/tcltklib.c (ip_set_exc_message): fixed memory leak.
- * ext/tk/tcltklib.c: eTkCallbackReturn was not initialized.
-
-Thu Apr 21 06:45:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (ruby_incpush_expand, proc_options): expand relative path
- given with -I option. [ruby-dev:26090]
-
- * configure.in, lib/mkmf.rb, {bcc32,win32,wince}/Makefile.sub: improve
- C++ support. [ruby-dev:26089]
-
-Thu Apr 21 01:53:09 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: add rdoc.
+ * ext/tcltklib/tcltklib.c: eTkCallbackReturn was not initialized.
Thu Apr 21 00:07:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -9848,7 +6021,7 @@ Thu Apr 21 00:07:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
Wed Apr 20 23:22:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * Makefile.in, common.mk: miniruby depends on MINIOBJS.
+ * Makefile.in, common.mk: miniruby depens on MINIOBJS.
* dmydln.c (dln_load): dummy function to raise LoadError.
@@ -9859,21 +6032,6 @@ Wed Apr 20 23:01:35 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* win32/ifchange.bat: delete testing files.
-Wed Apr 20 22:54:54 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: new method Net::HTTP.post_form.
-
- * lib/net/http.rb: new method Net::HTTPHeader#set_form_data and
- its alias #form_data=.
-
- * lib/net/http.rb: Net::HTTPHeader#add_header -> add_field
- (adjustted to Ruby 1.8).
-
-Wed Apr 20 10:53:30 2005 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * lib/rdoc/parsers/parse_rb.rb (lex_init): use IRB module.
- [ruby-core:04737]
-
Wed Apr 20 07:27:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* {bcc32,win32,wince}/configure.bat, {bcc32,win32,wince}/setup.mak:
@@ -9881,33 +6039,18 @@ Wed Apr 20 07:27:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* bcc32/setup.mak: make configuration variables overridable.
-Tue Apr 19 23:37:09 2005 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * lib/ftools.rb (File.safe_unlink): do not modify a symlinked file.
+Wed Apr 20 04:15:27 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
-Tue Apr 19 23:02:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/irb.rb lib/irb/* doc/irb: IRB 0.9.5
- * eval.c (search_required): deal with features with path too.
-
- * intern.h (rb_file_expand_path): prototype. fixed: [ruby-dev:26082]
-
-Tue Apr 19 08:38:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Apr 19 23:37:09 2005 WATANABE Hirofumi <eban@ruby-lang.org>
- * eval.c (search_required, rb_require_safe): expand path in
- rb_features. [ruby-dev:26079]
+ * lib/ftools.rb (File.safe_unlink): do not modify a symlinked file.
- * file.c (rb_find_file_ext): return absolute path.
+Tue Apr 19 00:06:20 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb: expand path for ext/**/extconf.rb.
- * eval.c (search_required): handle static linked extensions.
-
-Mon Apr 18 15:37:35 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_attr): attribute name check added.
-
- * numeric.c (flo_plus): small typo fix.
-
Mon Apr 18 11:25:14 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/zlib/zlib.c (zstream_run): fixed SEGV. [ruby-core:4712]
@@ -9934,7 +6077,7 @@ Sat Apr 16 15:27:03 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* mkconfig.rb: purge autoconf value variables.
-Sat Apr 16 10:33:48 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sat Apr 16 10:36:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* bcc32/Makefile.sub: quick hack... prepend DESTDIR.
still have restriction on DESTDIR ("", "/", "e:")
@@ -9945,54 +6088,18 @@ Sat Apr 16 03:59:42 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/openssl_missing.h: ditto.
-Fri Apr 15 22:40:19 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/tests/testWIN32OLE.rb: add test for WIN32OLE.codepage=
-
- * ext/win32ole/tests/testOLETYPELIB.rb: correct expected message.
-
-Fri Apr 15 22:04:07 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c(ole_invoke): retry after converting Qnil
- to VT_EMPTY.
-
-Thu Apr 14 19:05:06 2005 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper] (regexp): dispatch regexp option.
- [ruby-Bugs:1688]
-
- * ext/ripper/lib/core.rb: regenerated (interface changed).
-
-Thu Apr 14 18:59:43 2005 Minero Aoki <aamine@loveruby.net>
+Thu Apr 14 19:18:30 2005 Minero Aoki <aamine@loveruby.net>
* lib/fileutils.rb (remove_file): ignore exceptions caused by
chmod.
* lib/fileutils.rb (remove_dir): try to get rights to rmdir.
- [ruby-Bugs:1502]
-
-Thu Apr 14 18:51:02 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
+ [ruby-Bugs:1502] (2 items backportted from HEAD, rev 1.53-54)
- * lib/irb/ruby-lex.rb, lib/irb/slex.rb: bug fix of [ruby-Bugs-1745]
+Thu Apr 14 16:57:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/irb/ext/loader.rb, lib/irb/ext/save-history.rb:
- fix location of @RCS_ID
-
- * lib/irb/cmd/help.rb: a lost of release IRB 0.9.5.
-
-Thu Apr 14 15:10:30 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
-
- * lib/irb/notifier.rb, lib/irb/output-method.rb, lib/irb/ext/history.rb
- fixed warning of 'ruby -w'
-
-Thu Apr 14 05:35:45 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
-
- * doc/irb/irb.rd.ja: a lost of release IRB 0.9.5.
-
- * lib/irb/slex.rb: bug fix by [ruby-core:04707].
-
-Thu Apr 14 00:20:31 2005 Keiju Ishitsuka <keiju@ruby-lang.org>
- * bin/irb lib/irb.rb lib/irb/...: IRB 0.9.5.
+ * bcc32/Makefile.sub: failed to remove debug information files.
+ fixed: [ruby-dev:26034]
Wed Apr 13 23:40:21 2005 Kouhei Sutou <kou@cozmixng.org>
@@ -10001,44 +6108,33 @@ Wed Apr 13 23:40:21 2005 Kouhei Sutou <kou@cozmixng.org>
* lib/rss/rss.rb (RSS::Element#converter): fixed converter
transmission bug.
-Wed Apr 13 22:12:16 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser#order!): call handlers iff matches
- non-switch.
-
Wed Apr 13 21:20:35 2005 WATANABE Hirofumi <eban@ruby-lang.org>
* configure.in (mingw32): extract msvcr*.dll from objdump result.
-Wed Apr 13 19:25:31 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Apr 13 20:24:30 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (mingw32): use actual runtime DLL name as ruby DLL
name and default load path.
* win32/Makefile.sub, win32/setup.mak: ditto.
-Tue Apr 12 19:30:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser#make_switch, OptionParser#order!):
- added non-option and end-of-args handler. [ruby-talk:136878]
- [EXPERIMENTAL]
-
Tue Apr 12 15:33:09 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c (ip_finalize): better modification than the
+ * ext/tcltklib/tcltklib.c (ip_finalize): better modification than the
previous commit [ruby-dev:26029].
Tue Apr 12 12:38:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c (ip_finalize): fix SEGV when Tcl_GlobalEval()
+ * ext/tcltklib/tcltklib.c (ip_finalize): fix SEGV when Tcl_GlobalEval()
modifies the argument string to eval.
Tue Apr 12 02:21:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c (ip_finalize): add existence check of
+ * ext/tcltklib/tcltklib.c (ip_finalize): add existence check of
Tcl commands before calling Tcl_GlobalEval().
-Mon Apr 11 23:36:04 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Mon Apr 11 23:47:21 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb: [druby-ja:123] fix: When reference of my object is
loaded, the object is tainted.
@@ -10051,13 +6147,28 @@ Mon Apr 11 22:18:23 2005 WATANABE Hirofumi <eban@ruby-lang.org>
Mon Apr 11 20:11:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c (ip_finalize): adhoc patch to avoid SEGV when exit
- on Tcl/Tk8.3.x.
+ * ext/tcltklib/tcltklib.c (ip_finalize): adhoc patch to avoid SEGV
+ when exit on Tcl/Tk8.3.x.
-Mon Apr 11 15:24:20 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Apr 11 15:26:25 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* lib/mkmf.rb (configuration): shouldn't output hdrdir twice.
+Mon Apr 11 12:09:05 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * {bcc32,win32,wince}/Makefile.sub: ri data was not installed
+ into correct path. [ruby-dev:26011]
+
+ * bcc32/Makefile.sub: defaulted install-nodoc. [ruby-dev:26011]
+
+Sun Apr 10 10:12:42 2005 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+
+ * ext/win32ole/win32ole.c(ole_invoke): retry after converting Qnil
+ to VT_EMPTY.
+
+ * ext/win32ole/win32ole/tests/testWIN32OLE.rb: correct error
+ message string "Unknown" => "unknown".
+
Sat Apr 9 18:20:31 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/image.rb: support to create TkImage object without
@@ -10077,41 +6188,75 @@ Sat Apr 9 14:42:29 2005 Kouhei Sutou <kou@cozmixng.org>
* sample/rss/tdiary_plugin/rss-recent.rb: supported configuration
via Web browser.
-Fri Apr 8 20:17:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Apr 9 11:59:57 2005 Kouhei Sutou <kou@cozmixng.org>
- * ext/extmk.rb (extmake): hdrdir needs to be defined also in
- Config::CONFIG.
+ * lib/rss: backoported from HEAD.
- * lib/mkmf.rb (configuration, create_makefile): get rid of recursive
- macro reference.
+ * lib/rss: refactored.
+ - gave a name to 'x'.
+ - undef_method -> remove_method for avoiding a warning in ruby 1.6.
-Fri Apr 8 01:55:20 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/sample/demos-{en,jp}/goldberg.rb: reduced window size.
- [ruby-dev:25992]
+ * lib/rss/parser.rb: @@setter -> @@setters.
-Thu Apr 7 23:58:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rss/parser.rb
+ (RSS::BaseListener.register_uri)
+ (RSS::BaseListener.uri_registered?)
+ (RSS::BaseListener.install_get_text_element):
+ swapped the first argument and the second argument.
- * ext/extmk.rb (extmake): keep directory names in Makefile as macros.
+ * lib/rss/taxonomy.rb: swapped the first argument and the second
+ argument for RSS::BaseListener.install_get_text_element.
+ * lib/rss/image.rb: ditto.
+ * lib/rss/syndication.rb: ditto.
+ * lib/rss/dublincore.rb: ditto.
+ * lib/rss/parser.rb: ditto.
+ * lib/rss/1.0.rb: ditto.
+ * lib/rss/2.0.rb: ditto.
+ * lib/rss/0.9.rb: ditto.
+ * lib/rss/content.rb: ditto.
- * lib/mkmf.rb (configuration, create_makefile): ditto.
+ * lib/rss/parser.rb
+ (RSS::BaseListener.install_setter)
+ (RSS::BaseListener.register_uri): changed fallback way.
- * lib/mkmf.rb (CXX_EXT): separate C++ extensions.
+ * lib/rss/parser.rb: added class name registry for complex model
+ elements. (ex. have childlen elements, have some attributes and
+ a child element and so on.)
-Thu Apr 7 17:24:17 2005 Shugo Maeda <shugo@ruby-lang.org>
- * eval.c (rb_call0): "return" event hook should be always executed
- if event_hooks is set.
+ * lib/rss/dublincore.rb: supported multiple Dublin Core items.
+ * lib/rss/maker/dublincore.rb: ditto.
+
+ * lib/rss/maker/image.rb: supproted new Dublin Core API.
-Thu Apr 7 14:33:09 2005 Kouhei Sutou <kou@cozmixng.org>
- * test/rss/test_maker_dc.rb (test_date): added a test for #date=
- and #dc_date=.
+ * lib/rss/maker/base.rb: added default current_element implementation.
+
+
+ * lib/rss/trackback.rb (RSS::TrackBackUtils.new_with_value_if_need):
+ moved to RSS::Utils.
+
+ * lib/rss/utils.rb (RSS::Utils.new_with_value_if_need):
+ moved from RSS::TrackBackUtils.
+
+
+ * lib/rss/maker/image.rb: fixed invalid argument of
+ add_need_initialize_variable bug.
+ * lib/rss/maker/trackback.rb: ditto.
+
+
+ * lib/rss/rss.rb (Hash#merge): added for ruby 1.6.
+
+ * lib/rss/rss.rb (RSS::BaseModel.date_writer): changed to accept nil
+ for date value.
-Thu Apr 7 11:49:53 2005 Kouhei Sutou <kou@cozmixng.org>
- * lib/rss/maker/dublincore.rb: _really_ supported multiple Dublin
- Core items.
+ * test/test_dublincore.rb: added tests for plural accessor and
+ multiple Dublin Core items.
+
+ * test/test_setup_maker_1.0.rb: fixed swapped actual and expected
+ values.
* test/rss/rss-assertions.rb (assert_multiple_dublin_core): added
an assertion for testing multiple Dublin Core items.
@@ -10119,18 +6264,9 @@ Thu Apr 7 11:49:53 2005 Kouhei Sutou <kou@cozmixng.org>
* test/rss/test_maker_dc.rb (test_rss10_multiple): added a test
for making multiple Dublin Core items.
-Wed Apr 6 16:06:30 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * test/ruby/test_env.rb (test_key): should test ENV.key instead of
- ENV.index. [ruby-dev:25994]
-
-Tue Apr 5 16:01:12 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/*: refactored.
- - gave a name to 'x'.
- - undef_method -> remove_method for avoiding a warning in ruby 1.6.
+ * test/rss/test_maker_dc.rb (test_date): added a test for #date=
+ and #dc_date=.
-Tue Apr 5 15:45:33 2005 Kouhei Sutou <kou@cozmixng.org>
* sample/rss/tdiary_plugin/rss-recent.rb:
new option: @options['rss-recent.use-image-link']:
@@ -10139,46 +6275,54 @@ Tue Apr 5 15:45:33 2005 Kouhei Sutou <kou@cozmixng.org>
* sample/rss/tdiary_plugin/rss-recent.rb (RSS_RECENT_VERSION):
0.0.5 -> 0.0.6.
-Tue Apr 5 15:15:26 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/dublincore.rb: supported multiple Dublin Core items.
+Fri Apr 8 20:17:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rss/parser.rb: added class name registry for complex model
- elements. (ex. have childlen elements, have some attributes and
- a child element and so on.)
+ * ext/extmk.rb (extmake): hdrdir needs to be defined also in
+ Config::CONFIG.
- * lib/rss/maker/base.rb: added default current_element implementation.
+ * lib/mkmf.rb (configuration, create_makefile): get rid of recursive
+ macro reference.
- * lib/rss/maker/dublincore.rb: supported multiple Dublin Core
- items.
+Fri Apr 8 18:26:56 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * lib/rss/maker/image.rb: supproted new Dublin Core API.
+ * ext/openssl/ossl_ssl.c: add callbacks to OpenSSL::SSL::SSLContexts.
+ - SSLContext#client_cert_cb=(aProc). it is called when a client
+ certificate is requested by a server and no certificate was not
+ set for the SSLContext. it must return an Array which includes
+ OpenSSL::X509::Certificate and OpenSSL::PKey::RSA/DSA objects.
+ - SSLContext#tmp_dh_callback=(aProc). it is called in key
+ exchange with DH algorithm. it must return an OpenSSL::PKey::DH
+ object.
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_set_ciphers): ignore the
+ argument if it's nil.
- * lib/rss/trackback.rb (RSS::TrackBackUtils.new_with_value_if_need):
- moved to RSS::Utils.
+ * ext/openssl/ossl_pkey.c
+ (GetPrivPKeyPtr, ossl_pkey_sign): should call rb_funcall first.
+ (DupPrivPKeyPtr): new function.
- * lib/rss/utils.rb (RSS::Utils.new_with_value_if_need):
- moved from RSS::TrackBackUtils.
+ * ext/openssl/ossl_pkey_dh.c: add default DH parameters.
+ * ext/openssl/ossl_pkey.h: ditto.
- * lib/rss/maker/image.rb: fixed invalid argument of
- add_need_initialize_variable bug.
+Fri Apr 8 01:55:20 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * lib/rss/maker/trackback.rb: ditto.
+ * ext/tk/sample/demos-{en,jp}/goldberg.rb: reduced window size.
+ [ruby-dev:25992]
+Thu Apr 7 23:58:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rss/rss.rb (Hash#merge): added for ruby 1.6.
+ * ext/extmk.rb (extmake): keep directory names in Makefile as macros.
- * lib/rss/rss.rb (RSS::BaseModel.date_writer): changed to accept nil
- for date value.
+ * lib/mkmf.rb (configuration, create_makefile): ditto.
+ * lib/mkmf.rb (CXX_EXT): separate C++ extensions.
- * test/test_dublincore.rb: added tests for plural accessor and
- multiple Dublin Core items.
+Thu Apr 7 17:43:25 2005 Shugo Maeda <shugo@ruby-lang.org>
- * test/test_setup_maker_1.0.rb: fixed swapped actual and expected
- values.
+ * eval.c (rb_call0): "return" event hook should be always executed
+ if event_hooks is set. fixed: [ruby-core:04662]
+ (backported from HEAD)
Mon Apr 4 23:17:52 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -10193,6 +6337,11 @@ Mon Apr 4 10:26:48 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/tk/lib/tk/dialog.rb: fixed typo.
+Sun Apr 3 17:16:33 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.{h,c} (rb_w32_fdopen): avoid warning on bcc32.
+ (backported from HEAD)
+
Sat Apr 2 23:38:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (CP, INSTALL): get rid of less portable options.
@@ -10200,8 +6349,8 @@ Sat Apr 2 23:38:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (configuration, create_makefile): correct configuration
variable.
- * wince/configure.bat, wince/setup.mak: add prefix, extstatic and
- rdoc options.
+ * {bcc32,win32,wince}/{Makefile.sub,setup.mak}: leave prefix empty in
+ config.status for backward compatibility. fixed: [ruby-core:04649]
* lib/mkmf.rb (create_makefile): ensure library directories get made
before copying libraries there.
@@ -10220,11 +6369,6 @@ Sat Apr 2 16:59:46 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/autoload.rb: add autoload entry 'TkDialogObj' and
'TkWarningObj'
-Sat Apr 2 13:23:17 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * hash.c (env_key): ENV.index is deprecated as well as Hash#index.
- use ENV.key instead. [ruby-dev:25974]
-
Sat Apr 2 02:19:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb (TkWindow.initialize): accept 'without_creating'
@@ -10241,39 +6385,12 @@ Thu Mar 31 22:23:51 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* README.EXT, README.EXT.ja (Appendix C): utility functions.
-Thu Mar 31 14:08:43 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Thu Mar 31 14:15:44 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_engine.c (ossl_engine_s_load): should return
value. [ruby-dev:25971]
-Thu Mar 31 11:07:50 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/parser.rb: @@setter -> @@setters.
-
- * lib/rss/parser.rb
- (RSS::BaseListener.register_uri)
- (RSS::BaseListener.uri_registered?)
- (RSS::BaseListener.install_get_text_element):
- swapped the first argument and the second argument.
-
- * lib/rss/taxonomy.rb: swapped the first argument and the second
- argument for RSS::BaseListener.install_get_text_element.
- * lib/rss/image.rb: ditto.
- * lib/rss/syndication.rb: ditto.
- * lib/rss/dublincore.rb: ditto.
- * lib/rss/parser.rb: ditto.
- * lib/rss/1.0.rb: ditto.
- * lib/rss/2.0.rb: ditto.
- * lib/rss/0.9.rb: ditto.
- * lib/rss/content.rb: ditto.
-
-Thu Mar 31 11:00:36 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/parser.rb
- (RSS::BaseListener.install_setter)
- (RSS::BaseListener.register_uri): changed fallback way.
-
-Thu Mar 31 08:25:40 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Mar 31 08:25:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* common.mk (RUBYOPT): clear for the environment RubyGems installed.
@@ -10287,10 +6404,21 @@ Thu Mar 31 06:00:20 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
error even if the specified engine could not be loaded. (Dynamic
engines don't have fixed name to load.)
+Thu Mar 31 00:18:27 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/ifchange.bat, win32/rm.bat: backported from HEAD.
+
+Wed Mar 30 23:44:50 2005 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * Makefile.in, */Makefile.sub, */configure.bat,
+ cygwin/GNUmakefile.in, common.mk, configure.in, ext/extmk.rb,
+ lib/mkmf.rb, instruby.rb, runruby.rb: backport extout.
+ [ruby-dev:25963]
+
Wed Mar 30 17:41:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tcltklib.c: add TclTkIp#_create_console() method to create
- a Tcl/Tk's console window.
+ * ext/tcltklib/tcltklib.c: add TclTkIp#_create_console() method to
+ create a Tcl/Tk's console window.
* ext/tk/lib/multi-tk.rb: support TclTkIp#_create_console() method.
@@ -10304,12 +6432,12 @@ Wed Mar 30 17:41:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/tkextlib/**: ditto.
-Tue Mar 29 22:20:49 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Mar 29 22:11:56 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* test/rinda/test_rinda.rb: use DRbObject.new_with instead of reinit.
[ruby-dev:25961]
-Tue Mar 29 00:04:57 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Mon Mar 28 23:40:40 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb: move method DRbObject#reinit to DRbObject.new_with.
extract method DRbObject.prepare_backtrace. add DRb.regist_server,
@@ -10318,23 +6446,15 @@ Tue Mar 29 00:04:57 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/gw.rb: ditto.
-Mon Mar 28 20:53:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb (extract_makefile): nothing to be removed when no file
- was deleted.
+Mon Mar 28 20:43:34 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/extmk.rb (extmake): restore srcdir.
+ * ext/syck/rubyext.c: get rid of warnings caused by a bug of VC.
Mon Mar 28 08:39:49 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/iconv/iconv.c (iconv_create): Iconv::Failure requires 3
arguments. (pointed out by NaHi)
-Sun Mar 27 00:56:58 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (remove_file): ignore Errno::E* if force option
- is set. [ruby-dev:25944]
-
Sat Mar 26 22:51:33 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb (_callback_entry_class?): add for checking whether
@@ -10390,26 +6510,31 @@ Thu Mar 24 23:10:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (check_sizeof): refine logging messages.
-Wed Mar 23 19:08:10 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Thu Mar 24 03:57:48 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/utils.rb (WEBrick::Utils.create_listeners):
- should raise ArgumentError if no port is specified.
- even if the specified port is 0, all TCPServers should be
- initialized with the port given to the first one.
+ initialized with the port given to the first one.
* lib/webrick/server.rb (WEBrick::GenericServer#initialize): if :Port
parameter is 0, it should be updated with the port number which
- ectually listened.
-
-Wed Mar 23 16:12:40 2005 Shugo Maeda <shugo@ruby-lang.org>
+ actually listened.
- * parse.y (primary): fix lineno of rescue and ensure.
-
-Wed Mar 23 00:39:05 2005 Shugo Maeda <shugo@ruby-lang.org>
+Wed Mar 23 00:35:10 2005 Shugo Maeda <shugo@ruby-lang.org>
* test/ruby/test_settracefunc.rb (test_event): added tests for
"class" and "end" and "raise".
+Tue Mar 22 22:40:18 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_call0): check event_hooks instead of trace_func.
+
+Tue Mar 22 17:30:44 2005 Shugo Maeda <shugo@ruby-lang.org>
+
+ * eval.c (rb_add_event_hook): new function to add a hook function for
+ interpreter events. (backported form HEAD)
+
Sun Mar 20 22:51:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (mkmf_failed): check if Makefile is created without
@@ -10435,42 +6560,28 @@ Thu Mar 17 17:42:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* struct.c (inspect_struct): ditto.
-Wed Mar 16 23:39:13 2005 Shugo Maeda <shugo@ruby-lang.org>
-
- * test/ruby/test_settracefunc.rb: added test for c-return.
-
-Wed Mar 16 22:57:43 2005 Shugo Maeda <shugo@ruby-lang.org>
+Wed Mar 16 23:36:02 2005 Shugo Maeda <shugo@ruby-lang.org>
* eval.c (rb_call0): call_cfunc() should be protected.
- * eval.c (rb_add_event_hook): use K&R style.
-
- * eval.c (rb_remove_event_hook): ditto.
+ * test/ruby/test_settracefunc.rb: added test for c-return.
-Wed Mar 16 22:03:15 2005 Shugo Maeda <shugo@ruby-lang.org>
+Wed Mar 16 22:20:25 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * eval.c (rb_add_event_hook): new function to add a hook function for
- interpreter events.
+ * object.c (str_to_id): fixed typo.
Wed Mar 16 18:08:32 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_call0): reorganize "return" event post.
- * eval.c (return_jump): no need to post "return" event here.
-
Tue Mar 15 23:49:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/iconv/iconv.c (Init_iconv): InvalidEncoding also should include
Iconv::Failure.
-Tue Mar 15 23:12:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (recursive_check, recursive_push): more restrictive check.
- fixed: [ruby-dev:25916]
-
-Tue Mar 15 16:38:31 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Tue Mar 15 16:38:11 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/tkutil/tkutil.c (ary2list): give wrong arguments to hash2kv()
+ * ext/tk/tkutil.c (ary2list): give wrong arguments to hash2kv()
Mon Mar 14 19:39:33 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -10486,8 +6597,7 @@ Mon Mar 14 12:21:03 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
Mon Mar 14 08:14:56 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * object.c (str_to_id): raise ArgumentError for NUL containing
- strings.
+ * object.c (str_to_id): warn for NUL containing strings.
Mon Mar 14 00:13:49 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -10507,37 +6617,14 @@ Mon Mar 14 00:13:49 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/demos-jp/tcolor: ditto.
-Sun Mar 13 22:19:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (recursive_pop): raise TypeError instead of fatal error.
- fixed: [ruby-dev:25843]
-
-Sun Mar 13 10:09:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sun Mar 13 10:04:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* test/rinda/test_rinda.rb: remove test_gc. [ruby-dev:25871]
-Sun Mar 13 02:32:54 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): should get DH
- parameter from the current SSL object.
-
-Sun Mar 13 02:09:03 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_pkey_dh.c (ossl_create_dh): fix typo.
- patch from IWATSUKI Hiroyuki. [ruby-dev:25867]
+Thu Mar 10 19:12:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto.
- (ossl_call_tmp_dh_callback): ditto
-
-Fri Mar 11 03:24:59 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (primary): wrong var node was set for NODE_LAMBDA.
- [ruby-core:04555]
-
-Thu Mar 10 19:10:29 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/tcltklib.c (lib_eventloop_ensure): mis-delete a timer handler
- when exit from a recursive called eventloop
+ * ext/tcltklib/tcltklib.c (lib_eventloop_ensure): mis-delete a timer
+ handler when exit from a recursive called eventloop
* ext/tk/lib/tk/timer.rb: new TkRTTimer class, which can works for a
realtime operation
@@ -10558,48 +6645,18 @@ Thu Mar 10 08:10:11 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* re.c (make_regexp): need to free internal regexp structure when
compilation fails. [ruby-talk:133228]
-Thu Mar 10 01:08:20 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (bv_decl): remove initialize rule from block local
- variable declaration.
-
-Wed Mar 9 23:55:34 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/pp.rb (PP::PPMethods#guard_inspect_key): support
- __recursive_key__. [ruby-dev:25821]
-
-Wed Mar 9 19:42:21 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_ssl.c: OpenSSL::SSL::SSLContexts suports callbacks:
- - SSLContext#client_cert_cb is a Proc. it is called when a client
- certificate is requested by a server and no certificate was yet
- set for the SSLContext. it must return an Array which includes
- OpenSSL::X509::Certificate and OpenSSL::PKey::RSA/DSA objects.
- - SSLContext#tmp_dh_callback is called in key exchange with DH
- algorithm. it must return an OpenSSL::PKey::DH object.
-
- * ext/openssl/ossl_ssl.c:
- (ossl_sslctx_set_ciphers): ignore the argument if it's nil.
- (ossl_start_ssl, ossl_ssl_write): call rb_sys_fail if errno isn't 0.
- [ruby-dev:25831]
-
- * ext/openssl/ossl_pkey.c
- (GetPrivPKeyPtr, ossl_pkey_sign): should call rb_funcall first.
- (DupPrivPKeyPtr): new function.
-
- * ext/openssl/ossl_pkey_dh.c: add default DH parameters.
+Wed Mar 9 20:25:58 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * ext/openssl/ossl_pkey.h: ditto.
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl, ossl_ssl_write): call
+ rb_sys_fail if errno isn't 0. [ruby-dev:25831]
* ext/openssl/lib/openssl/cipher.rb: fix typo. [ruby-dev:24285]
-Wed Mar 9 18:09:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+Wed Mar 9 15:46:35 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * parse.y (gettable_gen): warns if VCALL name is used as
- out-of-scope block local variable. [EXPERIMENTAL]
-
- * parse.y (opt_bv_decl): add explicit block local variable
- declaration. raises error for name conflicts. [EXPERIMENTAL]
+ * lib/webrick/server.rb (WEBrick::GenericServer#start): should
+ restore @token if accept failure. suggested by Dominique Brezinski.
+ [ruby-core:04518]
Wed Mar 9 13:37:57 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -10612,10 +6669,9 @@ Tue Mar 8 18:16:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
sample supports to use a text widget as if it is a I/O stream (such
like as StringIO class).
-Tue Mar 8 13:39:25 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Mar 8 13:54:40 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/socket/mkconstants.rb: workaround for some of 4.4BSD-Lite
- derived OSs.
+ * ext/socket/socket.c: workaround for some of 4.4BSD-Lite derived OSs.
Tue Mar 8 12:36:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -10623,275 +6679,159 @@ Tue Mar 8 12:36:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
<sroberts@uniserve.com> for getsockopt and setsockopt is merged.
[ruby-doc:824]
-Tue Mar 8 10:48:53 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * eval.c (rb_exec_recursive): declaration should precede statements
- before C99.
-
-Tue Mar 8 10:05:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * error.c (errno_missing): Errno.const_missing to allow references
- to SyscallError exceptions not defined on the platform.
- [ruby-core:04522]
-
- * error.c (Init_syserr): Errno::NOERROR(0) for fallback exception.
-
-Tue Mar 8 01:19:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Mar 8 01:27:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
* ext/nkf/nkf-utf8/nkf.c: follow nkf 1.66
fixed: [ruby-dev:25828]
-Mon Mar 7 21:29:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/server.rb (WEBrick::GenericServer#start): should
- restore @token if accept failure. suggested by Dominique Brezinski.
- [ruby-core:04518]
+Mon Mar 7 21:35:02 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* sample/webrick/httpsd.rb: fix typo in comment. suggested by
Kazuhiko Shiozaki.
-Mon Mar 7 21:01:37 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_require_safe): get actual path string under safe level
- when requested. fixed: [ruby-dev:25815]
-
-Mon Mar 7 16:46:02 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/openssl/ossl_ssl.c (ossl_start_ssl, ossl_ssl_read,
- ossl_ssl_write): need to set errno on Win32 platform.
-
Mon Mar 7 14:55:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (block_pass): should not push unique number if a block is
not an orphan. [ruby-dev:25808]
-Mon Mar 7 14:13:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/lib/openssl/buffering.rb (Buffering#initialize):
- should set @eof and @rbuffer.
-
-Mon Mar 7 10:28:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (inspect_obj): unintended space removal.
- [ruby-dev:25810]
-
- * eval.c (rb_exec_recursive): should not use NODE in disclosed
- context. [ruby-dev:25812]
-
- * io.c (rb_f_open): need not to check if to_open value is a
- T_FILE. [ruby-dev:25812]
-
-Mon Mar 7 01:21:01 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/tkutil/tkutil.c: follow the change of st.c (committed
- at Fri, 4 Mar 2005 15:47:47 +0900 by matz)
-
-Mon Mar 7 00:01:55 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/tcltklib.c: fail to call TclTkLib.mainloop when $SAFE==4
-
-Sun Mar 6 13:04:10 2005 Dee Zsombor <zsombor@ruby-lang.org>
-
- * misc/ruby-electric.el: added.
- * misc/Readme: updated.
-
-Sun Mar 6 11:47:10 2005 Sam Roberts <sroberts@uniserve.com>
-
- * lib/pp.rb: rdoced. [ruby-core:4490]
-
-Sun Mar 6 11:36:37 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/pp.rb (File::Stat#pretty_print): Etc.getpwuid and Etc.getgrgid
- may return nil. [ruby-talk:129826]
- reported by Daniel Berger.
-
-Sun Mar 6 06:34:31 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Wed Feb 16 02:55:21 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * ext/openssl/ossl_ssl.c (ossl_start_ssl): should wait for that
- the underlying IO become readable or writable if the error was
- SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. [ruby-dev:25795]
-
- * ext/openssl/ossl_ssl.c (ossl_ssl_read, ossl_ssl_write): ditto.
+ * ext/openssl/ossl_ssl.c (ossl_start_ssl, ossl_ssl_read,
+ ossl_ssl_write):
+ - need to set errno on Win32 platform.
+ - should call rb_sys_fail instead of rasing SSLError if
+ SSL_ERROR_SYSCALL occured.
+ - should wait for that the underlying IO become readable or
+ writable if the error was SSL_ERROR_WANT_READ or
+ SSL_ERROR_WANT_WRITE. [ruby-dev:25795]
* ext/openssl/lib/openssl/buffering.rb
+ (Buffering#initialize): should set @eof and @rbuffer.
+ (Buffering#fill_rbuff): should rescue Errno::EAGAIN.
(Buffering#consume_rbuf): pointless eof flag resetting is deleted.
(Buffering#read): should return an empty string if the specified
size is zero.
(Buffering#readpartial): new method.
(Buffering#readline): fix typo.
(Buffering#getc): return the first character of string correctly.
+ (Buffering#each): fix typo. suggested by Brian Ollenberger.
(Buffering#readchar): fix typo.
(Buffering#eof?): should read again it the input buffer is empty.
(Buffering#do_write): should rescue Errno::EAGAIN.
(Buffering#puts): use "\n" as the output field separator.
+ * ext/openssl/lib/openssl/ssl.rb: set non-blocking flag to the
+ underlying IO.
+
* ext/openssl/extconf.rb: get rid of GNUmakefile generation.
* text/openssl/test_pair.rb: test for IO like methods.
* test/ruby/ut_eof.rb: test about empty file.
-Sat Mar 5 17:48:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (rb_glob): fixed mismatch of argument.
-
- * dir.c (fnmatch): removed unnecessary code. (by string.c 1.219)
-
- * win32/win32.c (NtInitialize): ditto. (by numeric.c 1.117)
-
-Sat Mar 5 16:50:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.65
-
-Sat Mar 5 16:29:26 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/multi-tk.rb: freeze callback-entry objects
+Mon Mar 7 10:22:06 2005 WATANABE Hirofumi <eban@ruby-lang.org>
- * ext/tk/lib/tkextlib/tile.rb: support tile-0.6
+ * lib/un.rb: should use OptionParser. (backported form HEAD)
-Sat Mar 5 12:52:08 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Mar 7 09:18:42 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * lib/mkmf.rb (create_makefile): allow putting spaces between target
- and colon in depend file.
+ * string.c (rb_str_cmp_m): should not return false but nil.
+ fixed: [ruby-dev:25811]
-Sat Mar 5 02:41:00 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Mar 7 01:22:14 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * file.c (eaccess): workaround for VC++8 runtime.
+ * ext/tk/tkutil.c: remove the some codes which depend on the
+ difference between Ruby1.8 and 1.9, because st.c on Ruby1.9
+ was changed.
- * win32/win32.c (ioinfo): VC++8 support.
+Mon Mar 7 00:01:04 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-Fri Mar 4 19:39:55 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/tcltklib/tcltklib.c: fail to call TclTkLib.mainloop when $SAFE==4
- * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#do_includes): replace
- also locally defined modules.
-
- * ext/iconv/iconv.c: rdocified.
-
- * ext/strscan/strscan.c: moved misplaced rdoc.
+Sun Mar 6 16:41:33 2005 Minero Aoki <aamine@loveruby.net>
-Fri Mar 4 16:11:20 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/net/http.rb: HTTPHeader holds its header fields as an array
+ (backport from CVS HEAD rev 1.112-1.123). [ruby-list:40629]
- * eval.c (rb_exec_recursive): matched the declaration to prototype.
+ * test/net/http/test_httpheader.rb: new file.
- * ext/curses/curses.c: don't need to check HAVE_WCOLOR_SET excluding
- window_color_set().
+Sun Mar 6 11:47:10 2005 Sam Roberts <sroberts@uniserve.com>
- * ext/tk/tcltklib.c: fixed commit mistakes.
+ * lib/pp.rb: rdoced. [ruby-core:4490]
-Fri Mar 4 12:45:17 2005 Tilman Sauerbeck <tilman@code-monkey.de>
+Sun Mar 6 11:36:37 2005 Tanaka Akira <akr@m17n.org>
- * lib/rdoc/parsers/parse_c.rb: allow whitespace after function names.
- [ruby-core:4296]
+ * lib/pp.rb (File::Stat#pretty_print): Etc.getpwuid and Etc.getgrgid
+ may return nil. [ruby-talk:129826]
+ reported by Daniel Berger.
- * lib/rdoc/parsers/parse_simple.rb: adds support for private comments
- in the "simple" parser. [ruby-core:4301]
+Sat Mar 5 18:06:21 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-Fri Mar 4 12:45:17 2005 Charles Mills <cmills@freeshell.org>
+ * dir.c (fnmatch): removed unnecessary code. (ruby_1_8 didn't have
+ String#clear, so [ruby-dev:24749] didn't affect it)
- * lib/rdoc/parsers/parse_c.rb: adds support for constants
- (rb_define_const), accessors (rb_define_attr), and makes a
- couple fixes. [ruby-core:4307]
+ * win32/win32.c (NtInitialize): ditto. (by numeric.c 1.101.2.14)
-Fri Mar 4 12:45:17 2005 Florian Gross <florgro@gmail.com>
+Sat Mar 5 16:29:26 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * lib/rdoc/parsers/parse_rb.rb: Logic for def Builtin.method() end
- [ruby-core:4302]
+ * ext/tk/lib/multi-tk.rb: freeze callback-entry objects
-Fri Mar 4 12:45:17 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * ext/tk/lib/tkextlib/tile.rb: support tile-0.6
- * array.c: replace rb_protect_inspect() and rb_inspecting_p() by
- rb_exec_recursive() in eval.c.
+Fri Mar 4 19:39:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (rb_exec_recursive): new function.
+ * lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser#do_includes): replace
+ also locally defined modules.
- * array.c (rb_ary_join): use rb_exec_recursive().
+ * ext/iconv/iconv.c: backport Iconv::InvalidEncoding from CVS HEAD.
- * array.c (rb_ary_inspect, rb_ary_hash): ditto.
+ * ext/strscan/strscan.c: moved misplaced rdoc.
- * file.c (rb_file_join): ditto.
+Fri Mar 4 15:58:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * hash.c (rb_hash_inspect, rb_hash_to_s, rb_hash_hash): ditto.
+ * lib/cgi-lib.rb: add deprecation warning. [ruby-dev:25499]
+ getopts.rb, parsearg.rb, importenv.rb as well.
- * io.c (rb_io_puts): ditto.
+Fri Mar 4 11:17:06 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * object.c (rb_obj_inspect): ditto
+ * ext/tcltklib/tcltklib.c (ip_rbUpdateCommand): get rid of
+ warnings with Tcl/Tk 8.3 or former (backport from CVS_HEAD).
- * struct.c (rb_struct_inspect): ditto.
+ * ext/tcltklib/tcltklib.c (ip_rb_threadUpdateCommand): ditto.
Fri Mar 4 10:15:30 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/set.rb (SortedSet::setup): a hack to shut up warning.
[ruby-talk:132866]
-Fri Mar 4 09:37:12 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * common.mk (install-nodoc, pre-install-doc, post-install-doc):
- fix some omissions.
-
-Fri Mar 4 08:09:12 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/time.rb (Time::strptime): add new function. inspired by
- [ruby-talk:132815].
-
- * lib/parsedate.rb (ParseDate::strptime): ditto.
-
Fri Mar 4 07:07:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
* ext/nkf/nkf-utf8/nkf.c: follow nkf 1.63
-Thu Mar 3 23:24:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Mar 3 23:49:00 2005 NARUSE, Yui <naruse@ruby-lang.org>
* ext/nkf/nkf-utf8/nkf.c: follow nkf 1.62
-Thu Mar 3 18:47:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * {bcc32,win32,wince}/Makefile.sub (config.h): check if affected
- when makefiles are modified.
-
- * {bcc32,win32,wince}/Makefile.sub (config.status): add variables
- for tests.
-
- * win32/ifchange.bat: try to update a file only if modified.
-
- * win32/resource.rb: more descriptions.
-
- * common.mk: add {pre,post}-install targets.
-
- * instruby.rb (install?): install particular part.
-
- * bcc32/Makefile.sub (post-install-ext): remove debug information
- files after installation.
-
- * ext/tk/tcltklib.c (ip_rbUpdateCommand, ip_rb_threadUpdateCommand):
- get rid of warnings with Tcl/Tk 8.3 or former.
-
Thu Mar 3 11:49:51 2005 Kouhei Sutou <kou@cozmixng.org>
* sample/rss/tdiary_plugin/rss-recent.rb: added site information.
-Wed Mar 2 19:53:44 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb (parse_args): return false if nothing matched.
-
-Wed Mar 2 17:15:08 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Wed Mar 2 19:53:07 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/tcltklib.c (lib_eventloop_core): fix typo
+ * ext/extmk.rb (parse_args): add DESTDIR only when not directed
+ already. fixed: [ruby-dev:25781]
-Wed Mar 2 16:59:50 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Wed Mar 2 17:14:18 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * eval.c (ruby_native_thread_kill): call pthread_kill() to send a
- signal to ruby's native thread
+ * ext/tcltklib/tcltklib.c (lib_eventloop_core): fix typo
- * ruby.h: add definition of ruby_native_thread_kill()
+Wed Mar 2 16:00:02 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * signal.c (sigsend_to_ruby_thread): send the signal to ruby's
- native thread ([ruby-dev:25744], [ruby-dev:25754]), and set
- signal mask to the current native thread
-
-Wed Mar 2 16:03:08 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/tcltklib.c: enforce thread-check and exception-handling to
- avoid SEGV trouble.
+ * ext/tcltklib/tcltklib.c: enforce thread-check and exception-handling
+ to avoid SEGV trouble.
+ [KNOWN BUG] When supports pthread and running multiple Tk
+ interpreters, an interrupt signal causes SEGV frequently. That
+ may be a trouble of Ruby's signal handler.
* ext/tk/tkutil/tkutil.c; fix a bug on converting a SJIS string array
to a Tcl's list string.
@@ -10935,58 +6875,17 @@ Wed Mar 2 16:03:08 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/demos-*/widget: add entries of animation demos.
-Wed Mar 2 12:21:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_eval): [EXPERIMENTAL] NODE_LAMBDA implemented.
- [ruby-dev:25780]
-
- * node.h (NODE_LAMBDA): for literal Proc object.
-
- * parse.y (expr): interpret mere do...end block as proc object.
+Tue Mar 1 00:47:43 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * parse.y (primary): ditto, for brace block.
+ * test/rinda/test_rinda.rb: backport from CVS_HEAD. use
+ MockClock.sleep instead of Kernel.sleep [ruby-dev:25387]
-Tue Mar 1 21:16:54 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * regcomp.c (optimize_node_left): uninitialized member
- (OptEnv.backrefed_status) was used. [ruby-dev:25778]
-
-Tue Mar 1 16:50:37 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * regparse.c: move st_*_strend() functions from st.c. fixed some
- potential memory leaks.
-
-Tue Mar 1 00:40:35 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Mar 1 00:34:24 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/rinda/tuplespace.rb (Rinda::TupleSpace): improved keeper thread.
* test/rinda/test_rinda.rb: ditto.
-Mon Feb 28 23:10:13 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/socket/socket.c (Init_socket): IPv6 is not supported although
- AF_INET6 is defined on bcc32. (rev1.108 again)
-
- * ext/socket/mkconstants.rb: ditto.
-
-Mon Feb 28 21:55:49 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * ext/strscan/strscan.c (strscan_s_allocate):
- use onig_region_init().
-
- * ext/strscan/strscan.c (adjust_registers_to_matched):
- use onig_region_set().
-
-Mon Feb 28 15:12:06 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/socket/socket.c (Init_socket): ported more Socket::Constants
- from ruby_1_8, and made it easy to add new constants.
- [ruby-dev:25771]
-
- * ext/socket/depend: ditto.
-
- * ext/socket/mkconstants.rb: ditto. (added)
-
Mon Feb 28 11:42:23 2005 Ian Macdonald <ian@caliban.org>
* exception error messages updated. [ruby-core:04497]
@@ -10997,27 +6896,6 @@ Mon Feb 28 09:03:09 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
constants. Patch from Sam Roberts <sroberts@uniserve.com>.
[ruby-core:04409]
-Sun Feb 27 05:55:38 2005 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: fix typo. [ruby-core:04494]
-
-Sat Feb 26 16:58:20 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * parse.y, re.c, regex.h, LEGAL, ext/strscan/strscan.c:
- remove oniggnu.h (GNU regex API).
-
-Wed Feb 23 22:08:16 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * st.c, st.h: imported additional file changes on
- Oniguruma 3.7.0.
-
-Wed Feb 23 21:45:29 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * ascii.c, euc_jp.c, oniggnu.h, oniguruma.h, regcomp.c,
- regenc.c, regenc.h, regerror.c, regexec.c, regint.h,
- regparse.c, regparse.h, sjis.c, utf8.c: imported Oni Guruma
- 3.7.0.
-
Wed Feb 23 15:04:32 2005 akira yamada <akira@ruby-lang.org>
* lib/uri/generic.rb (split_userinfo): should split ":pass" into ""
@@ -11030,53 +6908,27 @@ Wed Feb 23 08:00:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* array.c (rb_ary_unshift_m): ditto.
-Wed Feb 23 01:53:29 2005 Shugo Maeda <shugo@ruby-lang.org>
+Wed Feb 23 01:57:46 2005 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/imap.rb (initialize): handle certs correctly. Thanks,
- NABEYA Kenichi.
-
-Wed Feb 23 00:37:34 2005 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/mkmf.rb (mkmf_failed): fixed typo.
-
-Tue Feb 22 23:52:45 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in, lib/mkmf.rb: use simple commands if available.
-
- * mkconfig.rb: remove autoconf internal variables from rbconfig.rb.
-
- * lib/mkmf.rb (create_makefile): substitute implicit rules in depend
- file.
-
- * {bcc32,win32,wince}/Makefile.sub (COMPILE_RULES, RULE_SUBST):
- include $(topdir) and $(hdrdir) to search path.
-
-Tue Feb 22 23:51:45 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/syck/rubyext.c: get rid of warnings caused by a bug of VC.
-
-Tue Feb 22 23:50:26 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ NABEYA Kenichi. (backported from CVS HEAD)
- * signal.c (ruby_signal, ruby_nativethread_signal): must be valid as
- expressions, not only statements.
+Tue Feb 22 07:25:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Feb 22 12:54:13 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * parse.y (parser_yylex): identfier after dot must not be a variable.
- * eval.c (rb_thread_start_0): update curr_thread before raising
- TAG_THREAD. [ruby-dev:25712]
+Mon Feb 21 10:04:49 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Feb 22 07:24:57 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * {bcc32,win32,wince}/Makefile.sub (config.h): add fcntl.
- * parse.y (parser_yylex): identifier after dot must not be a variable.
+ * win32/win32.[ch] (fcntl): ditto.
-Mon Feb 21 18:31:12 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+ * win32/win32.c (rb_w32_connect): support nonblocking mode.
- * signal.c: Standard signal handlers ignore signals on non-Ruby native
- threads. When a handler is entried with ruby_signal() (like as the
- standard signal handlers), the handler for the signal is marked as
- it cannot accept non-Ruby native threads. If a handler can treat all
- signals on all native threads, please use ruby_nativethread_signal()
- to entry it.
+ * ext/socket/socket.c (wait_connectable, ruby_connect): support
+ nonblocking connect on various platforms.
+ all changes are backported from CVS HEAD. [ruby-core:3154],
+ [ruby-core:4364].
Sun Feb 20 00:48:48 2005 Tanaka Akira <akr@m17n.org>
@@ -11084,7 +6936,7 @@ Sun Feb 20 00:48:48 2005 Tanaka Akira <akr@m17n.org>
re-implemented according to RFC 1738.
reported by Guillaume Marcais. [ruby-talk:131650]
-Sat Feb 19 18:46:56 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sat Feb 19 18:11:47 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb (DRbObject#respond_to?): take two arguments.
[ruby-dev:25722]
@@ -11096,16 +6948,7 @@ Sat Feb 19 13:52:02 2005 Tanaka Akira <akr@m17n.org>
* lib/open-uri.rb: call OpenSSL::SSL::SSLSocket#post_connection_check
after connection is made.
-Sat Feb 19 13:31:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb (extract_makefile): remove no longer existing installed
- files.
-
- * lib/mkmf.rb (install_dirs): return installation directory list.
-
- * lib/mkmf.rb (create_makefile): reverted wrongly removed lines.
-
-Sat Feb 19 01:28:56 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sat Feb 19 01:32:03 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/bigdecimal/lib/bigdecimal/newton.rb: resolved LoadError.
[ruby-dev:25685]
@@ -11122,42 +6965,16 @@ Fri Feb 18 17:14:00 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/xmlrpc/parser.rb (XMLRPC::FaultException): make it subclass
of StandardError class, not Exception class. [ruby-core:04429]
-Fri Feb 18 04:06:41 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (fcall_gen): lvar(arg) will be evaluated as
- lvar.call(arg) when lvar is a defined local variable. [new]
-
-Thu Feb 17 22:15:34 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * ext/strscan/strscan.c: calls Oniguruma API directly.
-
-Thu Feb 17 21:53:12 2005 K.Kosako <sndgk393 AT ybb.ne.jp>
-
- * common.mk, LEGAL: remove reggnu.c.
-
-Thu Feb 17 21:53:12 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * gc.c, re.c: now ruby calls Oniguruma API directly, bypassing
- GNU compatible APIs.
-
-Thu Feb 17 20:09:23 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Feb 17 20:11:18 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/drb/drb.rb (DRbServer.default_safe_level): fix typo.
-Thu Feb 17 20:09:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Feb 17 20:11:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* test/digest/test_digest.rb: separate test case for each algorithms.
[ruby-dev:25412]
-Thu Feb 17 14:31:52 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_class_initialize): call inherited method before
- calling initializing block.
-
- * eval.c (rb_thread_start_1): initialize newly pushed frame.
- fixed: [ruby-dev:25707]
-
-Thu Feb 17 13:46:00 2005 Nathaniel Talbott <ntalbott@ruby-lang.org>
+Thu Feb 17 11:54:00 2005 Nathaniel Talbott <ntalbott@ruby-lang.org>
* lib/test/unit/collector.rb (collect_file): now deletes paths added
to $LOAD_PATH instead of restoring it verbatim.
@@ -11175,43 +6992,38 @@ Thu Feb 17 04:21:47 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/open3.rb (Open3::popen3): $? should not be EXIT_FAILURE.
fixed: [ruby-core:04444]
-Thu Feb 17 00:31:21 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * test/drb/test_drb.rb, ut_safe1.rb: port from 1.8
+Thu Feb 17 00:09:45 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-Thu Feb 17 00:02:27 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * test/drb/ignore_test_drb.rb: move TestDRbReusePort to new file
+ [ruby-dev:25238]
- * eval.c (is_defined): NODE_IASGN is an assignment.
+ * test/drb/test_drb.rb: add method DRbService.ext_service, move
+ TestDRbReusePort to new file [ruby-dev:25238]
-Wed Feb 16 23:54:14 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/drb/test_drb.rb: ditto.
- * eval.c (rb_thread_start_1): outer block variables wasn't linked to
- threads. fixed: [ruby-dev:25700]
+ * test/drb/test_drbssl.rb: ditto.
-Wed Feb 16 15:11:43 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+ * test/drb/test_drbunix.rb: ditto.
- * ext/openssl/lib/openssl/ssl.rb (OpenSSL::Nonblock#initialize):
- native win32 platform doesn't have F_GETFL.
+ * test/drb/ut_drb.rb: reduce sleep.
-Wed Feb 16 02:47:45 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Thu Feb 17 00:02:27 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/openssl/ossl_ssl.c (ossl_ssl_read, ossl_ssl_write): should
- call rb_sys_fail instead of raising SSLError if SSL_ERROR_SYSCALL
- occurred.
+ * eval.c (is_defined): NODE_IASGN is an assignment.
- * ext/openssl/lib/openssl/buffering.rb (Buffering#fill_rbuff):
- should rescue Errno::EAGAIN.
+Wed Feb 16 23:34:30 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * ext/openssl/lib/openssl/buffering.rb (Buffering#each): fix typo.
- suggested by Brian Ollenberger.
+ * lib/drb/drb.rb: add lazy stop_service. ([druby-ja:109])
- * ext/openssl/lib/openssl/ssl.rb: set non-blocking flag to the
- underlying IO.
+ * lib/drb/extserv.rb: ditto.
-Tue Feb 15 22:14:34 2005 sheepman <sheepman@tcn.zaq.ne.jp>
+Wed Feb 16 17:07:57 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/readline/readline.c (Readline.readline): use rl_outstream
- and rl_instream. [ruby-dev:25699]
+ * ext/tk/tkutil.c: Follow the change of st.c (st_foreach)
+ [ruby-list:40623].
+ Sometimes mis-convert from a Ruby's Array of SJIS Strings, which
+ includes some kind of SJIS characters, to a Tcl's UTF8 list string.
Mon Feb 14 23:58:17 2005 Kouhei Sutou <kou@cozmixng.org>
@@ -11221,14 +7033,13 @@ Mon Feb 14 23:58:17 2005 Kouhei Sutou <kou@cozmixng.org>
Mon Feb 14 13:12:38 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/lib/openssl/ssl.rb
- (OpenSSL::SSL::SSLSocket#post_connection_check): new method.
+ (OpenSSL::SSL::SSLSocket#post_connection_check): new method.
-Mon Feb 14 00:10:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Mon Feb 14 00:40:49 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * lib/drb/drb.rb (DRbServer): add default_safe_level, safe_level,
- config[:safe_level] ([druby-ja:120])
+ * lib/drb/drb.rb (InvokeMethod.perform): pass DRb info to sub thread.
- * test/drb/test_drb.rb, ut_eval.rb, ut_safe1.rb: ditto.
+ * test/drb/test_drb.rb (test_01_safe1_safe4_eval): fix test case.
Sun Feb 13 23:13:46 2005 Kouhei Sutou <kou@cozmixng.org>
@@ -11241,43 +7052,22 @@ Sun Feb 13 23:13:46 2005 Kouhei Sutou <kou@cozmixng.org>
* test/rss/: added tests for the convenient methods.
-Sun Feb 13 23:12:47 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Feb 13 22:43:03 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * eval.c (rb_thread_start_0): restore prot_tag before rewinding.
+ * lib/drb/drb.rb (DRbServer): add default_safe_level, safe_level,
+ config[:safe_level] ([druby-ja:120])
+
+ * test/drb/test_drb.rb, ut_eval.rb, ut_safe1.rb: ditto.
Sun Feb 13 16:56:52 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/cgi.rb (WEBrick::CGI.start): should set reason-phrase
to the value of status header field. ([ruby-dev:40617])
-Sun Feb 13 11:38:40 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * regparse.c (type_cclass_hash): (Thanks Nobu) fixed
- overrun. ([ruby-dev:25676]).
-
-Sun Feb 13 10:53:08 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * oniggnu.h, oniguruma.h, regcomp.c, st.c: imported
- Oni Guruma 3.6.0.
-
-Sun Feb 13 01:33:19 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sun Feb 13 00:52:33 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/erb.rb (ERB::Util.h, u): make it module_function.
-Sat Feb 12 22:17:11 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (TAG_THREAD): to start a new thread.
-
- * eval.c (ruby_init, ruby_options, ruby_cleanup, rb_protect,
- rb_load_protect, rb_thread_start_0): make thread anchor.
-
- * eval.c (proc_alloc): clone proc object if klass is not Proc or
- created in different thread.
-
- * eval.c (rb_block_pass): call a function with a block. [new]
-
- * eval.c (rb_f_throw): raise NameError in main thread.
-
Sat Feb 12 17:29:19 2005 Tanaka Akira <akr@m17n.org>
* lib/open-uri.rb (OpenURI.open_loop): send authentication only for
@@ -11287,10 +7077,6 @@ Sat Feb 12 15:07:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* random.c (rand_init): suppress warning.
-Sat Feb 12 14:10:24 2005 Tanaka Akira <akr@m17n.org>
-
- * lib/open-uri.rb (OpenURI.open_http): reject userinfo explicitly.
-
Sat Feb 12 13:54:03 2005 Tanaka Akira <akr@m17n.org>
* lib/open-uri.rb: support https if the platform provides CA
@@ -11298,10 +7084,10 @@ Sat Feb 12 13:54:03 2005 Tanaka Akira <akr@m17n.org>
Sat Feb 12 06:18:28 2005 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
- * ext/etc/etc.c (Init_etc): sGroup needs HAVE_ST_GR_PASSWD check
+ * ext/etc/etc.c (Init_etc): sGroup needs HAVE_ST_GR_PASSWD check.
[ruby-dev:25675]
-Fri Feb 11 17:37:50 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Fri Feb 11 17:40:42 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths):
new method OpenSSL::X509::Store#set_default_paths.
@@ -11323,108 +7109,68 @@ Fri Feb 11 04:54:13 2005 Tilman Sauerbeck <tilman@code-monkey.de>
* lib/rdoc/generators/ri_generator.rb: ditto.
-Thu Feb 10 13:52:42 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * configure.in, win32/Makefile.sub (LIBS, COMMON_HEADERS): use
- winsock2 on mswin32/mingw.
-
- * ext/socket/extconf.rb: ditto.
-
- * win32/win32.c (StartSockets): ditto.
+Thu Feb 10 11:14:17 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * win32/win32.h: ditto.
+ * win32/Makefile.sub (COMMON_HEADERS): shouldn't include winsock2.h.
-Thu Feb 10 12:09:16 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/extconf.rb (sockaddr_storage): remove workaround for
+ mswin32.
- * ext/extmk.rb (extract_makefile): default to true if not compiled
- previously.
+Thu Feb 10 10:29:16 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/extmk.rb (extmake): create dummy makefile if extconf failed.
-
-Thu Feb 10 12:07:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (init_stdhandle): assign standard file handles.
-
- * bcc32/Makefile.sub (COMMON_LIBS): add libraries included in
- import32.lib.
-
- * lib/mkmf.rb (create_makefile): restrict prefixing with srcdir to
- rule lines, add search path to implicit rules, and set Borland make
- special macros for search path.
-
- * win32/win32.c, win32/win32.h (read): avoid a BCC runtime bug.
+ * ext/curses/curses.c: don't need to check HAVE_WCOLOR_SET excluding
+ window_color_set().
Thu Feb 10 00:47:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* struct.c (make_struct): fixed: [ruby-core:04402]
-Wed Feb 9 16:33:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/socket/socket.c (wait_connectable): fixed wrong condition.
-
-Wed Feb 9 14:42:28 2005 URABE Shyouhei <shyouhei@ice.uec.ac.jp>
-
- * eval.c (scope_dup): add volatile not to optimize tbl.
-
-Wed Feb 9 10:02:02 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/tk/make-tkutil, ext/tk/tkutil/subconf.rb: no longer used.
-
- * ext/tk/tkutil/extconf.rb: need to compile tkutil. [ruby-dev:25607]
-
Wed Feb 9 08:07:08 2005 Paul Duncan <pabs@pablotron.org>
* ext/curses/curses.c (window_color_set): [ruby-core:04393]
-Tue Feb 8 23:48:36 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Feb 8 23:51:47 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb: reject :instance_eval, :class_eval, :module_eval
[druby-ja:117]
-Tue Feb 8 22:38:28 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * keywords, parse.y: separate EXPR_VALUE from EXPR_BEG.
- fixed: [ruby-core:04310], [ruby-core:04368]
-
Tue Feb 8 13:06:12 2005 Sam Roberts <sroberts@uniserve.com>
* ext/socket/socket.c (Init_socket): SO_REUSEPORT added.
[ruby-talk:130092]
+Tue Feb 8 09:30:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/cgi.rb (CGI::Cookie): [ruby-talk:130040]
+
Tue Feb 8 00:19:02 2005 Tanaka Akira <akr@m17n.org>
* lib/resolv.rb (Resolv::DNS::Name#subdomain_of?): new method.
(Resolv::DNS::Name#inspect): ditto.
Suggested by Sam Roberts. [ruby-talk:129086]
-Mon Feb 7 23:14:11 2005 Tanaka Akira <akr@m17n.org>
-
- * io.c (io_getc): flush rb_stdout before read from stdin, which is
- connected to a tty. [ruby-core:4378]
-
- * rubyio.h (FMODE_TTY): renamed from FMODE_LINEBUF.
-
Mon Feb 7 10:06:30 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* object.c: [ruby-doc:818]
-Mon Feb 7 02:13:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Feb 7 01:56:20 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * instruby.rb, rubytest.rb (srcdir): no longer embed srcdir into
+ rbconfig.rb. (backported from CVS HEAD)
* ext/socket/extconf.rb (sockaddr_storage): winsock2.h have the
definition of struct sockaddr_storage, but socket.c doesn't
include it because this version of ruby still has binary level
compatibility with winsock1.
-Mon Feb 7 01:22:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/mkmf.rb (create_makefile): should support header files in
+ depend file.
- * ext/extmk.rb (extract_makefile): extract previously collected
- informations from existing Makefile.
+Mon Feb 7 01:21:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/socket/extconf.rb: check if getaddrinfo() works fine only when
wide-getaddrinfo option is not given. fixed: [ruby-dev:25422]
- * ext/tk/extconf.rb: separate tkutil configuration.
-
* lib/mkmf.rb ($extmk): check if under ext directory.
* lib/mkmf.rb (Logging.postpone): allow recursive operation.
@@ -11441,25 +7187,31 @@ Mon Feb 7 01:22:50 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (dir_config): accept arrays of directory names as
default values.
- * lib/mkmf.rb (with_cppflags, with_cflags, with_ldflags): keep flags
- modified if the block returned true.
+ * mkconfig.rb: no longer embed srcdir and compile_dir into
+ rbconfig.rb.
+
+ * lib/mkmf.rb (create_makefile): fix unbalanced parens.
-Sun Feb 6 19:20:05 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Feb 6 19:23:01 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* eval.c (stack_extend): add prototype because VC++8 doesn't
accept __declspec(noinline) with K&R style function definitions.
+ (backported from CVS HEAD)
-Sun Feb 6 13:56:19 2005 Tadayoshi Funaba <tadf@dotrb.org>
+Sun Feb 6 14:14:26 2005 Tadayoshi Funaba <tadf@dotrb.org>
* lib/date.rb (new_with_hash): changed messages of exception.
* lib/date/format.rb (str[fp]time): undocumented conversion
specifications %[1-3] are now deprecated.
-Sun Feb 6 11:27:37 2005 Tanaka Akira <akr@m17n.org>
+Sun Feb 6 12:20:11 2005 Akinori MUSHA <knu@iDaemons.org>
+
+ * bignum.c (rb_big2ulong_pack): One too many arguments are passed
+ to big2ulong().
- * ext/dl/dl.c (Init_dl): function declaration should precede
- statements before C99.
+ * re.c (rb_reg_init_copy, rb_reg_initialize_m): One too many
+ arguments are passed to rb_reg_initialize().
Sun Feb 6 03:24:20 2005 Tanaka Akira <akr@m17n.org>
@@ -11471,28 +7223,7 @@ Sun Feb 6 03:24:20 2005 Tanaka Akira <akr@m17n.org>
(Resolv::DNS::Message::MessageDecoder#get_string_list): ditto.
based on [ruby-talk:129732] by Sam Roberts.
-Sat Feb 5 02:24:06 2005 Minero Aoki <aamine@loveruby.net>
-
- * test/ripper/test_scanner_events.rb: fix test.
-
-Fri Feb 4 18:44:35 2005 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/lib/ripper/lexer.rb: last Lexer fix was incomplete;
- test all green.
-
-Fri Feb 4 15:57:06 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (open_args): fix too verbose warnings for the space
- before argument parentheses. [ruby-dev:25492]
-
- * parse.y (parser_yylex): ditto.
-
-Fri Feb 4 14:33:25 2005 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/lib/ripper/filter.rb: ripper/tokenizer ->
- ripper/lexer. [ruby-dev:25632]
-
-Fri Feb 4 00:24:15 2005 Kouhei Sutou <kou@cozmixng.org>
+Fri Feb 4 00:30:45 2005 Kouhei Sutou <kou@cozmixng.org>
* lib/rss: supported Image module.
http://web.resource.org/rss/1.0/modules/image/
@@ -11505,19 +7236,6 @@ Thu Feb 3 23:42:36 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/stringio/stringio.c (strio_extend, strio_putc): fill with zero
extended portion. [ruby-dev:25626]
-Thu Feb 3 16:12:57 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (parser_yylex): the first expression in the parentheses
- should not be a command. [ruby-dev:25492]
-
-Thu Feb 3 03:31:20 2005 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf-utf8/nkf.c: follow original v 1.57
-
- * ext/nkf/nkf-utf8/utf8tbl.c: follow original v 1.8
-
- * ext/nkf/nkf-utf8/config.h: follow original v 1.7
-
Wed Feb 2 23:52:53 2005 sheepman <sheepman@tcn.zaq.ne.jp>
* ext/stringio/stringio.c (strio_truncate): should MEMZERO an extended
@@ -11537,49 +7255,18 @@ Wed Feb 2 21:56:01 2005 Kouhei Sutou <kou@cozmixng.org>
* lib/rss/trackback.rb: ditto.
-Wed Feb 2 03:30:58 2005 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/lib/ripper/tokenizer.rb -> lexer.rb.
-
- * ext/ripper/lib/ripper/lexer.rb: new method Ripper.slice.
- [experimental]
-
- * ext/ripper/lib/ripper/sexp.rb: new file. [experimental]
-
- * ext/ripper/lib/ripper.rb: require ripper/lexer and ripper/sexp.
-
-Tue Feb 1 21:49:24 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Feb 1 22:48:48 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb (DRb::DRbObject#respond_to?): check marshal_dump and
_dump.
Tue Feb 1 00:20:23 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * Makefile.in, configure.in: made EXTOUT configurable.
-
- * ext/extmk.rb (extmake), lib/mkmf.rb: keep topdir as relative style.
-
- * lib/mkmf.rb: make extensions in depth order. [ruby-dev:25522]
-
* configure.in (aix): fix linker flags on AIX. [ruby-talk:125460]
-Mon Jan 31 13:16:39 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/extconf.rb: add tkutil configuration step (remove old schema)
+Mon Jan 31 13:33:21 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/tk/depend: remove the information of tkutil
-
- * ext/tk/make-tkutil: sub-part of Makefile to compile tkutil
-
- * ext/tk/tkutil/tkutil.c: move tkutil.c to subdirectory
-
- * ext/tk/tkutil/subconf.rb: configuration file for tkutil.c
-
- * ext/tk/tkutil/depend: ditto
-
-Mon Jan 31 13:13:35 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/tcltklib.c: add invalid namespace check
+ * ext/tcltklib/tcltklib.c: add invalid namespace check
* ext/tk/lib/multi-tk.rb: add invalid_namespace? method
@@ -11589,22 +7276,11 @@ Mon Jan 31 10:29:18 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/irb/context.rb (IRB::Context::initialize): [ruby-core:04330]
-Mon Jan 31 09:44:03 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (Init_Object): remove Object#type. [ruby-core:04335]
-
Sat Jan 29 09:42:12 2005 Sam Roberts <sroberts@uniserve.com>
* lib/resolv.rb (Resolv::DNS::Resource::IN::SRV): Added RFC2782 SRV
resource record for specifying location of services.
-Sat Jan 29 00:10:33 2005 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * ascii.c, euc_jp.c, hash.c, oniggnu.h, oniguruma.h, regcomp.c,
- regenc.c, regenc.h, regerror.c, regexec.c, reggnu.c, regint.h,
- regparse.c, regparse.h, sjis.c, st.c, st.h, utf8.c: imported
- Oni Guruma 3.5.4.
-
Fri Jan 28 17:16:55 2005 Tanaka Akira <akr@m17n.org>
* lib/resolv.rb (Resolv::DNS::Config.parse_resolv_conf):
@@ -11614,60 +7290,33 @@ Fri Jan 28 17:16:55 2005 Tanaka Akira <akr@m17n.org>
(Resolv::DNS::Config#lazy_initialize): ditto.
Suggested by Sam Roberts.
-Thu Jan 27 17:15:03 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/tk/extconf.rb: support new tk scheme on bccwin32.
- fixed: [ruby-dev:25546]
-
Thu Jan 27 13:18:03 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* st.c (st_foreach): report success/failure by return value.
[ruby-Bugs-1396]
-Thu Jan 27 00:12:19 2005 Minero Aoki <aamine@loveruby.net>
-
- * test/fileutils/test_fileutils.rb (setup): support BSD style
- directory group inheritance (again).
-
-Thu Jan 27 00:02:40 2005 Minero Aoki <aamine@loveruby.net>
+Thu Jan 27 00:15:29 2005 Minero Aoki <aamine@loveruby.net>
- * test/fileutils/test_fileutils.rb (setup): support BSD style
- directory group inheritance. [ruby-dev:25440]
+ * test/fileutils/test_fileutils.rb (setup): support BSD-style
+ directory group inheritance. (backport from HEAD, rev 1.32)
* test/fileutils/fileasserts.rb (assert_same_entry): show entry
- difference.
-
-Wed Jan 26 17:12:50 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y: forgot to initialize parser struct. [ruby-dev:25492]
-
- * parse.y (parser_yylex): no tLABEL on EXPR_BEG.
- [ruby-talk:127711]
+ difference. (backport from HEAD, rev 1.4)
-Wed Jan 26 14:12:58 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jan 26 23:09:11 2005 Minero Aoki <aamine@loveruby.net>
- * ext/Setup*: remove tcltklib.
+ * lib/net/protocol.rb (WriteAdapter#puts): should append \n, not
+ prepend. [ruby-talk:128302] (backport from HEAD, rev 1.75)
-Wed Jan 26 12:45:16 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/tk/extconf.rb: support new tk scheme on mswin32.
- fixed: [ruby-dev:25535]
-
-Wed Jan 26 10:45:19 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jan 26 10:51:50 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (flock_winnt, flock_win95): unlock file even if
- LOCK_NB is specified.
-
-Tue Jan 25 23:10:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk: merge tcltklib for Ruby/Tk installation control
-
- * ext/tcltklib: remove
+ LOCK_NB is specified. (backported from CVS HEAD)
-Tue Jan 25 17:05:15 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jan 25 17:11:51 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * ruby.c (proc_options): correct -T option in RUBYOPT.
- fixed: [ruby-dev:25512]
+ * ruby.c (proc_options): correct -T option in RUBYOPT. (backported
+ from CVS HEAD)
Tue Jan 25 14:05:52 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -11706,17 +7355,31 @@ Tue Jan 25 14:05:52 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/tkHTML/ss.rb: local variable scope bug fix
[ruby-dev:25479]
-Mon Jan 24 16:00:53 2005 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jan 24 15:44:25 2005 Tilman Sauerbeck <tilman@code-monkey.de>
+
+ * lib/rdoc/parsers/parse_c.rb: allow whitespace after function names.
+ [ruby-core:4296]
+
+ * lib/rdoc/parsers/parse_simple.rb: adds support for private comments
+ in the "simple" parser. [ruby-core:4301]
+
+Mon Jan 24 15:44:25 2005 Charles Mills <cmills@freeshell.org>
+
+ * lib/rdoc/parsers/parse_c.rb: adds support for constants
+ (rb_define_const), accessors (rb_define_attr), and makes a
+ couple fixes. [ruby-core:4307]
+
+Mon Jan 24 15:44:25 2005 Florian Gro <florgro@gmail.com>
- * ext/nkf/lib/kconv.rb (guess_old): not use NKF.guess_old
- but NKF.guess1. fixed: [ruby-dev:25491]
+ * lib/rdoc/parsers/parse_rb.rb: Logic for def Builtin.method() end
+ [ruby-core:4302]
Mon Jan 24 15:44:25 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* document updates - [ruby-core:04296], [ruby-core:04301],
[ruby-core:04302], [ruby-core:04307]
-Sun Jan 23 12:38:01 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Sun Jan 23 12:41:16 2005 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/soap/wsdlDriver.rb: from 1.5.3-ruby1.8.2, operation which has
capitalized name (such as KeywordSearchRequest in AWS) is defined as
@@ -11732,62 +7395,65 @@ Sun Jan 23 05:24:42 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_ocsp.c (ossl_ocspreq_to_der): should call
GetOCSPReq at first.
-Sat Jan 22 22:59:08 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sat Jan 22 23:09:47 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/ssl.rb (accept): rescue SSLError. [druby-ja:110]
-Sat Jan 22 22:27:28 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sat Jan 22 22:35:03 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/unix.rb: fail if UNIXFileOwner is set. [druby-ja:111]
+Fri Jan 21 23:58:42 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * ext/stringio/stringio.c (strio_set_pos): clear EOF flag.
+ [ruby-talk:127511]
+
Fri Jan 21 20:07:02 2005 Tanaka Akira <akr@m17n.org>
* lib/resolv.rb (Resolv::DNS::Config.resolv): don't raise ResolvError.
reported by Sam Roberts. [ruby-talk:127133]
-Fri Jan 21 17:09:44 2005 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb (decode_utf7): use pack("U*") to encode UTF-8.
-
- * lib/net/imap.rb (encode_utf7): use unpack("U*") to decode UTF-8.
-
- * test/net/imap/test_imap.rb: added tests for Net::IMAP.
-
Fri Jan 21 16:58:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (rb_push_glob): should work for NUL delimited patterns.
- * dir.c (rb_glob2): should aware of offset in the pattern.
-
Fri Jan 21 13:58:37 2005 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/imap.rb (u8tou16): fixed typo. fixed: [ruby-list:40546]
+ (backported from CVS HEAD)
+
+Fri Jan 21 09:30:16 2005 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Jan 21 00:37:09 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * rubyio.h (rb_eof_error): should mark as NORETURN. (backported
+ from CVS HEAD)
+
+Fri Jan 21 00:31:36 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/syck/rubyext.c (syck_parser_bufsize_set): avoid VC++ warning
"local variable 'size' used without having been initialized".
+Thu Jan 20 19:03:24 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/extmk.rb (extmake): shouldn't set $extflags on mswin32.
+
+ * win32/Makefile.sub (LIBRUBY_SO): should use $DLDOBJS instead of
+ $EXTOBJS.
+ fixed: [ruby-core:04290] (backported from CVS HEAD)
+
Thu Jan 20 11:42:02 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_new4): should propagate taintedness.
- * env.h: rename member names in struct FRAME; last_func -> callee,
- orig_func -> this_func, last_class -> this_class.
-
* struct.c (rb_struct_set): use original method name, not callee
name, to retrieve member slot. [ruby-core:04268]
* time.c (time_strftime): protect from format modification from GC
finalizers.
-Thu Jan 20 02:01:10 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (Init_Object): remove rb_obj_id_obsolete()
-
-Wed Jan 19 18:02:19 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jan 19 18:06:40 2005 NAKAMURA Usaku <usa@ruby-lang.org>
* lib/ipaddr.rb (to_s, test_to_s): too many colons with some cases.
+ (backported from CVS HEAD)
Wed Jan 19 01:16:30 2005 Tanaka Akira <akr@m17n.org>
@@ -11795,6 +7461,32 @@ Wed Jan 19 01:16:30 2005 Tanaka Akira <akr@m17n.org>
domain and search directive without an argument.
reported by Sam Roberts. [ruby-talk:126781]
+Tue Jan 18 15:03:05 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/ssl.rb (WEBrick::Config::SSL): the default value
+ of :SSLEnable is false.
+
+ * lib/webrick/server.rb (WEBrick::Daemon.start): prepared stdio
+ don't allow changing its mode.
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_service):
+ should delete trailing LF from the result of pack("m*").
+
+ * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_connect):
+ - should delete trailing LF from the result of pack("m*").
+ - clear Request-Line not to send the response by HTTPServer#run.
+
+ * lib/webrick/httputils (WEBrick::HTTPUtils.parse_qvalues):
+ refine regexp (and change the name of a local variable).
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils#escape_path): add
+ new method to escape URI path component.
+
+ * lib/webrick/cgi.rb (WEBrick::CGI::Socket#request_line): should
+ escape SCRIPT_NAME and PATH_INFO before being parsed as a URI.
+
+ * test/webrick/*, sample/webrick/httpproxy.rb: add new file.
+
Mon Jan 17 23:33:46 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (aix): fix typo. [ruby-talk:126401]
@@ -11823,63 +7515,48 @@ Sat Jan 15 14:57:22 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ruby.c (proc_options): ignore trailing CRs at the end of short
options as well as long options. fixed: [ruby-core:04232]
-Sat Jan 15 13:44:22 2005 Kouhei Sutou <kou@cozmixng.org>
+Sat Jan 15 13:35:16 2005 Kouhei Sutou <kou@cozmixng.org>
* lib/rss/rss.rb (RSS::VERSION): 0.1.2 -> 0.1.3.
* lib/rss/rss.rb: accept inheritance. [ruby-talk:126104]
-Wed Jan 12 12:29:28 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Jan 13 04:48:53 2005 Tanaka Akira <akr@m17n.org>
- * eval.c (rb_mod_define_method): incomplete subclass check.
- [ruby-dev:25464]
+ * io.c (io_fread): don't warn nonblocking behavior by default.
- * class.c (rb_make_metaclass): class of metaclasses should be
- plain Class. [ruby-list:40524]
+Wed Jan 12 00:36:29 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Jan 11 20:58:52 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * object.c (rb_class_superclass): superclass of singleton class also
+ should be a singleton class. fixed: [ruby-list:40519]
- * io.c (remain_size): use buffered data instead of unreading to avoid
- inconsistency of text mode. fixed: [ruby-dev:25446]
-
-Tue Jan 11 09:37:53 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Jan 11 09:44:40 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* numeric.c (Init_Numeric): turn off floating point exceptions
on bcc32. "1e300".to_f had crashed by overflow.
-Mon Jan 10 15:28:51 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Tue Jan 11 03:10:10 2005 Minero Aoki <aamine@loveruby.net>
- * lib/webrick/cgi.rb (WEBrick::CGI::Socket#request_line): should
- escape SCRIPT_NAME and PATH_INFO before being parsed as a URI.
-
- * lib/webrick/httputils.rb (WEBrick::HTTPUtils#escape_path): add
- new method to escape URI path component.
+ * lib/fileutils.rb (copy_entry): could not copy symbolic link.
+ [ruby-talk:125733]
- * lib/webrick/ssl.rb (WEBrick::Config::SSL): the default value
- of :SSLEnable is false.
+ * lib/fileutils.rb (copy_stream): use read/write instead of
+ sysread/syswrite.
- * test/webrick/{test_cgi.rb,webrick.cgi}: new file.
+Mon Jan 10 23:08:15 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/webrick/utils.rb: require "webrick/https.h".
+ * variable.c (rb_autoload): hide internal data from ruby level.
+ fixed: [ruby-dev:25435], [ruby-list:40498]
Mon Jan 10 01:22:55 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* gc.c (rb_data_object_alloc): klass may be NULL.
[ruby-list:40498]
-Sun Jan 9 14:12:17 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_f_select): IO list could be altered. [ruby-dev:25312]
-
-Sun Jan 9 04:08:40 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * test/webrick/test_server.rb (test_daemon): delete an assertion
- which has possibility to fail by race condition.
+Sun Jan 9 03:12:58 2005 Tanaka Akira <akr@m17n.org>
-Sun Jan 9 03:22:46 2005 Minero Aoki <aamine@loveruby.net>
-
- * test/fileutils/test_fileutils.rb (test_copy_entry): copy_entry
- copies only file type, not mtime. [ruby-dev:25383]
+ * io.c (io_fread): warn nonblocking behavior.
+ (io_readpartial): new method IO#readpartial.
Sat Jan 8 04:38:47 2005 why the lucky stiff <why@ruby-lang.org>
@@ -11890,33 +7567,17 @@ Fri Jan 7 21:12:29 2005 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
* random.c (rand_init): use ALLOC_N instead of ALLOCA_N
[ruby-dev:25426]
-Fri Jan 7 20:01:31 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_service):
- should delete trailing LF from the result of pack("m*").
-
- * lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_connect):
- - should delete trailing LF from the result of pack("m*").
- - clear Request-Line not to send the response by HTTPServer#run.
-
- * lib/webrick/httputils (WEBrick::HTTPUtils.parse_qvalues):
- refine regexp (and change the name of a local variable).
-
- * lib/webrick/server.rb (WEBrick::Daemon.start): prepared stdio
- don't allow changing its mode.
-
- * test/webrick/*, sample/webrick/httpproxy.rb: add new files.
-
Fri Jan 7 18:03:35 2005 Tanaka Akira <akr@m17n.org>
* gc.c (mark_locations_array): avoid core dump with -O3.
[ruby-dev:25424]
-Thu Jan 6 20:29:18 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jan 6 20:31:07 2005 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/zlib/zlib.c (zstream_end): should return value.
+ * ext/zlib/zlib.c (zstream_end): should return value. (backported
+ from CVS HEAD)
-Thu Jan 6 19:59:03 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Jan 6 19:55:13 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.c (rb_w32_close): didn't close socket handle.
[ruby-dev:25414]
@@ -11924,7 +7585,7 @@ Thu Jan 6 19:59:03 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.c (rb_w32_open_osfhandle): bcc32's _open_osfhandle
never set EMFILE.
-Thu Jan 6 17:22:41 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Jan 6 17:14:31 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* random.c (random_seed): O_NONBLOCK isn't defined on some
platforms. [ruby-dev:25417]
@@ -11938,11 +7599,6 @@ Thu Jan 6 07:58:28 2005 Dave Thomas <dave@pragprog.com>
* lib/rdoc/usage.rb (RDoc::RDoc.usage_no_exit): Allow for colons
in path names on DOS machines. (thanks to Johan Nilsson)
-Thu Jan 6 00:02:35 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * test/rinda/test_rinda.rb: use MockClock.sleep instead of Kernel.sleep
- [ruby-dev:25387]
-
Wed Jan 5 20:16:32 2005 Tanaka Akira <akr@m17n.org>
* random.c (limited_big_rand): didn't work if SIZEOF_BDIGITS == 2.
@@ -11950,20 +7606,22 @@ Wed Jan 5 20:16:32 2005 Tanaka Akira <akr@m17n.org>
* random.c (random_seed): refined.
-Wed Jan 5 16:39:54 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * parse.y (BITSTACK_POP): workaround for bcc32 compiler's bug.
- shift assignment operator '>>=' for __int64 in struct may
- generate collapsed code. [ruby-dev:25342]
-
- * win32/win32.[ch]: failed to compile on bcc32 (and probably wince)
- [ruby-dev:25306]
-
Wed Jan 5 12:49:39 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_thread_initialize): Thread objects cannot be initialized
again. fixed: [ruby-core:04067]
+Wed Jan 5 10:48:16 2005 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * dir.c (dir_s_mkdir): win32 special processing doesn't need any
+ longer. (backported from CVS HEAD)
+
+ * win32/win32.[ch] (rb_w32_mkdir): new function. POSIX.1 compatible
+ interface. (backported from CVS HEAD)
+
+ * win32/win32.[ch] (rb_w32_rmdir): new function. (backported from CVS
+ HEAD)
+
Wed Jan 5 02:30:11 2005 Tanaka Akira <akr@m17n.org>
* random.c (init_by_array): imported from mt19937ar-cok.tgz.
@@ -11982,10 +7640,10 @@ Tue Jan 4 23:25:29 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* bignum.c (rb_big_rand): should return positive random number.
[ruby-dev:25401]
-Tue Jan 4 21:25:43 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Jan 4 11:15:29 2005 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
- * test/drb/{test_drbssl.rb,test_drbunix.rb,ut_drb.rb}: use
- DRbService.ext_service. reduce sleep.
+ * bignum.c (rb_big_rand): do not use rb_big_modulo to generate
+ random bignums. [ruby-dev:25396]
Mon Jan 3 14:01:54 2005 Tanaka Akira <akr@m17n.org>
@@ -11997,21 +7655,7 @@ Mon Jan 3 11:37:42 2005 Tanaka Akira <akr@m17n.org>
* random.c (random_seed): use /dev/urandom if available.
[ruby-dev:25392]
-Tue Jan 4 11:15:29 2005 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
-
- * bignum.c (rb_big_rand): do not use rb_big_modulo to generate
- random bignums. [ruby-dev:25396]
-
-Mon Jan 3 11:03:37 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * test/drb/test_drb.rb: move TestDRbReusePort to new file.
- [ruby-dev:25238]
-
- * test/drb/drbtest.rb: change timeout.
-
- * test/drb/ignore_test_drb.rb: new file.
-
-Mon Jan 3 07:27:46 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Jan 3 07:46:42 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/httpauth/htpasswd.rb (WEBrick::Htpasswd#reload):
raise NotImplementedError if password is encrypted by digest
@@ -12027,46 +7671,6 @@ Mon Jan 3 07:27:46 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* test/webrick/test_httpauth.rb: new file.
-Sun Jan 2 15:42:10 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * lib/drb/drb.rb: add lazy stop_service.
-
- * lib/drb/extserv.rb: ditto.
-
-Sun Jan 2 01:17:17 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * test/drb/drbtest.rb: add method DRbService.ext_service.
-
- * test/drb/test_drb.rb: ditto.
-
- * test/drb/test_drbssl.rb: ditto.
-
-Sat Jan 1 20:23:02 2005 Tanaka Akira <akr@m17n.org>
-
- * io.c (argf_readpartial): new method ARGF.readpartial.
- (io_getpartial): extracted from io_readpartial.
- (io_readpartial): call io_getpartial.
-
-Sat Jan 1 17:44:54 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb (each_capitalized): should join header field
- value. This patch is contributed sheepman [ruby-list:40478]
-
- * test/net/http/test_httpheader.rb: test it.
-
-Sat Jan 1 16:21:29 2005 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (copy_stream): use read/write instead of
- sysread/syswrite, which allows duck typing. [ruby-dev:25369]
-
- * lib/fileutils.rb (copy_stream): does NOT support nonblocking IO.
- [ruby-dev:25370]
-
- * lib/fileutils.rb (copy_entry): could not copy symlink.
-
- * test/fileutils/test_fileutils.rb: test copy_entry, copy_file,
- copy_stream.
-
Sat Jan 1 04:20:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_ns_spki.c (ossl_spki_set_challenge): should call
@@ -12078,29 +7682,8 @@ Sat Jan 1 01:13:28 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
Fri Dec 31 14:10:43 2004 Dave Thomas <dave@pragprog.com>
- * lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::display_flow_item):
- Fix problem if heading contains formatting.
-
-Fri Dec 31 00:08:02 2004 Tanaka Akira <akr@m17n.org>
-
- * configure.in (HAVE_RLIM_T): removed because not used.
-
-Thu Dec 30 22:45:39 2004 Tanaka Akira <akr@m17n.org>
-
- * rubyio.h: don't deprecate rb_read_check.
-
- * io.c (STDIO_READ_DATA_PENDING): reverted from old READ_DATA_PENDING
- to check stdio read buffer.
- (rb_read_check): use STDIO_READ_DATA_PENDING.
- (rb_read_pending): ditto.
- (rb_getc): ditto.
-
-Thu Dec 30 05:39:35 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y: eliminate unused members in struct parser_params.
- [ruby-dev:25258] (again)
-
- * parse.y: make parser_new() static.
+ * lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::display_flow_item): Fix problem
+ if heading contains formatting.
Thu Dec 30 00:41:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -12118,11 +7701,6 @@ Tue Dec 28 22:31:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (rb_str_justify): create buffer string after argument type
conversion. fixed: [ruby-dev:25341]
-Tue Dec 28 17:18:17 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/net/telnet.rb (preprocess): remove NULL unless binmode.
- fixed: [ruby-list:40320]
-
Tue Dec 28 15:41:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/nkf/nkf-utf8/nkf.c (reinit): should initialize all static
@@ -12143,58 +7721,91 @@ Tue Dec 28 13:35:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/zlib/zlib.c (rb_deflate_init_copy): replace rb_deflate_clone.
+Tue Dec 28 12:26:45 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub, win32/setup.mak (RDOCTARGET, install,
+ install-nodoc, install-doc): rdoc support for mswin32.
+
+ * win32/configure.bat (--enable-install-doc, --disable-install-doc):
+ ditto.
+
Mon Dec 27 20:02:14 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: fix SEGV bug when deleting Tk interp
* ext/tk/lib/multi-tk.rb: ditto
-Mon Dec 27 16:54:05 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Dec 27 16:55:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_x509name.c (Init_ossl_x509name): should use
rb_hash_new to get exactly a Hash. fix [ruby-dev:25325].
-Mon Dec 27 15:29:12 2004 Minero Aoki <aamine@loveruby.net>
+Mon Dec 27 16:29:56 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_justify): [ruby-dev:25341]
- * test/fileutils/test_fileutils.rb (cp_r): tested wrong file name.
- [ruby-dev:25339]
+Mon Dec 27 15:47:48 2004 Minero Aoki <aamine@loveruby.net>
-Mon Dec 27 15:15:18 2004 Minero Aoki <aamine@loveruby.net>
+ * test/fileutils/fileasserts.rb: sync with HEAD.
+
+ * test/fileutils/test_fileutils.rb: ditto.
+
+ * test/fileutils/test_nowrite.rb: ditto.
+
+Mon Dec 27 15:21:07 2004 Minero Aoki <aamine@loveruby.net>
* lib/fileutils.rb (mv): should raise error when moving a
directory to the (empty) directory. [ruby-talk:124368]
+ (backport from HEAD 1.48)
* lib/fileutils.rb (mv): wrongly did not overwrite file on Win32
- platforms.
+ platforms. (backport from HEAD 1.48)
+
+Sat Dec 25 11:11:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-Mon Dec 27 14:36:20 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+ * stable version 1.8.2 released.
- * process.c (NUM2RLIM, RLIM2NUM): Without SIZEOF_RLIM_T is not error.
- fixed: [ruby-dev:25346]
+Sat Dec 25 04:23:49 2004 Minero Aoki <aamine@loveruby.net>
-Sun Dec 26 16:21:39 2004 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/fileutils.rb (mkdir, mkdir_p): should ensure directory
+ permission. (backportted from HEAD, 1.47)
- * lib/net/imap.rb (Net::IMAP::PlainAuthenticator): added a new class
- to support the PLAIN authentication mechanism. Thanks, Benjamin
- Stiglitz.
+ * lib/fileutils.rb (traverse, remove_dir): untaint trasted
+ objects. (backportted from HEAD, 1.46)
Sat Dec 25 01:28:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * io.c (rb_f_select): [ruby-dev:25312]
+ * io.c: cancel io_reopen() change on Dec. 24th.
+
+ * dln.c: use <dlfcn.h> for NetBSD. [ruby-dev:25313]
+
+ * io.c (rb_f_select): IO list could be altered. [ruby-dev:25312]
+
+Fri Dec 24 23:51:48 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * bcc32/Makefile.sub: bcc32 should use RTL dll (backport from HEAD)
+ [ruby-dev:25306]
+
+ * win32/win32.[ch]: ditto.
Fri Dec 24 23:27:18 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/image.rb: TkPhotoImage#cget bug fix
-Fri Dec 24 03:06:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Dec 24 18:39:25 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * win32/win32.[ch]: failed to compile on bcc32 (and probably wince)
+ [ruby-dev:25306]
+
+Fri Dec 24 02:52:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (io_reopen, rb_io_reopen): prohibit to change access mode for
special IO ports. [ruby-dev:25225]
- * io.c (next_argv): reduce use of stdio.
-
Fri Dec 24 02:22:53 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/syck/rubyext.c (rb_syck_io_str_read): [ruby-core:03973]
+
* ext/syck/rubyext.c (syck_loader_transfer): check type conversion.
* ext/syck/rubyext.c (syck_parser_assign_io, rb_new_syck_node): duck
@@ -12214,20 +7825,11 @@ Fri Dec 24 01:21:00 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib/blt/tile/*.rb: ditto
-Thu Dec 23 23:43:24 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Dec 23 23:36:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * process.c (proc_setgroups): check if the argument length is
+ * process.c (proc_setgroups): check if the argument lenght is
modified. fixed: [ruby-dev:25285]
- * process.c (SIZEOF_RLIM_T): err if size of rlim_t is not set.
-
-Thu Dec 23 19:08:41 2004 Tanaka Akira <akr@m17n.org>
-
- * rubyio.h: rename FMODE_UNSEEKABLE to FMODE_DUPLEX.
-
- * io.c (io_check_tty): extracted function to set FMODE_LINEBUF and
- FMODE_DUPLEX.
-
Thu Dec 23 13:13:33 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: define TclTkLib::COMPILE_INFO and
@@ -12239,6 +7841,10 @@ Thu Dec 23 13:13:33 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb: define Tk::RELEASE_DATE
+Thu Dec 23 09:38:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_reopen): restore exact mode. fixed: [ruby-core:04003]
+
Thu Dec 23 00:16:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (bsdi): use $(CC) for LDSHARED. fixed [ruby-dev:25270]
@@ -12253,49 +7859,41 @@ Wed Dec 22 08:34:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/dl/sym.c (rb_dlsym_initialize): extract internal pointers after
all argument conversion. fixed: [ruby-dev:25271]
-Tue Dec 21 16:15:21 2004 Michael Neumann <mneumann@ruby-lang.org>
-
- * lib/xmlrpc/client.rb: use "" instead of "." if prefix argument is
- nil in proxy methods. nil is default value.
-
- * test/xmlrpc/test_webrick_server.rb, test/xmlrpc/webrick_testing.rb:
- use threads instead of forking. this should fix issue #1208
- (http://rubyforge.org/tracker/?func=detail&atid=1698&aid=1208&group_id=426).
- removed testing of SSL enabled servlet as this hangs.
-
-Wed Dec 22 00:05:10 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Wed Dec 22 00:08:01 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/soap/*, test/soap/*, sample/soap/authheader/*: eval cleanup.
-Tue Dec 21 22:07:41 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_asn1.c (ossl_asn1_decode_all): use rb_str_new4
- to avoid SEGV.
+Tue Dec 21 22:07:33 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode,
ossl_asn1_decode_all): temporary value should be marked volatile.
-Tue Dec 21 12:42:34 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Tue Dec 21 14:40:02 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode):
- use rb_str_new4 to avoid SEGV. fix [ruby-dev:25261]
+ * ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode,
+ ossl_asn1_decode_all): use rb_str_new4 to avoid SEGV.
+ fix [ruby-dev:25261]
* test/openssl/test_asn1.rb: add tests for OpenSSL::ASN1.
+Tue Dec 21 12:22:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (io_reopen): keep duplex pipe in correct mode for exception
+ safeness. fixed: [ruby-dev:25152]
+
Tue Dec 21 12:10:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/grid.rb: rescue bug of 'grid configure' on Tcl/Tk8.3-
-Mon Dec 20 22:52:29 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Tue Dec 21 00:53:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * added samples for the previous soap4r's commit.
+ * ext/openssl/ossl_asn1.c (ossl_asn1_traverse): [ruby-dev:25261]
-Mon Dec 20 22:56:39 2004 Tanaka Akira <akr@m17n.org>
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode): ditto.
- * gc.c (set_stack_end): gcc noinline attribute is available since
- gcc-3.1.
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode_all): ditto.
-Mon Dec 20 22:40:31 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Mon Dec 20 23:22:26 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* added files:
* lib/soap/mapping/wsdl*.rb
@@ -12309,6 +7907,8 @@ Mon Dec 20 22:40:31 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/soap/*
* test/wsdl/*
* test/xsd/*
+ * sample/soap/*
+ * sample/sdl/*
* summary
* imported from the soap4r repository. Version: 1.5.3-ruby1.8.2
@@ -12322,14 +7922,12 @@ Mon Dec 20 22:40:31 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* HTTP client/server gzipped content encoding support.
* improved WSDL schema definition support; still is far from
- complete, but is making step by step improvement.
-
-Mon Dec 20 14:45:19 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+ complete, but is making step by step improovement.
- * lib/net/https.rb: delete descriptions about key_file and cert_file.
- fixed: [ruby-dev:25243]
+Mon Dec 20 22:56:39 2004 Tanaka Akira <akr@m17n.org>
- * ext/openssl/lib/net/telnets.rb: ditto.
+ * gc.c (stack_end_address): gcc noinline attribute is available since
+ gcc-3.1.
Mon Dec 20 14:07:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -12341,14 +7939,21 @@ Mon Dec 20 14:07:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/panedwindow.rb: ditto
-Mon Dec 20 13:51:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+Mon Dec 20 12:47:13 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/lib/net/https.rb,protocols.rb,telnets.rb: delete
+ doc and code about SSLContext#{key_file,cert_file}.
+ fixed: [ruby-dev:25243]
+
+Mon Dec 20 12:42:17 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/socket/socket.c (sock_s_getservbyport): [ruby-talk:124072]
+ * io.c (io_fwrite): workaround for MSVCRT's bug.
+ fixed: [ruby-core:03982]
-Mon Dec 20 10:51:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Dec 20 11:21:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (special_local_set): prevent the parser object from GC.
- fixed: [ruby-dev:25252]
+ * io.c (rb_io_eof): check if closed before clearerr().
+ fixed: [ruby-dev:25251]
Mon Dec 20 03:30:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -12359,10 +7964,40 @@ Mon Dec 20 01:51:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* struct.c (make_struct): [ruby-dev:25249]
-Mon Dec 20 00:16:54 2004 Kouhei Sutou <kou@cozmixng.org>
+Mon Dec 20 00:28:20 2004 Kouhei Sutou <kou@cozmixng.org>
- * lib/rexml/encodings/SHIFT_JIS.rb: fixed LoadError bug.
- [ruby-core:3958]
+ * lib/rexml/encodings/SHIFT-JIS.rb: backported from CVS HEAD.
+
+ * lib/rexml/encodings/SHIFT_JIS.rb: ditto.
+
+Sun Dec 19 17:19:48 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_x509store.c
+ (ossl_x509store_set_time): add OpenSSL::X509::Store#time=.
+ (ossl_x509stctx_set_time): add OpenSSL::X509::StoreContext#time=.
+
+ * test/openssl/ossl_x509store.rb: test certificate validity times.
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_s): add optional
+ second argument to specify the output format (see also
+ X509_NAME_print_ex).
+
+ * ext/openssl/ossl_x509name.c (ossl_x509name_init): new constants:
+ OpenSSL::X509::Name::COMPAT, OpenSSL::X509::Name::RFC2253,
+ OpenSSL::X509::ONELINE, OpenSSL::X509::MULTILINE.
+
+ * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name::RFC2253DN):
+ new module to provide the parse for RFC2253 DN format.
+
+ * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name.parse_rfc2253):
+ new method to parse RFC2253 DN format.
+
+ * test/openssl/ossl_x509name.rb: add tests about RFC2253 DN.
+
+ * text/openssl/ssl_server.rb: try to listen ports from 20443 to 20542
+ while EADDRINUSE is raised.
+
+ * all changes in this entry are backport from 1.9.
Sun Dec 19 17:24:59 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -12384,7 +8019,7 @@ Sat Dec 18 16:36:23 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/zlib/zlib.c (rb_deflate_s_deflate, rb_inflate_s_inflate):
disallow interrupt by type conversion. fixed: [ruby-dev:25226]
-Sat Dec 18 15:09:02 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Sat Dec 18 15:16:41 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/webrick/httpauth.rb,
lib/webrick/httpauth/{basicauth.rb,digestauth.rb}: use
@@ -12395,12 +8030,10 @@ Sat Dec 18 10:51:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (dir_open_dir): new function. [ruby-dev:25242]
- * io.c (rb_f_open): add type check for return value from to_open.
-
-Fri Dec 17 16:44:26 2004 Tanaka Akira <akr@m17n.org>
+Fri Dec 17 18:07:01 2004 Shugo Maeda <shugo@ruby-lang.org>
- * configure.in (ac_cv_sizeof_rlim_t): set 8 for BSD/OS.
- Reported by OHARA Shigeki. [ruby-dev:25236]
+ * test/readline/test_readline.rb: fix for BSD. Thanks, GOTOU Yuuzou.
+ fixed: [ruby-dev:25218]
Fri Dec 17 16:28:12 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -12438,27 +8071,45 @@ Fri Dec 17 16:28:12 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/textwindow.rb: wrong gravity of text mark for
embedded window
+Fri Dec 17 13:50:00 2004 Akiyoshi, Masamichi <akiyoshi@hp.com>
+
+ * vms/vmsruby_private.c, vms/vmsruby_private.h: private routines
+ for VMS port are added.
+
+ * eval.c (ruby_init): change to call VMS private intialization routine.
+
Fri Dec 17 13:33:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/cgi/session.rb (CGI::Session#initialize): control adding
session_id hidden fields. fixed: [ruby-talk:123850]
-Fri Dec 17 00:01:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Dec 16 23:25:25 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/drb/drb.rb, lib/drb/ssl.rb: backported from CVS HEAD.
+ [druby-ja:101]
+
+ * test/drb/test_drb.rb: adjust and reduce sleep (backported from
+ CVS HEAD.)
- * eval.c (rb_proc_arity, rb_node_arity, rb_mod_method_arity,
- rb_obj_method_arity): new functions to obtain method arity.
- [ruby-dev:25143]
+Thu Dec 16 18:44:58 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-Thu Dec 16 23:31:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should wait
+ for reading request till data arrive. [ruby-talk:121068]
- * lib/mkmf.rb (create_makefile): create RUBYARCHDIR also when no extension
- is installed. fixed: [ruby-dev:25215]
+ * lib/webrick/server.rb (WEBrick::GenericServer#start_thread):
+ should log about all accepted socket. [ruby-core:03962]
-Thu Dec 16 22:36:57 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+ * lib/webrick/accesslog.rb (WEBrick::AccessLog#setup_params):
+ "%%" and "%u" are supported. [webricken:135]
- * test/drb/test_drb.rb: adjust and reduce sleep.
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#check_filename):
+ :NondisclosureName is acceptable if it is Enumerable.
-Thu Dec 16 18:37:08 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+ * lib/webrick/config.rb (WEBrick::Config::FileHandler):
+ default value of :NondisclosureName is [".ht*", "*~"].
+
+Thu Dec 16 18:36:52 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl.c (ossl_raise): refine message format.
@@ -12497,64 +8148,55 @@ Thu Dec 16 16:03:50 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib/*: ditto
-Thu Dec 16 04:02:28 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/extconf.rb: bison is not needed if ripper.c exists.
- [ruby-dev:25191]
+Thu Dec 16 03:14:28 2004 Minero Aoki <aamine@loveruby.net>
-Thu Dec 16 03:27:10 2004 Minero Aoki <aamine@loveruby.net>
+ * lib/net/http.rb (basic_encode): return value of pack('m') may
+ include multiple CR/LFs. Backported from main trunk (rev 1.112).
+ [ruby-dev:25212]
- * lib/net/http.rb: remove junk.
+Thu Dec 16 00:33:37 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-Thu Dec 16 00:57:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * hash.c (Init_Hash): remove custom "hash" and "eql?".
- * ext/syck/rubyext.c (rb_syck_io_str_read): [ruby-core:03973]
+Wed Dec 15 18:57:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-Thu Dec 16 00:43:29 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+ * lib/set.rb (Set::eql): wrong definition. [ruby-dev:25207]
- * lib/drb/drb.rb: changed default binded address family to use an
- available address family of host name. [druby-ja:101]
+Wed Dec 15 18:48:42 2004 Shugo Maeda <shugo@ruby-lang.org>
- * lib/drb/ssl.rb: ditto
+ * ext/curses/curses.c (window_subwin): call NUM2INT() before
+ GetWINDOW(). (backported from CVS HEAD)
-Wed Dec 15 17:47:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Wed Dec 15 17:03:50 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/webrick/server.rb (WEBrick::GenericServer#start_thread):
- should log about all accepted socket. [ruby-core:03962]
-
- * lib/webrick/accesslog.rb (WEBrick::AccessLog#setup_params):
- "%%" and "%u" are supported. [webricken:135]
+ * win32/win32.[ch] (rb_w32_isatty): new function to replace MSVCRT's
+ isatty because it never sets errno. (backported from CVS HEAD)
- * lib/webrick/httpservlet/filehandler.rb
- (WEBrick::HTTPServlet::FileHandler#check_filename):
- :NondisclosureName is acceptable if it is Enumerable.
+Wed Dec 15 15:39:32 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * lib/webrick/config.rb (WEBrick::Config::FileHandler):
- default value of :NondisclosureName is [".ht*", "*~"].
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_a): avoid SEGV
+ (rollback the previous commit).
Wed Dec 15 16:10:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* object.c (rb_obj_id_obsolete): warn always.
+ * eval.c (rb_enable_super): ditto.
+
Wed Dec 15 15:31:02 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/set.rb (Set#==): [ruby-dev:25206]
-Wed Dec 15 14:32:18 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Dec 15 14:22:10 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (rb_w32_fdisset): check whether the handle is valid.
+ fixed: [ruby-core:03959]
Wed Dec 15 10:30:37 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/openssl/ossl_digest.c (ossl_digest_initialize): [ruby-dev:25198]
-Tue Dec 14 19:17:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * utf8.c (utf8_is_mbc_ambiguous): [ruby-talk:123561]
-
- * utf8.c (utf8_mbc_to_normalize): ditto.
-
-Tue Dec 14 17:08:15 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Dec 14 17:10:09 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (rb_w32_close): need to reset osfhnd().
@@ -12568,36 +8210,27 @@ Tue Dec 14 12:36:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/cgi/session.rb (CGI::Session::initialize): generate new
session if given session_id does not exist. [ruby-list:40368]
-Tue Dec 14 08:47:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (Init_eval): should mark ruby_eval_tree. [ruby-dev:25189]
-
Mon Dec 13 18:13:52 2004 Tanaka Akira <akr@m17n.org>
- * gc.c (set_stack_end): new function to obtain stack end address.
- set_stack_end obtains a stack end address by an address of local
- variable in the function.
- (SET_STACK_END, STACK_END): use set_stack_end. don't use alloca.
+ * gc.c (stack_end_address): new function to obtain stack end address.
+ stack_end_address calls __builtin_frame_address(0) to obtain the
+ frame pointer of a stack frame of stack_end_address. The address
+ is the stack pointer of the caller's stack frame.
+ (SET_STACK_END): use stack_end_address.
This makes the conservative garbage collector to scan a stack frame
of the garbage_collect function itself. This is required because
callee-save registers may be stored in the frame.
[ruby-dev:25158]
-Mon Dec 13 02:45:51 2004 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/curses/curses.c (window_subwin): call NUM2INT() before
- GetWINDOW(). fixed: [ruby-dev:25161]
-
Mon Dec 13 00:58:02 2004 Tanaka Akira <akr@m17n.org>
* lib/pathname.rb (cleanpath_aggressive): make it private.
(cleanpath_conservative): ditto.
Suggested by Daniel Berger. [ruby-core:3914]
-Sun Dec 12 21:32:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Dec 12 20:06:38 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * test/ruby/test_super.rb (TestSuper#test_define_method): now methods
- from procs can call super.
+ * lib/drb/drb.rb: backported from CVS HEAD.
Sun Dec 12 10:35:10 2004 Dave Thomas <dave@pragprog.com>
@@ -12609,7 +8242,14 @@ Sun Dec 12 10:14:03 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/rdoc.rb (RDoc::RDoc::parse_files): Never exclude files
explicitly given on the command line.
-Sat Dec 11 21:10:16 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sun Dec 11 23:54:07 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/*: update to support libraries in ActiveTcl8.4.12.0
+ (see ext/tk/ChangeLog.tkextlib).
+
+ * ext/tk/sample/scrollframe.rb: add a new sample.
+
+Sat Dec 11 20:12:21 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb: add DRbRemoteError. [ruby-list:40348],
[ruby-list:40390]
@@ -12618,27 +8258,41 @@ Sat Dec 11 21:10:16 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* test/drb/ut_drb.rb: ditto.
-Sat Dec 11 13:08:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Dec 11 15:38:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/jcode.rb (String::succ): [ruby-dev:25156]
- * sample/optparse/subcommand.rb: a sample for sub commands like
- cvs. contributed by Minero Aoki.
+Sat Dec 11 12:41:55 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Dec 10 08:39:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (run_trap_eval): prototype; avoid VC++ warnings.
+
+ * ext/socket/getaddrinfo.c: fix typo. fixed: [ruby-core:03947]
+
+ * win32/win32.c: need to include dln.h.
+
+Sat Dec 11 00:10:18 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (io_reopen): [ruby-dev:25150]
+
+Fri Dec 10 08:39:27 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/socket/socket.c (sock_listen): get OpenFile just before calling
- listen(2).
+ listen(2). fixed: [ruby-dev:25149]
-Thu Dec 9 16:28:35 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Dec 9 17:00:00 2004 Akiyoshi, Masamichi <akiyoshi@hp.com>
- * ext/sdbm/init.c (GetDBM): typo.
+ * ext/socket/socket.c, ext/socket/getaddrinfo.c: port to VMS
-Thu Dec 9 16:21:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Thu Dec 9 16:31:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/webrick/cgi.rb (WEBrick::CGI#setup_header): avoid
- SecurityError. [ruby-dev:24970]
+ * ext/sdbm/init.c (GetDBM): typo.
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should wait
- for reading request till data arrive. [ruby-talk:121068]
+Thu Dec 9 16:05:00 2004 Akiyoshi, Masamichi <akiyoshi@hp.com>
+
+ * defines.h: change path of vms.h
+ * vms/vms.h: delete reference for snprintf()
+ * vms/config.h: new file
+ * vms/config.h_in: deleted
Thu Dec 9 14:38:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -12647,10 +8301,6 @@ Thu Dec 9 14:38:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (rb_str_dump): not escape # which isn't a substitution.
-Thu Dec 9 12:31:53 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * io.c (pipe_open): should set prog if argc != 0.
-
Thu Dec 9 10:54:36 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/dbm/dbm.c (fdbm_select): [ruby-dev:25132]
@@ -12659,11 +8309,6 @@ Thu Dec 9 10:54:36 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/gdbm/gdbm.c: ditto.
-Thu Dec 9 10:19:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/socket/test_socket.rb (test_setsockopt): use SO_LINGER instead
- of SO_BINDTODEVICE. fixed: [ruby-dev:25133]
-
Thu Dec 9 03:08:36 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c (ip_init): set root-win title to "ruby" when
@@ -12718,174 +8363,44 @@ Wed Dec 8 23:54:29 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/template/html/html.rb (RDoc::Page): Typo
meant that h2 tag was invisible.
-Wed Dec 8 22:10:02 2004 Tanaka Akira <akr@m17n.org>
-
- * rubyio.h, io.c, ext/dl/dl.c, ext/pty/pty.c, ext/socket/socket.c:
- create FILE object only when required: popen(3) and DL's IO#to_ptr.
- [ruby-dev:25122]
-
- * io.c (rb_io_binmode): use setmode for Human68k. [ruby-dev:25121]
-
-Wed Dec 8 20:13:06 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * process.c (rb_spawn): support for DJGPP.
-
- * lib/mkmf.rb (VPATH): specify the implicit path separator for DJGPP.
-
-Wed Dec 8 17:48:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (proc_invoke): merge Guy Decoux's argument preserve
- patch in [ruby-core:03874].
-
-Wed Dec 8 17:37:33 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Dec 8 21:56:31 2004 Kouhei Sutou <kou@cozmixng.org>
- * win32/win32.c (rb_w32_pipe_exec): need to close original socket
- handle.
+ * lib/rss, test/rss, sample/rss: backported from CVS HEAD.
Wed Dec 8 14:31:36 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * sprintf.c (rb_f_sprintf): [ruby-dev:25104]
-
-Wed Dec 8 13:49:46 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_pipe_exec): must close original handle
- before exec. fixed: [ruby-dev:25112]
-
-Wed Dec 8 11:46:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (string_content): get rid of segfault at empty evstr.
- fixed: [ruby-dev:25113]
-
-Wed Dec 8 03:26:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_bio.c (ossl_obj2bio): should not use fptr->f.
- [ruby-dev:25101]
-
-Wed Dec 8 03:26:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * runruby.rb: prepend LIBRUBY_SO to LD_PRELOAD as well as rubytest.rb.
-
-Wed Dec 8 01:35:44 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (is_socket): reorder of function definitions.
+ * io.c (io_fwrite): change dereference for cosmetic reason.
-Wed Dec 8 00:44:31 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (pipe_open): win32 bidirectional pipe support.
-
- * win32/win32.[ch] (rb_w32_pipe_exec): ditto.
-
- * win32/win32.[ch] (socketpair): new function. POSIX socketpair
- emulation.
-
- * win32/win32.c (socketpair_internal): ditto.
-
-Wed Dec 8 00:25:07 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rss/test_version.rb: added version check test.
- [ruby-dev:25053]
-
-Tue Dec 7 15:40:38 2004 Tanaka Akira <akr@m17n.org>
-
- * io.c (io_fwrite): avoid context switch before writing to stderr.
- [ruby-dev:25080]
-
- * rubyio.h: refine deprecated declaration.
-
- * configure.in, file.c, io.c: remove useless check: fseeko, etc.
-
-Tue Dec 7 13:42:07 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * dir.c (dir_s_mkdir): win32 special processing doesn't need any
- longer.
+ * sprintf.c (rb_f_sprintf): [ruby-dev:25104]
- * win32/win32.[ch] (rb_w32_mkdir): new function. POSIX.1 compatible
- interface.
+Tue Dec 7 19:08:00 2004 Akiyoshi, Masamichi <akiyoshi@hp.com>
- * win32/win32.[ch] (rb_w32_rmdir): new function.
+ * io.c (io_fwrite): fix offset incrementation (for VMS and Human68k)
Tue Dec 7 00:27:37 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* process.c (proc_setgroups): [ruby-dev:25081]
-Mon Dec 6 23:07:57 2004 Tanaka Akira <akr@m17n.org>
-
- * configure.in: check -lsocket for socketpair and shutdown.
- reported by Ville Mattila. [ruby-core:03903]
-
-Mon Dec 6 23:00:45 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * configure.in (ac_cv_sizeof_rlim_t): setup for DJGPP.
-
- * io.c (is_socket, shutdown): define dummy macros for DJGPP.
-
- * process.c: use SIZEOF_RLIM_T instead of HAVE_RLIM_T for DJGPP.
-
-Mon Dec 6 21:19:40 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (is_socket): fix typos. [ruby-core:03900]
-
-Mon Dec 6 20:13:28 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (is_socket): new function.
-
- * io.c (rb_io_close_read, rb_io_close_write): use is_socket().
-
- * io.c (rb_io_fptr_finalize): need to check fptr->f before calling
- rb_io_fptr_cleanup().
-
- * io.c (pipe_open): win32 pipe support (experimental).
-
- * win32/win32.[ch] (rb_w32_pipe_exec): return file descriptors
- instead of FILE structure objects.
-
- * win32/win32.[ch] (rb_w32_is_socket): new function.
-
-Mon Dec 6 19:40:40 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * Makefile.in (.y.c): simplify the rule.
-
Mon Dec 6 18:08:10 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* re.c (rb_reg_eqq): document fix. [ruby-talk:122541]
-Mon Dec 6 17:49:30 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * eval.c (run_trap_eval): add prototype for Microsoft compiler.
+Mon Dec 6 17:19:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Dec 6 17:32:38 2004 Tanaka Akira <akr@m17n.org>
+ * rubysig.h (TRAP_BEG, TRAP_END): safe errno around CHECK_INTS.
+ (backported from CVS HEAD) [ruby-dev:24993]
- * rubyio.h, intern.h, io.c, file.c, process.c, ext/socket/socket.c,
- ext/pty/pty.c, ext/io/wait/wait.c, ext/openssl/ossl_ssl.c:
- Use own buffering mechanism instead of stdio. [ruby-dev:25056]
+Mon Dec 6 10:18:17 2004 Dave Thomas <dave@pragprog.com>
- * io.c, ext/stringio/stringio.c, test/ruby/ut_eof.rb:
- EOF flag removed.
-
-Mon Dec 6 17:15:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/socket/test_socket.rb (TestBasicSocket#test_setsockopt):
- BasicSocket#setsockopt dumps core. [ruby-dev:25039]
-
- * test/socket/test_tcp.rb (TestTCPSocket#test_recvfrom):
- TCPSocket#recvfrom dumps core. [ruby-dev:24705]
-
- * test/socket/test_udp.rb (TestUDPSocket#test_connect):
- UDPSocket#connect dumps core. [ruby-dev:25045]
-
- * test/socket/test_udp.rb (TestUDPSocket#test_bind):
- UDPSocket#bind dumps core. [ruby-dev:25057]
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::look_for_directives_in):
+ Oops - 1.8 doesn't have String#clear
Mon Dec 6 09:59:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * io.c (io_fread): take VALUE argument.
-
* ext/socket/socket.c (sock_connect): use rb_str_new4().
[ruby-dev:25052]
- * eval.c (rb_yield_0): [ruby-dev:25051]
-
-Mon Dec 6 01:32:31 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Dec 6 01:42:08 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_pkey_rsa.c (ossl_rsa_public_encrypt,
ossl_rsa_public_decrypt, ossl_rsa_private_encrypt,
@@ -12906,11 +8421,6 @@ Sun Dec 5 19:39:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/optparse.rb (OptionParser#order!): ignore case only for long
option. [ruby-dev:25048]
-Sun Dec 5 00:54:32 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * mkconfig.rb: setup library paths before requiring library.
- [ruby-core:03892]
-
Sat Dec 4 22:54:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (io_write): remove rb_str_locktmp(). [ruby-dev:25050]
@@ -12934,29 +8444,10 @@ Sat Dec 4 22:54:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* hash.c (rb_hash_hash): should provide "hash" method where "eql?"
is redefined. [ruby-talk:122482]
-Sat Dec 4 21:29:05 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb: (In previous commit) new method chown.
-
- * lib/fileutils.rb: (In previous commit) new method chown_R.
+Sat Dec 4 14:54:52 2004 WATANABE Hirofumi <eban@ruby-lang.org>
- * lib/fileutils.rb: (In previous commit) new method chmod_R
- wrongly added. Removed now.
-
-Sat Dec 4 20:45:52 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (mkdir, mkdir_p): should chmod explicitly.
- [ruby-core:03881]
-
-Sat Dec 4 18:54:09 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb: removed empty lines from output.
-
-Sat Dec 4 18:49:09 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb (RSS::VERSION): 0.1.1 -> 0.1.2
-
- * lib/rss/rss.rb: #item=/#set_item and so on are obsolete.
+ * eval.c (proc_invoke): use volatile `tmp' rather than `args'.
+ [ruby-core:03882]
Sat Dec 4 14:28:56 2004 Dave Thomas <dave@pragprog.com>
@@ -12970,13 +8461,48 @@ Sat Dec 4 14:28:56 2004 Dave Thomas <dave@pragprog.com>
The lines before :section: are removed, and identical lines at the end are
also removed if present.
+Sat Dec 4 03:33:45 2004 Shugo Maeda <shugo@ruby-lang.org>
+
+ * ext/readline/readline.c: check $SAFE. (backported from CVS HEAD)
+
+ * test/readline/test_readline.rb: added tests for readline.
+ (backported from CVS HEAD)
+
+Sat Dec 4 02:24:00 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * ext/nkf/nkf.c: add constant NKF::VERSION
+
+ * ext/nkf/nkf.c(guess): this becomes an alias of guess2
+
+ * ext/nkf/test.rb(mime_out2): add --no-cp932
+
+ * ext/nkf/nkf-utf8/nkf.c: original nkf2 revision 1.47
+
Sat Dec 4 00:35:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/socket/socket.c (bsock_setsockopt): [ruby-dev:25039]
-Fri Dec 3 12:25:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Dec 3 18:57:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/ostruct.rb: 1.9 marshaling support back-ported.
+ [ruby-core:03871]
+
+Fri Dec 3 13:45:20 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_invoke): copy arguments to frame.argv.
+ [ruby-core:03861]
- * st.h: fix prototype for C++.
+Fri Dec 3 12:25:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * st.h: fix prototypes.
+
+Fri Dec 3 00:21:05 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * object.c (convert_type): use rb_respond_to() again.
+ [ruby-dev:25021]
+
+ * eval.c (rb_respond_to): funcall respond_to? if it's redefined.
+ [ruby-dev:25021]
Fri Dec 3 01:55:24 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -12996,25 +8522,6 @@ Fri Dec 3 01:55:24 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/demos-jp/widget: ditto.
-Fri Dec 3 00:21:05 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (proc_invoke): prepare to pass a block from "call" method
- to a Proc generated by Method#to_proc. [ruby-dev:25031]
-
- * eval.c (rb_yield_0): actually passes a block given to "call".
-
- * object.c (convert_type): use rb_respond_to() again. this fix is
- based on [ruby-dev:25021]
-
- * eval.c (rb_respond_to): funcall respond_to? if it's redefined.
- [ruby-dev:25021]
-
-Thu Dec 2 15:13:53 2004 Michael Neumann <mneumann@ruby-lang.org>
-
- * test/xmlrpc/test_parser.rb, test/xmlrpc/data/*.expected: Expected
- values are now stored in YAML instead of using #inspect. This fixes
- false hash order.
-
Fri Dec 3 00:11:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (rb_file_initialize): [ruby-dev:25032]
@@ -13027,16 +8534,12 @@ Thu Dec 2 16:41:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_callcc, rb_cont_call): prohibit calling from different
signal contexts. [ruby-dev:25022]
-Thu Dec 2 10:45:02 2004 Shugo Maeda <shugo@ruby-lang.org>
-
- * test/readline/test_readline.rb: fix for NetBSD.
-
Thu Dec 2 09:57:24 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/ostruct.rb (OpenStruct::Marshaler): OpenStruct can be
marshaled again. [ruby-core:03862]
-Thu Dec 2 09:30:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Dec 2 09:30:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (thread_mark): mark thread group. [ruby-dev:25020]
@@ -13046,56 +8549,35 @@ Thu Dec 2 07:57:16 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (rb_io_ctl): [ruby-dev:25019]
-Wed Dec 1 06:13:00 2004 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf.c: add constant NKF::VERSION
-
- * ext/nkf/nkf.c(guess): this becomes an alias of guess2
-
- * ext/nkf/test.rb: add --no-cp932
-
- * ext/nkf/nkf-utf8/nkf.c: original nkf2 revision 1.47
-
Wed Dec 1 02:21:02 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* signal.c (sighandler): call handler immediately only for default
handlers. [ruby-dev:25003]
-Tue Nov 30 23:49:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (pipe_open): errno should be preserved for rb_sys_fail() when
- fork failed.
-
-Tue Nov 30 16:18:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+Tue Nov 30 23:38:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (io_fread): need not to null terminate. [ruby-dev:24998]
- * eval.c (rb_eval): should check previous frame for ZSUPER.
-
* io.c (read_all): remove unnecessary rb_str_resize().
- [ruby-dev:24996]
+ [ruby-dev:24996] (backported from CVS HEAD)
* io.c (io_readpartial): ditto.
* io.c (io_read): ditto.
-Tue Nov 30 14:58:33 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+Tue Nov 30 16:18:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * instruby.rb (install): add arguments explicitly to "super".
+ * io.c (io_fread): need not to null terminate. [ruby-dev:24998]
-Tue Nov 30 00:49:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * io.c (read_all): remove unnecessary rb_str_resize().
+ [ruby-dev:24996]
- * eval.c (PUSH_FRAME): flags should have been initialized.
+ * io.c (io_read): ditto.
- * eval.c (rb_eval): [ruby-core:03856]
+Tue Nov 30 00:49:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (rb_io_sysread): use temporary lock. [ruby-dev:24992]
-Tue Nov 30 00:12:57 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * regparse.c: now handles many alternatives (over 500000)
- in regexp. [ruby-dev:24773]
-
Mon Nov 29 16:06:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/stringio/stringio.c (strio_write): insufficiently filled string
@@ -13113,19 +8595,10 @@ Mon Nov 29 15:22:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* test/io/nonblock/test_flush.rb: abandon tests when io/nonblock is
not supported.
-Mon Nov 29 13:37:54 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (fptr_finalize): must not use FILE after fclose().
- [ruby-dev:24985]
-
-Mon Nov 29 13:13:13 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (CreateChild): push back the last space before next
- loop because CharNext() eats it.
-
Mon Nov 29 03:08:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * object.c (convert_type): [ruby-core:03845]
+ * object.c (convert_type): direct call conversion methods for the
+ performance. [ruby-core:03845]
* eval.c (rb_funcall_rescue): new function.
@@ -13133,57 +8606,30 @@ Mon Nov 29 03:08:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* object.c (rb_Integer): ditto.
- * eval.c (get_backtrace): no conversion for nil.
-
* parse.y (reduce_nodes): empty body should return nil.
-Mon Nov 29 01:18:18 2004 Tanaka Akira <akr@m17n.org>
-
- * io.c (rb_io_check_writable): call io_seek regardless of
- NEED_IO_SEEK_BETWEEN_RW. [ruby-dev:24986]
-
-Sun Nov 28 15:57:58 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb (RSS::Element#tag): not use block_given? for
- working with ruby 1.6 again.
-
- * lib/rss/{0.9,2.0,trackback}.rb, lib/rss/maker/base.rb:
- undef -> remove_method for working with ruby 1.6 again.
-
-Sun Nov 28 15:51:40 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb (RSS::NotSetError): added.
-
- * lib/rss/maker/{1.0,0.9,2.0}.rb: changed RSS Maker to raise
- RSS::NotSetError if required values of maker.channel are not
- set. [ruby-talk:120061]
-
- * test/rss/test_maker_{1.0,0.9,2.0}.rb: changed tests to check RSS
- Maker raises or not.
-
-Sun Nov 28 12:14:47 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * regparse.c (fetch_token): fixed test failure on HP-UX ia64
- ([ruby-dev:24859]).
+ * string.c (rb_str_aset): the original string should not be
+ affected by modifying duplicated string. [ruby-dev:24981]
-Sun Nov 28 12:08:15 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+Mon Nov 29 13:57:38 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * regparse.c, test/ruby/test_regexp.rb: fixed problem with UTF-8
- characters that have U+00FE or invalid characters.
+ * win32/win32.c (CreateChild): search executable file if no program
+ name given. (backported from CVS HEAD)
-Sun Nov 28 12:07:04 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+Mon Nov 29 13:37:54 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * regexec.c, test/ruby/test_regexp.rb: fixed segmentation fault
- ([ruby-dev:24887]).
+ * io.c (fptr_finalize): must not use FILE after fclose().
+ [ruby-dev:24985]
-Sun Nov 28 12:05:48 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+Mon Nov 29 13:16:31 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * regcomp.c, regint.h: fixed PLATFORM_UNALIGNED_WORD_ACCESS
- problem ([ruby-dev:24802] and [ruby-core:3733])
+ * win32/win32.c (CreateChild): push back the last space before next
+ loop because CharNext() eats it.
-Sat Nov 27 23:43:39 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+Mon Nov 29 01:18:18 2004 Tanaka Akira <akr@m17n.org>
- * io.c (rb_io_initialize): [ruby-dev:24972]
+ * io.c (rb_io_check_writable): call io_seek regardless of
+ NEED_IO_SEEK_BETWEEN_RW. [ruby-dev:24986]
Sat Nov 27 21:43:39 2004 Tanaka Akira <akr@m17n.org>
@@ -13195,36 +8641,10 @@ Sat Nov 27 21:43:39 2004 Tanaka Akira <akr@m17n.org>
(rb_io_fwrite): wrapper for io_fwrite now.
(io_write): call io_fwrite instead of rb_io_fwrite.
-Sat Nov 27 17:43:21 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/{0.9,1.0,2.0,trackback,xml-stylesheet}.rb: added
- #setup_maker.
-
- * test/rss/test_setup_maker_*.rb: added tests for #setup_maker.
-
- * lib/rss/maker/base.rb(RSS::Maker::Items#max_size=): supported
- output item size limitation.
-
- * sample/rss/blend.rb: added sample for RSS Maker.
-
-Sat Nov 27 17:41:35 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/maker/0.9.rb: supported RSS::Maker.make("0.91"). Now,
- "0.9" is just alias of "0.91."
-
- * test/rss/test_maker_0.9.rb: make("0.9") -> maker("0.91").
-
- * test/rss/test_to_s.rb: ditto.
-
-Sat Nov 27 17:21:30 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * sample/rss/list_description.rb: untabified.
-
- * sample/rss/rss_recent.rb: ditto.
-
Sat Nov 27 14:44:15 2004 Kent Sibilev <ksibilev@bellsouth.net>
- * lib/cgi/session.rb (CGI::Session::initialize): [ruby-core:03832]
+ * lib/cgi/session.rb (CGI::Session::initialize): create_new_id is
+ now a instance method. [ruby-core:03832]
Sat Nov 27 09:41:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -13242,18 +8662,8 @@ Fri Nov 26 18:02:44 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib/*: some methods uses TkWindow#epath
-Fri Nov 26 14:29:39 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * io.c (rb_io_initialize): uninitialized fd was checked to see open
- mode. [ruby-dev:24963]
-
- * io.c (rb_io_initialize): uninitialized fd was used. [ruby-dev:24962]
-
Fri Nov 26 13:49:06 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * io.c (rb_io_initialize): should retrieve flags from copying file
- descriptor. [ruby-dev:24961]
-
* eval.c (method_missing): raise TypeError for classes do not
have allocators. [ruby-core:03752]
@@ -13275,17 +8685,12 @@ Thu Nov 25 20:14:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/thwait.rb (ThreadsWait#join_nowait): abnormally terminated
threads should be also processed. [ruby-talk:121320]
-Thu Nov 25 18:06:37 2004 Tanaka Akira <akr@m17n.org>
+Thu Nov 25 10:14:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: AC_CHECK_SIZEOF(rlim_t) to include stdio.h to fix
- problem with autoconf 2.52 or earlier.
- revert AC_PREREQ to 2.50.
- [ruby-core:3809]
+ * dir.c (push_braces): do not reuse buffer strings. [ruby-core:03806]
Thu Nov 25 07:59:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * configure.in: AC_PREREQ(2.53) [ruby-core:03800]
-
* io.c (read_all): stringify non-nil buffer argument, and always
taint the result. [ruby-dev:24955]
@@ -13316,12 +8721,13 @@ Tue Nov 23 00:10:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (dir_seek): use NUM2OFFT().
- * misc/ruby-mode.el (ruby-non-block-do-re): [ruby-core:03719]
+ * misc/ruby-mode.el (ruby-non-block-do-re): should not match words
+ start with block keyword and underscore. [ruby-core:03719]
Mon Nov 22 22:33:02 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::parse_require): Don't use names
- of variables or constants when parsing 'require'
+ of variables or constants when oarsing 'require'
Mon Nov 22 00:13:35 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -13331,7 +8737,7 @@ Mon Nov 22 00:13:35 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
Sat Nov 20 23:57:33 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/README (et al): Add a new directive, :section:, and
- change the output format to accommodate. :section: allows to to
+ change the output format to accomodate. :section: allows to to
group together methods, attributes, constants, etc under
headings in the output. If used, a table of contents is
generated.
@@ -13346,25 +8752,9 @@ Sat Nov 20 23:55:19 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_splice): should place index wrapping after
possible modification. [ruby-dev:24940]
-Sat Nov 20 23:25:12 2004 Minero Aoki <aamine@loveruby.net>
-
- * io.c (rb_io_getline): f.gets("") did not work. [ruby-core:03771]
-
- * test/ruby/test_io.rb (test_gets_rs): test it.
-
-Sat Nov 20 22:55:09 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * test/runner.rb (CROSS_COMPILING): need to require rbconfig.rb before
- using CROSS_COMPILNG.
-
-Sat Nov 20 20:42:42 2004 Minero Aoki <aamine@loveruby.net>
+Sat Nov 20 13:26:03 2004 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/ripper/depend: fix ripper.o dependency.
-
-Sat Nov 20 17:48:29 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * io.c (io_reopen): work around problem with Cygwin fseeko
- returning ESPIPE.
+ * ext/nkf/nkf-utf8/utf8tbl.c: original revision 1.7
Sat Nov 20 05:34:24 2004 NARUSE, Yui <naruse@ruby-lang.org>
@@ -13372,11 +8762,6 @@ Sat Nov 20 05:34:24 2004 NARUSE, Yui <naruse@ruby-lang.org>
* ext/nkf/test.rb: add test for mime encode/decode
-Sat Nov 20 01:45:04 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * test/xmlrpc/test_webrick_server.rb : move `requrie "webrick/https"'
- into #setup_http_server method to avoid soap test errors.
-
Sat Nov 20 01:37:34 2004 Johan Holmberg <holmberg@iar.se>
* eval.c (error_print): nicer traceback at interrupt.
@@ -13387,66 +8772,6 @@ Sat Nov 20 00:07:16 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (str_gsub): internal buffer should not be listed by
ObjectSpace.each_object() by String#gsub. [ruby-dev:24931]
-Fri Nov 19 22:44:43 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * lib/test/unit/collector/dir.rb: better support for -p/-x option.
-
-Fri Nov 19 17:46:56 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/maker/0.9.rb (RSS::Maker::RSS09::Image#have_required_values):
- changed /rss/channel/image to be optional. [ruby-Bugs:1047]
-
- * test/rss/test_maker_0.9.rb: added tests for the above.
-
-Fri Nov 19 17:18:17 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb (RSS::VERSION): 0.1.0 -> 0.1.1.
-
- * lib/rss: #to_s used #tag.
-
- * test/rss/test_to_s.rb: added.
-
- * lib/rss/maker.rb (RSS::Maker.make): changed API. It's not
- received modules which is used as the second argument.
-
- * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#alternate):
- changed return value type which is not String but Boolean.
-
- * lib/rss/2.0.rb (RSS::Rss::Channel#ttl): changed return value
- type which is not String but Integer.
-
- * lib/rss/0.9.rb (RSS::Rss::Channel): <skipDays> has <day>s and
- <skipHours> has <hour>s.
-
- * lib/rss/maker/0.9.rb (RSS::Maker::RSS09::Channel): ditto.
-
- * lib/rss/0.9.rb (RSS::Rss::Channel::Item): <item> has <category>s.
-
- * lib/rss/maker/2.0.rb (RSS::Maker::Rss20::Channel::Item): ditto.
-
- * lib/rss/2.0.rb (RSS::Rss::Channel): <channel> has <category>s.
-
- * lib/rss/maker/2.0.rb (RSS::Maker::RSS20::Channel): ditto.
-
- * lib/rss/trackback.rb: parent element has <trackback:about>s.
-
- * lib/rss/maker/trackback.rb: ditto.
-
-Fri Nov 19 11:10:16 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * lib/test/unit/collector/dir.rb: add support for directory name
- with -p/-x options.
-
- * test/testunit/collector/test_dir.rb: ditto.
-
- * lib/xmlrpc/datetime.rb (XMLRPC::DateTime#==): should use Array()
- instead of to_a.
-
-Fri Nov 19 10:32:36 2004 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/readline/readline.c (readline_s_set_completion_append_character):
- accept nil. [ruby-core:03765]
-
Fri Nov 19 01:20:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/cgi/session.rb (CGI::Session::FileStore::initialize): raise
@@ -13458,37 +8783,12 @@ Fri Nov 19 00:59:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (str_gsub): internal buffer should not be listed by
ObjectSpace.each_object(). [ruby-dev:24919]
-Thu Nov 18 23:42:36 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/depend: Never regenerate lib/ripper/core.rb
- automatically. [ruby-dev:24911]
-
-Thu Nov 18 20:47:24 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.[ch] (rb_w32_isatty): new function to replace MSVCRT's
- isatty because it never sets errno.
-
Thu Nov 18 18:41:08 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
* test/ruby/test_stringchar.rb (test_bang): added.
* string.c (rb_str_upcase_bang, rb_str_capitalize_bang)
- (rb_str_swapcase_bang): missing rb_str_modify().
-
-Thu Nov 18 17:05:01 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (f_rest_arg): store rest args into invisible local variable
- in order to get rid of SEGV at ZSUPER. [ruby-dev:24913]
-
-Thu Nov 18 15:39:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (rb_f_getenv): prohibit for $SAFE=4. [ruby-dev:24908]
-
-Thu Nov 18 14:58:42 2004 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/readline/readline.c: check $SAFE.
-
- * test/readline/test_readline.rb: added tests for readline.
+ (rb_str_swapcase_bang): missing rb_str_modify(). [ruby-dev:24915]
Thu Nov 18 00:21:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -13509,15 +8809,10 @@ Thu Nov 18 10:10:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/stringio/stringio.c (strio_initialize): allow Fixnum as mode as
well as IO.new does. [ruby-dev:24896]
-Wed Nov 17 23:47:30 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Wed Nov 17 23:42:40 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/ruby/test_settracefunc.rb: added. [ruby-dev:24884]
-Wed Nov 17 18:59:16 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * process.c (proc_getrlimit, proc_setrlimit): add rb_secure(2) to
- methods of Process.{getrlimit,setrlimit}
-
Wed Nov 17 13:56:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (newline_node): should not use FL_SET. [ruby-dev:24874]
@@ -13527,65 +8822,28 @@ Wed Nov 17 13:56:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* node.h (NODE_NEWLINE): remove unused bit to utilize flag field
in nodes.
-Wed Nov 17 13:05:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (rb_push_glob): fix overrun. [ruby-dev:24886]
+Wed Nov 17 13:09:40 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Nov 17 11:48:17 2004 Michael Neumann <mneumann@ruby-lang.org>
+ * {bcc32,win32,wince}/Makefile.sub (test): should build ruby.exe
+ before running test. [ruby-core:03756]
- * lib/xmlrpc/parser.rb, test/xmlrpc/test_features.rb: fixed "assigning
- to constants" warnings
+Wed Nov 17 04:33:01 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-Wed Nov 17 09:38:18 2004 Johan Holmberg <holmberg@iar.se>
+ * pack.c: all features are backport from 1.9. [ruby-dev:24826]
- * re.c (rb_reg_initialize_m): should raise exception instead of
- compile error. [ruby-core:03755]
+ * bignum.c (rb_big2ulong_pack): new function to pack Bignums.
Wed Nov 17 03:42:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_splice): move rb_str_modify() after
StringValue(), which may alter the receiver. [ruby-dev:24878]
- * error.c (rb_error_frozen): now raise RuntimeError instead of
- TypeError.
-
-Tue Nov 16 21:22:47 2004 Michael Neumann <mneumann@ruby-lang.org>
-
- * lib/xmlrpc/server.rb (CGIServer): fixed bug when client sends
- "Content-typ: text/xml; ..."
-
Tue Nov 16 23:45:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* numeric.c (flo_divmod): protect float values from GC by
assignment to local variables. [ruby-dev:24873]
-Tue Nov 16 14:31:54 2004 Michael Neumann <mneumann@ruby-lang.org>
-
- * test/xmlrpc/*: imported and refactored original test cases.
-
- * test/xmlrpc/test_webrick_server.rb, test/xmlrpc/webrick_testing.rb:
- added test case that starts up a WEBrick XML-RPC server and performs
- some tests on it (both http and https servers are started).
-
- * lib/xmlrpc/create.rb (XMLWriter::each_installed_writer),
- lib/xmlrpc/parser.rb (XMLParser::each_installed_parser):
- added methods to simply original test cases
-
- * lib/xmlrpc/parser.rb, lib/xmlrpc/datetime.rb: applied patch by
- MoonWolf <moonwolf@moonwolf.com> to allow parsing datetime.iso8601
- (e.g. 20041105T01:15:23Z).
-
- * lib/xmlrpc/server.rb: fixed issue #998
- (http://rubyforge.org/tracker/?func=detail&atid=1700&aid=998&group_id=426)
-
- * lib/xmlrpc/create.rb, lib/xmlrpc/utils.rb: when marshalling/loading
- user-defined data structures, use Class#allocate instead of defining
- an empty #initialize method. module XMLRPC::Marshallable is now only
- used for tagging.
-
- * lib/xmlrpc/.document, lib/xmlrpc/README.rdoc: added howto
-
-Tue Nov 16 16:26:12 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Nov 16 16:30:21 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* {bcc32,win32,wince}/setup.mak (-epilogue-): remove config.h and
config.status to force updating them.
@@ -13595,15 +8853,6 @@ Tue Nov 16 16:20:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/stringio/stringio.c (strio_read): position was ignored when a
buffer was passed. http://www.yo.rim.or.jp/~nov/d/?date=20041116#p03
-Tue Nov 16 13:35:54 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::options): add
- new option --exclude (-x) to skip some tests. [ruby-core:3363],
- [ruby-dev:24865]
-
- * lib/test/unit/collector/dir.rb (Test::Unit::Collector::Dir.exclude):
- ditto.
-
Tue Nov 16 11:19:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/test/unit/autorunner.rb (Test::Unit::AutoRunner::options): use
@@ -13617,72 +8866,32 @@ Tue Nov 16 01:41:31 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* array.c (rb_ary_update): pedantic check to detect
rb_ary_to_ary() to modify the receiver. [ruby-dev:24861]
-Mon Nov 15 18:58:05 2004 Tanaka Akira <akr@m17n.org>
+Mon Nov 15 13:50:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * configure.in: check rlim_t more portably. [ruby-core:3735]
+ * string.c (rb_str_justify): typo fixed. [ruby-dev:24851]
Mon Nov 15 11:50:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* misc/ruby-mode.el (ruby-special-char-p, ruby-parse-partial): handle
operator symbols. [ruby-talk:120177]
-Mon Nov 15 08:58:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (Init_Proc): make proc as an alias to Proc.new.
- [ruby-dev:24848]
-
-Mon Nov 15 00:46:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_yield_0): lambda{}.call(1) should raise exception.
- [ruby-talk:120253]
-
-Mon Nov 15 00:33:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_clear): avoid revealing NULL pointer.
- [ruby-dev:24766]
-
- * string.c (str_gsub): add paranoid check. [ruby-dev:24827]
-
- * string.c (str_mod_check): check frozen status as well.
- [ruby-dev:24801]
-
-Sun Nov 14 18:59:03 2004 Tanaka Akira <akr@m17n.org>
-
- * process.c (proc_getrlimit): new function for Process.getrlimit.
- (proc_setrlimit): new function for Process.setrlimit.
- [ruby-dev:24834]
-
- * configure.in: check rlim_t and its size. check setrlimit.
-
- * ruby.h (NUM2ULL): new macro.
-
Sun Nov 14 13:27:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/pp.rb (PP#object_address_group): remove odd number of 'f'
prefixed to negative address.
-Sun Nov 14 10:48:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/mathn.rb (Integer::gcd2): faster implementation by
- <erlercw@siu.edu>. [ruby-talk:120232]
-
-Sun Nov 14 08:46:33 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Sun Nov 14 08:51:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/logger/test_logger.rb: Logger just expects
Logger#datetime_format to be used for Time#strftime independently of
locale. [ruby-dev:24828]
-Fri Nov 12 17:32:07 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * bcc32/README.bcc32, win32/README.win32: need bison instead of
- byacc.
-
-Fri Nov 12 15:15:06 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Nov 12 15:03:26 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* eval.c (ruby_options): now we cannot call rb_glob() before
ruby_init(), so call rb_w32_cmdvector() at ruby_options().
- * win32/win32.{c,h} (rb_w32_cmdvector): rename make_cmdvector() and
+ * win32.{c,h} (rb_w32_cmdvector): rename make_cmdvector() and
export it.
Fri Nov 12 14:08:01 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -13696,15 +8905,21 @@ Fri Nov 12 00:31:05 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/gdbm/gdbm.c (fgdbm_store): StringValue() may alter string
pointer. [ruby-dev:24783]
-Thu Nov 11 17:58:19 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Nov 11 17:36:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * dir.c (rb_glob): should have called rb_glob_caller().
- [ruby-dev:24773]
+ * dir.c (rb_globi): also should call back via rb_glob_caller().
+ [ruby-dev:24775]
-Thu Nov 11 16:56:10 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Nov 11 16:47:21 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* test/ruby/test_file.rb (test_truncate_wbuf): we want to test
- only File#truncate, not behavior of seek(2).
+ only File#truncate, not behaviour of seek(2).
+
+Thu Nov 11 09:41:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * dir.c (push_braces): was confusing VALUE and char*.
+
+ * dir.c (rb_push_glob): Dir.glob should have called its block.
Thu Nov 11 01:52:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -13718,10 +8933,6 @@ Wed Nov 10 22:49:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/delegate.rb (DelegateClass::dup): ditto.
-Wed Nov 10 19:47:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (glob_helper): path is a string object now.
-
Wed Nov 10 12:31:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* README.EXT (Example): extconf.rb is indispensable now.
@@ -13733,22 +8944,10 @@ Wed Nov 10 03:33:36 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib/tile/style.rb: bug fix
-Tue Nov 9 22:24:07 2004 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf: original nkf.c rev:1.38
-
- * ext/nkf/nkf.c: fix bug: can't parse long-name options
-
- * ext/nkf/test.rb: fix bug: mime tests fail
-
Tue Nov 9 14:27:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/optparse.rb (OptionParser::Officious): moved from DefaultList.
-Tue Nov 9 00:50:06 2004 Dave Thomas <dave@pragprog.com>
-
- * lib/rdoc/rdoc.rb: Change version numbering of RDoc and ri
-
Tue Nov 9 01:05:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (rb_glob2): do not allocate buffer from heap to avoid
@@ -13762,7 +8961,15 @@ Tue Nov 9 01:05:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (fnmatch): p or s may be NULL. [ruby-dev:24749]
-Tue Nov 9 00:36:26 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Nov 9 00:53:53 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * regex.c (slow_match): avoid GCC 3.4.x warnings.
+
+Tue Nov 9 00:50:06 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/rdoc.rb: Change version numbering of RDoc and ri
+
+Mon Nov 8 23:38:35 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/extservm.rb: add DRb::ExtServManager#uri=.
[ruby-dev:24743]
@@ -13793,14 +9000,13 @@ Sun Nov 7 23:49:26 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib: ditto.
-Sat Nov 6 20:40:16 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c: rename WIN32OLE#ole_obj_help to
- WIN32OLE#ole_type. alias ole_obj_help to ole_type.
+Sat Nov 6 14:58:44 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * ext/win32ole/tests/testWIN32OLE.rb: ditto.
+ * lib/webrick/server.rb (WEBrick::HTTPServer#start): remove
+ :DoNotReverseLookup option. (Socket#do_not_reverse_lookup is a
+ ruby 1.9 feature)
-Sat Nov 6 11:18:59 2004 Tadayoshi Funaba <tadf@dotrb.org>
+Sat Nov 6 11:31:04 2004 Tadayoshi Funaba <tadf@dotrb.org>
* lib/date.rb (_parse): checks whether zone was given.
@@ -13809,10 +9015,6 @@ Sat Nov 6 00:46:27 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_locktmp): check STR_TMPLOCK flag before
locking. [ruby-dev:24727]
-Fri Nov 5 19:07:16 2004 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf: follow CVS Head of original nkf.
-
Fri Nov 5 18:12:42 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/scrollable.rb: divide Scrollable module into
@@ -13839,43 +9041,23 @@ Fri Nov 5 08:52:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* gc.c (gc_mark): stricter GC stack check.
+Fri Nov 5 08:52:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_mark): stricter GC stack check.
+
Fri Nov 5 08:34:43 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (str_gsub): should have removed rb_str_unlocktmp(str).
[ruby-dev:24708]
- * ext/socket/socket.c (s_recvfrom): buffer modification check.
- [ruby-dev:24708]
-
-Thu Nov 4 23:54:21 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * regexec.c, regparse.c, regint.h: fixed conflicts between
- vendor branch.
-
-Thu Nov 4 23:41:55 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * ascii.c, euc_jp.c, oniggnu.h, oniguruma.h, regcomp.c,
- regenc.c, regenc.h, regerror.c, regexec.c, reggnu.c,
- regint.h, regparse.c, regparse.h, sjis.c, utf8.c:
- imported Oni Guruma 3.4.0.
-
- * parse.y, re.c: Now mbclen() takes unsigned char as
- its argument.
-
Thu Nov 4 21:25:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (str_gsub): string modify check no longer based on
tmplock. [ruby-dev:24706]
-Thu Nov 4 21:13:48 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c(typelib_file_from_typelib): search "win16"
- entry to get library path.
+Thu Nov 4 19:27:46 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/win32ole/win32ole.c(oletypelib_path): ditto.
-
- * ext/win32ole/win32ole.c(ole_typedesc2val): add VT_LPWSTR, VT_LPSTR,
- VT_ERROR case.
+ * io.c (rb_f_open): fix typo.
Thu Nov 4 15:02:14 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -13893,6 +9075,10 @@ Thu Nov 4 03:11:33 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/socket/socket.c (s_recvfrom): tmplock input buffer.
[ruby-dev:24705]
+Wed Nov 3 22:32:12 2004 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * process.c: On NetBSD don't use setruid() and setrgid().
+
Wed Nov 3 22:24:17 2004 Daigo Moriwaki <techml@sgtpepper.net>
* lib/webrick/httpauth/digestauth.rb: use Base64.encode64 to
@@ -13907,7 +9093,11 @@ Wed Nov 3 17:19:59 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* array.c (rb_ary_or): ditto.
-Wed Nov 3 17:02:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Wed Nov 3 17:13:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * io.c (pipe_open): fix compile error
+
+Wed Nov 3 16:58:07 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb: support to use different Tcl commands between
configure and configinfo
@@ -13923,55 +9113,33 @@ Wed Nov 3 17:02:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tkextlib: some bug fixes (see ext/tk/ChangeLog.tkextlib)
-Wed Nov 3 15:38:28 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rss/*.rb: removed tab width configuration headers.
+Wed Nov 3 16:30:41 2004 NARUSE, Yui <naruse@ruby-lang.org>
- * test/rss/test_maker_{0.9,1.0}.rb: sort -> do_sort.
+ * ext/nkf: follow nkf 2.0.4
- * lib/rss/maker/*.rb: changed API to RSS version independence.
+Wed Nov 3 15:53:34 2004 Kouhei Sutou <kou@cozmixng.org>
- * lib/rss/maker/base.rb
- (RSS::Maker::XMLStyleSheets::XMLStyleSheet): checked required
- (pseudo) attributes.
+ * test/rss/test_maker_*.rb: added tests for RSS Maker.
- * lib/rss/maker/base.rb (RSS::Maker::Items): sort -> do_sort.
+ * lib/rss/maker.rb: added RSS Maker.
- * lib/rss/rss.rb (RSS::BaseModel.install_date_element): avoided
- warning.
-
- * lib/rss/0.9.rb (RSS::Rss#textinput): added convenience method.
+ * lib/rss/maker/*.rb: ditto.
Tue Nov 2 16:35:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/enumerator/enumerator.c (each_cons_i): pass copy of an
internal consequent array. [ruby-talk:118691]
-Tue Nov 2 14:54:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Nov 2 16:05:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * io.c (pipe_open): need to set cmd if argc == 0 (win32).
+ * process.c (rb_f_fork): need to flush stdout and stderr before
+ fork(2). [ruby-talk:117715]
Tue Nov 2 01:20:09 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * io.c (pipe_open): IO.popen should take array as 1st argument for
- a command line. [ruby-dev:24678]
-
* eval.c (proc_invoke): nail down dyna_var node when Proc object
or continuation is created. [ruby-dev:24671]
- * io.c (rb_io_s_popen): do not expand argv array. [ruby-dev:24670]
-
-Mon Nov 1 22:25:56 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/maker/base.rb: changed xml-stylesheet's API of RSS Maker
- like to item's one.
-
- * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#guess_type): fixed
- regular expression bug.
-
- * test/rss/test_maker_xml-stylesheet.rb: updated tests for
- xml-stylesheet.
-
Mon Nov 1 13:59:28 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* ext/extmk.rb (MANIFEST): do not use anymore, use extconf.rb instead.
@@ -13983,29 +9151,15 @@ Mon Nov 1 13:59:28 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* README.EXT, README.EXT.ja: remove MANIFEST stuff.
-Mon Nov 1 11:52:18 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (pipe_open): avoid conflict of variable name. [ruby-dev:24662]
-
-Mon Nov 1 11:46:19 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * process.c (rb_f_exec): should check whether prog is NULL.
-
-Mon Nov 1 09:37:19 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/maker.rb: added entry point of RSS Maker.
-
-Mon Nov 1 03:14:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+Mon Nov 1 01:14:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * eval.c (rb_get_method_body): store ICLASS in the cache.
- [ruby-core:03672]
+ * io.c (rb_f_open): create copy of popen specifier. [ruby-dev:24656]
- * eval.c (rb_provided): should return true for loading library
- too for autoloading. [ruby-core:03655]
+Mon Nov 1 00:36:48 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-Mon Nov 1 01:14:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * main.c (_stklen): move to gc.c.
- * io.c (rb_f_open): create copy of popen specifier. [ruby-dev:24656]
+Sun Oct 31 00:22:28 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_locktmp): lock string temporarily.
@@ -14018,54 +9172,15 @@ Mon Nov 1 01:14:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (read_all): ditto.
-Sun Oct 31 23:37:00 2004 NARUSE, Yui <naruse@ruby-lang.org>
-
- * process.c: on NetBSD don't use setruid() and setrgid().
-
-Sun Oct 31 23:12:10 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/maker/*.rb: added RSS Maker.
-
- * test/rss/test_maker_*.rb: added tests for RSS Maker.
-
-Sun Oct 31 16:58:12 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c: add WIN32OLE.codepage, WIN32OLE.codepage=.
-
- * ext/win32ole/tests/testWIN32OLE.rb: ditto.
-
-Sun Oct 31 14:35:26 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * ext/nkf/nkf-utf8/nkf.c: add "\075?UTF-8?Q?" for Gmail.
-
-Sun Oct 31 14:18:56 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: emit lexer-event values to the parser
- (still incomplete).
-
-Sat Oct 30 15:24:41 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c: add WIN32OLE_TYPELIB class. add
- WIN32OLE#ole_typelib method.
-
- * ext/win32ole/tests/testOLETYPELIB.rb: add WIN32OLE_TYPELIB class.
-
Sat Oct 30 06:53:24 2004 Peter Vanbroekhoven <peter.vanbroekhoven@cs.kuleuven.ac.be>
* eval.c (rb_eval): NODE_XSTR should pass copy of literal string.
Sat Oct 30 00:19:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * array.c (rb_ary_update): a[n,m]=nil no longer works as element
- deletion.
-
* enum.c (enum_sort_by): protect continuation jump in.
[ruby-dev:24642]
- * eval.c (rb_eval), gc.c (gc_mark_children), node.h (NEW_ALIAS,
- NEW_VALIAS), parse.y (fitem): allow dynamic symbols to
- NODE_UNDEF and NODE_ALIAS.
-
Fri Oct 29 21:27:51 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (rb_io_check_initialized): new function to check uninitialized
@@ -14073,26 +9188,6 @@ Fri Oct 29 21:27:51 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_path), io.c (rb_io_closed): check if initialized.
-Fri Oct 29 19:05:33 2004 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf: follow nkf2.0.
-
-Fri Oct 29 17:18:22 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * parse.y (ripper_s_allocate): add prototype for Microsoft compiler.
-
- * range.c (range_step, range_each): need cast.
-
-Fri Oct 29 16:34:19 2004 Daiki Ueno <ueno@unixuser.org>
-
- * misc/ruby-mode.el (ruby-parse-partial): Parse the rest of the
- line after opening heredoc identifier. [ruby-dev:24635]
-
-Fri Oct 29 11:35:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (rb_parser_append_print, rb_parser_while_loop): body node
- can be empty. [ruby-dev:24628]
-
Fri Oct 29 10:00:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_thread_start_0): forget to free some memory chunks.
@@ -14107,20 +9202,32 @@ Thu Oct 28 08:42:02 2004 Tanaka Akira <akr@m17n.org>
(argf_read): call argf_forward with argv argument.
[ruby-dev:24624]
+Thu Oct 28 23:32:54 2004 akira yamada <akira@ruby-lang.org>
+
+ * ext/zlib/zlib.c (zstream_detach_input): resets klass of z->input if
+ z->input isn't nil.
+
+Thu Oct 28 23:19:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/extmk.rb: prefer relative path. [ruby-talk:93037]
+
+Wed Oct 27 18:49:11 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * gc.c: prototype; rb_io_fptr_finalize() doesn't return any value
+ at this version.
+
+Wed Oct 27 17:27:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * gc.c (gc_sweep): recover ruby_in_compile variable.
+
Wed Oct 27 09:17:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (str_gsub): use a string object for exception safeness.
[ruby-dev:24601]
-Wed Oct 27 07:38:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * node.h (NODE_TYPESHIFT): allow 4 more bits for line numbers.
- [ruby-talk:117841]
+Tue Oct 26 23:52:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ruby.h (FL_ABLE): nodes are not subject for flag operations.
-
- * io.c (ARGF_FORWARD): should have specified argv explicitly,
- since we no longer have frame->argv saved. [ruby-dev:24602]
+ * io.c (rb_io_getline): rs modification check should not interfere in the loop.
Tue Oct 26 23:30:39 2004 Dave Thomas <dave@pragprog.com>
@@ -14142,6 +9249,16 @@ Tue Oct 26 10:56:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* sprintf.c (rb_f_sprintf): raise ArgumentError for extra
arguments, unless (digit)$ style used.
+Tue Oct 26 11:33:26 2004 David G. Andersen <dga@lcs.mit.edu>
+
+ * ext/zlib/zlib.c (gzreader_gets): use memchr() to to gain
+ performance. [ruby-talk:117701]
+
+Tue Oct 26 10:56:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): raise ArgumentError for extra
+ arguments, unless (digit)$ style used.
+
Mon Oct 25 18:35:39 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* win32/win32.c (isUNCRoot): should check NUL after '.'.
@@ -14153,16 +9270,11 @@ Mon Oct 25 08:03:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (get_backtrace): ignore illegal backtrace. [ruby-dev:24587]
-Sun Oct 24 00:40:50 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Oct 24 00:41:09 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_load, search_required, rb_require_safe, rb_require): use
frozen shared string to avoid outside modification. [ruby-dev:24580]
-Sat Oct 23 23:40:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * io.c (rb_io_fptr_finalize): leave stdin/stdout/stderr open in
- interpreter termination. [ruby-dev:24579]
-
Sat Oct 23 22:18:32 2004 Guy Decoux <ts@moulon.inra.fr>
* eval.c (frame_free): Guy Decoux solved the leak problem.
@@ -14206,10 +9318,6 @@ Thu Oct 21 19:06:15 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#send_body_io):
ensure to close @body. (http://bugs.debian.org/277520)
-Thu Oct 21 13:11:31 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * io.c (pipe_open): variable name "fpw" is conflicted.
-
Thu Oct 21 00:36:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_alias): should warn on method discarding.
@@ -14218,21 +9326,11 @@ Thu Oct 21 00:36:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/zlib/zlib.c (zstream_expand_buffer_into): hide internal
string buffer by clearing klass. [ruby-dev:24548]
- * parse.y (lex_getline): should not touch ruby_debug_lines if
- RIPPER is defined. [ruby-dev:24547]
-
Wed Oct 20 19:45:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (str_gsub): reentrant check. [ruby-dev:24432]
-Wed Oct 20 12:42:53 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_getline): rs modification check should not interfere
- in the loop.
-
-Wed Oct 20 10:31:33 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (lex_getline): should update ruby_debug_lines.
+ * backport all SEGV bug fixes from CVS HEAD. [ruby-dev:24536]
Wed Oct 20 04:17:55 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -14254,23 +9352,13 @@ Wed Oct 20 01:37:18 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (ruby_exec): stack marking position may be higher than
expected. thanks to Guy Decoux. [ruby-core:03527]
-Wed Oct 20 00:25:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (search_required): required name must not be changed before
- loading. [ruby-dev:24492]
-
-Tue Oct 19 23:59:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_require_safe): provide the feature after loaded.
- [ruby-list:40085]
-
Tue Oct 19 22:43:12 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_attr): If
we come across 'attr' in a context where it isn't
followed by a symbol, just issue a warning.
-Tue Oct 19 20:32:50 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+Tue Oct 19 20:41:37 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole.c(ole_invoke): retrieve the result value when
retrying the IDispatch::invoke.
@@ -14290,7 +9378,15 @@ Tue Oct 19 17:24:11 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/zlib/zlib.c (zstream_expand_buffer): hide internal string
buffer by clearing klass. [ruby-dev:24510]
-Tue Oct 19 08:47:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Oct 19 16:12:18 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+
+ * ext/tk/tkutil.c: backport from CVS HEAD
+
+Tue Oct 19 08:54:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * intern.h, object.c (rb_class_inherited_p): export.
+
+Tue Oct 19 08:46:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (rb_str_upto): method result must be checked. [ruby-dev:24504]
@@ -14301,20 +9397,60 @@ Mon Oct 18 23:37:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* marshal.c (r_object0): check inheritance by the internal function.
[ruby-dev:24515]
-Mon Oct 18 11:29:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Oct 18 15:58:01 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (rb_io_flags_mode, rb_io_mode_flags): distinguish whether file
- not existing is created. [ruby-dev:24505]
+ * range.c (range_step, range_each): need cast.
+
+Fri Oct 29 16:34:19 2004 Daiki Ueno <ueno@unixuser.org>
+
+ * misc/ruby-mode.el (ruby-parse-partial): Parse the rest of the
+ line after opening heredoc identifier. [ruby-dev:24635]
Mon Oct 18 07:26:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_file_truncate): discard read buffer before truncation.
[ruby-dev:24197]
-Mon Oct 18 01:56:03 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Oct 18 02:11:21 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/config.rb (WEBrick::Config::General): add default values:
+ - WEBrick::Config[:DoNotReverseLookup]
+ - WEBrick::Config[:RequestCallback] (it used as an alias of
+ :RequestHandler in WEBrick::HTTPServer#run)
+ - WEBrick::Config::FileHandler[:AcceptableLanguages]
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#set_filename): search files
+ having suffix of language-name which Accept-Language header field
+ includes if :AcceptableLanguages options is present.
+
+ * lib/webrick/httpservlet/filehandler.rb
+ (WEBrick::HTTPServlet::FileHandler#get_servlet): new method to
+ search servlet correspond to the suffix of filename.
+
+ * lib/webrick/httprequest.rb: add attributes access methods: accept,
+ accept_charset, accept_encoding, accept_language, content_length
+ and content_type.
+
+ * lib/webrick/httpresponse.rb: add attribute access methods:
+ content_length, content_length=, content_type and content_type=.
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.mime_types):
+ use the second suffix to detect media type. (the first suffix
+ may be a language name.)
+
+ * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_qvalues):
+ add method to parse Accept header field. it returns an Array of
+ values sorted by the qvalues.
+
+Mon Oct 18 02:04:11 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * lib/webrick/httpserver.rb (WEBrick::HTTPServer#virtual_host): new
+ method to register virtual hosting servers.
- * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#initialize):
- initial value of accpet-* should be array.
+ * lib/webrick/server.rb (WEBrick::GenericServer#accept): call
+ do_not_reverse_lookup for each socket if :DoNotReverseLookup
+ is set. [ruby-core:02357]
Mon Oct 18 00:42:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -14328,7 +9464,7 @@ Sun Oct 17 23:03:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/timer.rb: TkTimer#start and restart accept a block
-Sun Oct 17 12:53:46 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+Sun Oct 17 13:05:04 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole.c (fole_func_methods): correct argument mismatch.
* ext/win32ole/win32ole.c (fole_get_methods): ditto.
@@ -14351,21 +9487,6 @@ Sat Oct 16 13:34:56 2004 Kouhei Sutou <kou@cozmixng.org>
* lib/rss: supported prety print.
* test/rss/test_1.0.rb: added test for calculating default indent size.
-Sat Oct 16 10:56:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (create_makefile): install-rb is needed for statically
- linked extensions. [ruby-dev:24491]
-
-Fri Oct 15 18:07:08 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_x509store.c
- (ossl_x509stctx_initialize): setup OpenSSL::X509::StoreContext with
- ossl_x509stctx_* functions instead of X509_STORE_CTX_*.
- (ossl_x509store_set_time): add OpenSSL::X509::Store#time=.
- (ossl_x509stctx_set_time): add OpenSSL::X509::StoreContext#time=.
-
- * test/openssl/ossl_x509store.rb: test certificate validity times.
-
Fri Oct 15 18:04:35 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/timer.rb: TkTimer.new(interval, loop){ ... } is
@@ -14376,60 +9497,13 @@ Fri Oct 15 12:43:09 2004 Tanaka Akira <akr@m17n.org>
* eval.c (Init_stack): make prototype declaration consistent with
the definition in gc.c.
-Thu Oct 14 13:33:59 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/rss.rb: added link to Tutorial.
-
-Tue Oct 12 21:22:50 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/config.rb:
- add WEBrick::Config::FileHandler[:AcceptableLanguages].
-
- * lib/webrick/httpservlet/filehandler.rb
- (WEBrick::HTTPServlet::FileHandler#set_filename): search files
- having suffix of language-name which Accept-Language header field
- includes if :AcceptableLanguages options is present.
-
- * lib/webrick/httpservlet/filehandler.rb
- (WEBrick::HTTPServlet::FileHandler#get_servlet): new method to
- search servlet correspond to the suffix of filename.
-
- * lib/webrick/httprequest.rb: add attributes access methods: accept,
- accept_charset, accept_encoding, accept_language, content_length
- and content_type.
-
- * lib/webrick/httpresponse.rb: add attribute access methods:
- content_length, content_length=, content_type and content_type=.
-
- * lib/webrick/httputils.rb (WEBrick::HTTPUtils.mime_types):
- use the second suffix to detect media type. (the first suffix
- may be a language name.)
-
- * lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_qvalues):
- add method to parse Accept header field. it returns an Array of
- values sorted by the qvalues.
-
-Tue Oct 12 15:05:32 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+Thu Oct 14 14:34:01 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* io.c (MODE_BINMODE, MODE_BINARY): fixed reversed condition.
-Mon Oct 11 17:51:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * io.c (rb_io_popen): get mode string via rb_io_flags_mode() to
- avoid mode string modification. [ruby-dev:24454]
-
- * io.c (rb_io_getline_fast): should take delim as unsigned char to
- distinguish EOF and '\377'. [ruby-dev:24460]
-
- * io.c (rb_io_getline): add check for RS modification.
- [ruby-dev:24461]
-
- * enum.c (enum_sort_by): use qsort() directly instead using
- rb_iterate(). [ruby-dev:24462]
+Thu Oct 14 13:33:59 2004 Kouhei Sutou <kou@cozmixng.org>
- * enum.c (enum_each_with_index): remove rb_gc_force_recycle() to
- prevent access to recycled object (via continuation for
- example). [ruby-dev:24463]
+ * lib/rss/rss.rb: added link to Tutorial.
Mon Oct 11 13:48:20 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -14440,16 +9514,6 @@ Sun Oct 10 12:32:08 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::parse_require): Allow 'require'
to be used as a variable name
-Sun Oct 10 02:49:14 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/lib/ripper/filter.rb: require ripper/tokenizer.
-
- * ext/ripper/lib/ripper/filter.rb (parse): argument is optional.
-
-Sun Oct 10 02:43:13 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: \n between two comments disappeared.
-
Sat Oct 9 21:23:37 2004 Kouhei Sutou <kou@cozmixng.org>
* lib/rss/converter.rb: changed to try to use Iconv for default
@@ -14462,19 +9526,6 @@ Sat Oct 9 19:50:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (rb_io_getline): should not treat char as negative value.
[ruby-dev:24460]
-Sat Oct 9 00:25:39 2004 Tanaka Akira <akr@m17n.org>
-
- * io.c (rb_io_fread): rb_thread_wait_fd() was lost.
- [ruby-dev:24457]
-
-Fri Oct 8 21:36:56 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (fu_traverse): return value of Dir.entries is
- reliable. (pass $SAFE=1)
-
- * lib/fileutils.rb (remove_dir): return value of Dir.foreach is
- reliable. (pass $SAFE=1)
-
Fri Oct 8 09:49:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* pack.c (pack_pack): pointer modification check before each
@@ -14534,19 +9585,7 @@ Wed Oct 6 09:21:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* range.c (member_i): use RANGE_EACH_BREAK. [ruby-talk:114959]
-Tue Oct 5 09:53:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * io.c (rb_fopen): mode string copy at the lowest level.
-
- * io.c (rb_io_flags_mode): requires output buffer no more. no
- allocation needed.
-
- * array.c (rb_ary_index): takes a block to compare items in an
- array. [ruby-talk:113069] [Ruby2]
-
- * array.c (rb_ary_rindex): ditto.
-
-Mon Oct 4 14:03:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Oct 4 14:04:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (rb_file_open_internal, rb_io_reopen): fname might be altered
while GC. [ruby-dev:24408]
@@ -14558,21 +9597,16 @@ Mon Oct 4 12:53:45 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/image.rb: bug fix
-Sun Oct 3 21:16:05 2004 Shugo Maeda <shugo@ruby-lang.org>
+Sun Oct 3 21:20:03 2004 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/imap.rb (TEXT_REGEXP): allow 8-bit characters for the german
- version of Microsoft Exchange Server.
+ version of Microsoft Exchange Server. (backported from HEAD)
* lib/net/imap.rb (RTEXT_REGEXP): ditto.
* lib/net/imap.rb (CTEXT_REGEXP): ditto.
-Sat Oct 2 20:34:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (local_vars): moved to struct parser_params.
- [ruby-dev:24391]
-
- * parser.y (stmts): remove suspicious NODE_BEGIN. [ruby-dev:24390]
+Sat Oct 2 20:34:22 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* node.h (NEW_DVAR): extra semicolon.
@@ -14594,6 +9628,9 @@ Sat Oct 2 00:42:20 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (specific_eval): defer pointer retrieval to prevent
unsafe sourcefile string modification. [ruby-dev:24382]
+ * eval.c (specific_eval): defer pointer retrieval to prevent
+ unsafe sourcefile string modification. [ruby-dev:24382]
+
* string.c (rb_str_sum): wrong cast caused wrong result.
[ruby-dev:24385]
@@ -14605,6 +9642,24 @@ Sat Oct 2 00:42:20 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_sum): string may be altered. [ruby-dev:24381]
+Mon Oct 11 17:51:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * io.c (rb_io_popen): get mode string via rb_io_flags_mode() to
+ avoid mode string modification. [ruby-dev:24454]
+
+ * io.c (rb_io_getline_fast): should take delim as unsigned char to
+ distinguish EOF and '\377'. [ruby-dev:24460]
+
+ * io.c (rb_io_getline): add check for RS modification.
+ [ruby-dev:24461]
+
+ * enum.c (enum_sort_by): use qsort() directly instead using
+ rb_iterate(). [ruby-dev:24462]
+
+ * enum.c (enum_each_with_index): remove rb_gc_force_recycle() to
+ prevent access to recycled object (via continuation for
+ example). [ruby-dev:24463]
+
Fri Oct 1 11:40:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_f_eval): defer pointer retrieval to prevent unsafe
@@ -14649,18 +9704,6 @@ Wed Sep 29 10:58:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* enum.c (sort_by_i): internally used object must not be changed
outside. [ruby-dev:24368]
-Mon Sep 27 21:25:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_call0): invoke finalizers periodically.
-
- * gc.c (gc_sweep): defer running finalizers. [ruby-dev:24354]
-
- * gc.c (rb_gc_finalize_deferred): run deferred finalizers.
-
-Mon Sep 27 15:01:59 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: missing ';'.
-
Mon Sep 27 13:46:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* intern.h, struct.c (rb_struct_s_members, rb_struct_members): public
@@ -14670,34 +9713,9 @@ Mon Sep 27 13:46:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
Mon Sep 27 09:14:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * array.c (rb_ary_delete): comparison may change the capacity.
- [ruby-dev:24348]
-
- * array.c (rb_ary_fill): fill should honor length argument.
- [ruby-dev:24346]
-
- * array.c (rb_ary_replace): should not use ptr from shared array.
- [ruby-dev:24345]
-
* ext/socket/socket.c (s_accept): don't retry for EWOULDBLOCK.
[ruby-talk:113807]
-Sun Sep 26 08:05:10 2004 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb: provides {Time,Date,DateTime}#to_{time,date,datetime}.
-
- * sample/cal.rb: uses getoptlong instead of getopts.
-
-Sat Sep 25 18:39:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (flatten): element size might change during comparison.
- [ruby-dev:24343]
-
-Sat Sep 25 01:52:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * struct.c (rb_struct_s_members): wrong call of struct_members.
- [ruby-dev:24333]
-
Fri Sep 24 16:09:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (proc_invoke): propagate DVAR_DONT_RECYCLE on termination
@@ -14705,11 +9723,6 @@ Fri Sep 24 16:09:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
Fri Sep 24 08:29:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * parse.y (rb_parser_append_print): should handle prelude.
- [llama@u01.gate0]
-
- * parse.y (rb_parser_while_loop): ditto.
-
* array.c (rb_ary_subseq): original object might be modified after
sharing data creation. [ruby-dev:24327]
@@ -14720,22 +9733,6 @@ Fri Sep 24 08:29:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* struct.c (struct_members): always check struct size and size of
members list in the class. [ruby-dev:24320]
-Thu Sep 23 19:48:14 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/Makefile.dev: removed.
-
- * ext/ripper/ripper.rb.in: moved to lib/ripper/core.rb.in.
-
- * ext/ripper/lib/ripper/core.rb: new file.
-
- * ext/ripper/lib/ripper/core.rb.in: new file.
-
- * ext/ripper/tools/generate-ripper_rb.rb: change comment.
-
- * test/ripper/*.rb: on__scan event removed.
-
- * test/ripper/*.rb: event name is changed: on__XXX -> on_XXX.
-
Thu Sep 23 09:29:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_sub_bang): check if string is not modified
@@ -14744,50 +9741,23 @@ Thu Sep 23 09:29:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* hash.c (rb_hash_rehash): replace st_foreach() by its deep
checking counterpart. [ruby-dev:24310]
-Wed Sep 22 14:21:54 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: on__scan event removed.
-
- * parse.y [ripper]: event name is changed: on__XXX -> on_XXX.
-
- * ext/ripper/eventids2.c: ditto.
-
- * ext/ripper/ripper.rb.in: ditto.
-
- * ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
-
- * ext/ripper/lib/ripper/tokenizer: ditto.
-
- * ext/ripper/lib/ripper/filter: new file.
-
- * sample/ripper/colorize.rb: new file.
-
- * sample/ripper/strip-comment.rb: new file.
-
-Wed Sep 22 13:50:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (hash_alloc): was using tbl pointer without
- initialization.
-
Wed Sep 22 13:38:12 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* hash.c (rb_hash_rehash): add iteration check. [ruby-dev:24301]
* st.c (st_foreach): add deep check.
- * hash.c (rb_hash_fetch): returns KeyError instead of IndexError.
+Wed Sep 22 13:06:14 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * hash.c (env_fetch): ditto.
+ * win32/win32.c (rb_w32_call_handler): workaround for Ctrl-C.
+ merge from HEAD.
-Wed Sep 22 13:02:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Sep 22 00:11:12 2004 Dave Thomas <dave@pragprog.com>
- * win32/win32.c (rb_w32_call_handler): workaround for Ctrl-C.
+ * process.c: Add documentation for fork()
Wed Sep 22 09:04:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * parse.y: remove global variables ruby_eval_tree and
- ruby_eval_tree_begin.
-
* array.c (rb_ary_collect_bang): element size might change during
comparison. [ruby-dev:24300]
@@ -14795,116 +9765,13 @@ Wed Sep 22 09:04:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* array.c (rb_ary_eql): ditto. [ruby-dev:24300]
-Wed Sep 22 00:11:12 2004 Dave Thomas <dave@pragprog.com>
-
- * process.c: Add documentation for fork()
-
Tue Sep 21 18:29:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * array.c (rb_ary_equal): merge miss.
+
* array.c (rb_ary_uniq_bang): element size might change during
comparison. [ruby-dev:24298]
-Mon Sep 20 17:46:51 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/lib/ripper/tokenizer.rb: fix typo.
-
-Mon Sep 20 17:38:43 2004 Minero Aoki <aamine@loveruby.net>
-
- * test/ripper/test_scanner_events.rb: tokens must be reordered.
-
- * ext/ripper/lib/ripper/tokenizer.rb: ditto.
-
-Mon Sep 20 16:58:16 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: do not delay dispatching.
-
- * ext/ripper/lib/ripper/tokenizer.rb: sort tokens by right order.
-
-Mon Sep 20 15:17:47 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/lib/ripper/tokenizer.rb: new file.
-
-Mon Sep 20 15:13:52 2004 Minero Aoki <aamine@loveruby.net>
-
- * test/ripper/test_scanner_events.rb: test #lineno and #column.
-
-Mon Sep 20 14:50:17 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: delayed heredocument events should be
- dispatched after EOF.
-
-Mon Sep 20 14:39:42 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: adjust lineno and columns for multi-line
- strings.
-
- * parse.y [ripper]: delay heredocument events until seeing
- end-of-line.
-
- * parse.y [ripper]: event on__heredoc_contentn ->
- on__tstring_content.
-
- * ext/ripper/eventids2.c: ditto.
-
- * ext/ripper/lib/ripper.rb: sync with eventids2.c.
-
- * test/ripper/test_scanner_events.rb: test it.
-
- * ext/ripper/tools/generate-ripper_rb.rb: show basename of input.
-
- * ext/ripper/Makefile.dev: support objdir build.
-
-Mon Sep 20 13:22:55 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: remove Ripper#pos.
-
- * parse.y [ripper]: Ripper#column should return the column of the
- current token.
-
-Mon Sep 20 12:02:41 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: unify old_lex_p and token_head.
-
- * test/ripper/test_scanner_events.rb: now \r\n is saved correctly.
-
- * parse.y: new macro lex_goto_eol() for next change.
-
-Mon Sep 20 11:01:55 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: adjust line number for heredoc. [ruby-dev:24272]
-
-Mon Sep 20 04:49:22 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/ripper.rb.in: new const Ripper::PARSER_EVENT_TABLE.
-
- * ext/ripper/ripper.rb.in: new const Ripper::SCANNER_EVENT_TABLE.
-
- * ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
-
-Mon Sep 20 04:13:00 2004 Minero Aoki <aamine@loveruby.net>
-
- * test/ripper/test_scanner_events.rb: test spaces before heredoc
- mark.
-
-Mon Sep 20 03:46:54 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: spaces before heredoc marker was lost.
- [ruby-dev:24272]
-
- * keywords: rb_reserved_word() should be defined only in ruby
- core. [ruby-dev:24272]
-
- * lex.c: sync with keywords.
-
- * ext/ripper/ripper.rb.in (parse): fix typo.
-
- * ext/ripper/lib/ripper.rb: sync with ripper.rb.in.
-
-Mon Sep 20 03:37:59 2004 Tanaka Akira <akr@m17n.org>
-
- * ext/zlib/zlib.c (gzfile_read_raw): call readpartial at first.
- (Zlib::GzipReader#readpartial): new method.
-
Mon Sep 20 00:24:19 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* enum.c (enum_sort_by): do not use qsort directly. use
@@ -14946,23 +9813,15 @@ Sat Sep 18 14:10:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
direcotry or within block. thanks to Johan Holmberg
<holmberg@iar.se> [ruby-core:03446]
-Fri Sep 17 20:29:33 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Sep 17 20:20:27 2004 Minero Aoki <aamine@loveruby.net>
- * parse.y: add prototypes for Microsoft compiler.
-
- * ext/ripper/depend (parse.obj): lex.c exists at hdrdir.
-
- * {bcc32,win32,wince}/Makefile.sub (YACC, YFLAGS, parse.c):
- use bison.
+ * lib/fileutils.rb (mkdir_p): backport from CVS HEAD 1.45. [ruby-core:03420]
Fri Sep 17 17:11:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* array.c (rb_ary_delete): element comparison might change array
size. [ruby-dev:24273]
- * parse.y: make ruby parser reentrant. merge ripper parser to the
- real one. this change makes ruby require bison.
-
* file.c (rb_file_truncate): clear stdio buffer before truncating
the file. [ruby-dev:24191]
@@ -14990,7 +9849,7 @@ Fri Sep 17 15:01:57 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/tkoptdb-safeTk.rb: ditto
-Thu Sep 16 18:12:13 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Thu Sep 16 18:12:32 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/cgi.rb (WEBrick::CGI#start): should set REMOTE_USER
to request.user attribute.
@@ -15019,44 +9878,6 @@ Tue Sep 14 23:45:44 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::TextFormatter.for):
Add Eric Hodel's simpleformatter.
-Tue Sep 14 22:11:08 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: Add rdoc.
-
-Tue Sep 14 20:24:49 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y [ripper]: space event is on__sp, not on__lwsp.
- [ruby-dev:24257]
-
- * ext/ripper/eventids2.c: ditto.
-
- * ext/ripper/lib/ripper.rb: ditto.
-
- * ext/ripper/depend (ripper.o): No action is needed.
- [ruby-dev:24260]
-
- * ext/ripper/depend: Borland make does not accept pipes in
- Makefile rules. [ruby-dev:24589]
-
- * ext/ripper/depend: separate rules for developpers.
-
- * ext/ripper/Makefile.dev: new file.
-
- * ext/ripper/MANIFEST: add Makefile.dev.
-
- * ext/ripper/tools/generate-eventids1.rb: read from file, not
- stdin.
-
- * ext/ripper/extconf.rb: clean ripper.E.
-
- * ext/ripper/tools/generate-ripper_rb.rb: #include ids1/ids2
- function was lost.
-
- * ext/ripper/tools/generate-ripper_rb.rb: SCANNER_EVENTS wrongly
- contained parser events.
-
- * ext/ripper/lib/ripper.rb: ditto.
-
Tue Sep 14 16:59:37 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: fix SEGV
@@ -15067,22 +9888,9 @@ Tue Sep 14 16:59:37 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/safe-tk.rb: new sample script
+Tue Sep 14 00:15:15 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-Mon Sep 13 21:33:40 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_x509name.c (ossl_x509name_to_s): add optional
- second argument to specify the output format (see also
- X509_NAME_print_ex).
-
- * ext/openssl/ossl_x509name.c (ossl_x509name_init): new constants:
- OpenSSL::X509::Name::COMPAT, OpenSSL::X509::Name::RFC2253,
- OpenSSL::X509::ONELINE, OpenSSL::X509::MULTILINE.
-
- * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name::RFC2253DN):
- new module to provide the parse for RFC2253 DN format.
-
- * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name.parse_rfc2253):
- new method to parse RFC2253 DN format.
+ * ext/zlib/zlib.c: backported from HEAD.
Mon Sep 13 19:16:33 2004 WATANABE Hirofumi <eban@ruby-lang.org>
@@ -15093,92 +9901,10 @@ Mon Sep 13 16:23:27 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: MultiTkIp.new_master and new_slave accept
safe-level value argument
-Mon Sep 13 10:48:37 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_getpid): don't need to use _getpid() on
- mswin32 and mingw32.
-
-Mon Sep 13 10:22:05 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Sep 13 10:20:45 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* object.c (nil_inspect): fix typo.
-Mon Sep 13 09:29:58 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/depend: (nmake hack) prepend "./" to ripper.c to
- avoid {$(srcdir)}.
-
-Mon Sep 13 06:43:42 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper/tools/list-parse-event-ids.rb: does not use getopts.
-
- * ext/ripper/tools/list-scan-event-ids.rb: ditto.
-
-Mon Sep 13 02:42:28 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/Setup: add ripper.
-
- * ext/Setup.atheos: ditto.
-
- * ext/Setup.dj: ditto.
-
- * ext/Setup.emx: ditto.
-
- * ext/Setup.nt: ditto.
-
- * ext/Setup.x68: ditto.
-
-Mon Sep 13 02:26:31 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/ripper: ripper extention added.
-
- * ext/ripper/MANIFEST: new file.
-
- * ext/ripper/README: new file.
-
- * ext/ripper/depend: new file.
-
- * ext/ripper/extconf.rb: new file.
-
- * ext/ripper/eventids2.c: new file.
-
- * ext/ripper/ripper.rb.in: new file.
-
- * ext/ripper/lib/ripper.rb: new file.
-
- * ext/ripper/test/check-event-arity.rb: new file.
-
- * ext/ripper/test/check-event-coverage.sh: new file.
-
- * ext/ripper/test/check-scanner-event-coverage.rb: new file.
-
- * ext/ripper/test/list-called-events.rb: new file.
-
- * ext/ripper/test/src_rb: new file.
-
- * ext/ripper/test/validate.rb: new file.
-
- * ext/ripper/tools/generate-eventids1.rb: new file.
-
- * ext/ripper/tools/generate-param-macros.rb: new file.
-
- * ext/ripper/tools/generate-ripper_rb.rb: new file.
-
- * ext/ripper/tools/list-parse-event-ids.rb: new file.
-
- * ext/ripper/tools/list-scan-event-ids.rb: new file.
-
- * ext/ripper/tools/preproc.rb: new file.
-
- * ext/ripper/tools/strip.rb: new file.
-
- * test/ripper: ripper tests added.
-
- * test/ripper/dummyparser.rb: new file.
-
- * test/ripper/test_parser_events.rb: new file.
-
- * test/ripper/test_scanner_events.rb: new file.
-
Mon Sep 13 01:03:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: improve control of preserv/release tcltkip
@@ -15187,19 +9913,7 @@ Mon Sep 13 01:03:02 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/tkutil.c: fix(?) SEGV
-Mon Sep 13 00:22:53 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y: fix file header.
-
-Mon Sep 13 00:20:39 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y: ripper merged.
-
- * lex.c: ditto.
-
- * keywords: ditto.
-
-Sun Sep 12 23:53:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sun Sep 12 23:46:23 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* util.c (ruby_strdup): remove unnecessary code. (xmalloc never
returns NULL.)
@@ -15211,6 +9925,7 @@ Sun Sep 12 02:41:58 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: add TclTkIp#allow_ruby_exit? and
allow_ruby_exit=
+
* ext/tk/lib/multi-tk.rb: ditto.
* ext/tk/lib/remote-tk.rb: ditto.
@@ -15231,25 +9946,11 @@ Sat Sep 11 16:09:46 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb: Fix up cross-file class merging.
-Fri Sep 10 20:18:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Sep 10 20:20:53 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/tcltklib/tcltklib.c (lib_merge_tklist): fix suspicious
pointer conversion.
-Fri Sep 10 19:16:24 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * bcc32/Makefile.sub: bccwin32 port starts to use RTL dll.
- (need to rebuild all) [ruby-dev:24138]
-
- * win32/win32.{h,c}: ditto.
-
-Fri Sep 10 15:55:59 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (mkdir_p): should pass mode argument to
- Dir.mkdir. [ruby-dev:24242]
-
- * test/fileutils/test_fileutils.rb: test it.
-
Fri Sep 10 02:43:54 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/template/kilmer.rb: James Buck's
@@ -15291,16 +9992,9 @@ Tue Sep 7 15:17:49 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/socket/socket.c (ruby_connect): break immediately if a
socket is non-blocking. [ruby-talk:111654]
-Tue Sep 7 12:48:22 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Sep 6 11:08:50 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * {bcc32,win32,wince}/Makefile.sub (config.h): add fcntl.
-
- * win32/win32.[ch] (fcntl): ditto.
-
- * win32/win32.c (rb_w32_connect): support nonblocking mode.
-
- * ext/socket/socket.c (wait_connectable, ruby_connect): support
- nonblocking connect on various platforms.
+ * ext/tk/lib/tk/menu.rb(TkOptionMenubutton#insert): call correct method
Mon Sep 6 11:00:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -15308,10 +10002,6 @@ Mon Sep 6 11:00:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
exception occurred within a block. a patch was given from Johan
Holmberg <holmberg at iar.se>. [ruby-core:03292]
-Mon Sep 6 10:57:40 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ext/tk/lib/tk/menu.rb(TkOptionMenubutton#insert): call correct method
-
Mon Sep 6 07:51:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (cvar_cbase): singletons should refer outer cvar scope.
@@ -15345,20 +10035,18 @@ Fri Sep 3 02:12:48 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
Fri Sep 3 01:54:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/extmk.rb (extmake): extact target prefix from Makefiles.
-
* ext/extmk.rb: already built-in libraries satisfy dependencies.
[ruby-dev:24028]
-Wed Sep 1 21:16:50 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Sep 2 11:36:20 2004 WATANABE Hirofumi <eban@ruby-lang.org>
- * ext/tk/lib/tk/spinbox.rb: fix typo
+ * eval.c (rb_obj_instance_eval): backported from HEAD.
-Wed Sep 1 19:28:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Sep 1 21:18:25 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * process.c (rb_proc_exec): label cannot precede variable declarations.
+ * ext/tk/lib/tk/spinbox.rb: fix typo
-Tue Aug 31 18:20:49 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Aug 31 18:24:04 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/tk/tkutil.c (cbsubst_init): fix memory leak
@@ -15373,10 +10061,6 @@ Tue Aug 31 12:30:36 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c (del_root): fix SEGV
-Mon Aug 30 21:50:14 2004 Dave Thomas <dave@pragprog.com>
-
- * object.c: Add RDoc for Module.included.
-
Mon Aug 30 23:11:06 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_driver.rb (and others): ri now merges documentation
@@ -15386,10 +10070,19 @@ Mon Aug 30 22:40:30 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: 'restart' method accepts arguments
+Mon Aug 30 21:50:14 2004 Dave Thomas <dave@pragprog.com>
+
+ * object.c: Add RDoc for Module.included.
+
Mon Aug 30 15:10:46 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* configure.in (GNU/k*BSD): fixed FTBFS on GNU/k*BSD. [ruby-dev:24051]
+Mon Aug 30 11:29:35 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/win32.c (CreateChild): strip trailing spaces. [ruby-dev:24143]
+ merge from HEAD.
+
Sun Aug 29 14:08:56 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: compile error on bcc32 [ruby-dev:24081]
@@ -15401,49 +10094,27 @@ Sat Aug 28 23:04:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* bignum.c (rb_big_and): protect parameters from GC.
[ruby-talk:110664]
-Fri Aug 27 12:13:50 2004 Tanaka Akira <akr@m17n.org>
-
- * ext/stringio/stringio.c (Init_stringio): add StringIO#readpartial as
- an alias for StringIO#sysread.
-
-Fri Aug 27 10:14:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (rb_proc_exec): strip trailing spaces. [ruby-dev:24143]
-
- * win32/win32.c (CreateChild): ditto.
-
Thu Aug 26 04:38:29 2004 Dave Thomas <dave@pragprog.com>
* eval.c (return_jump): Minor typo in error message. Now reads
"return can't jump across threads".
-Wed Aug 25 15:18:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_longjmp): Exception#to_str is no longer defined.
-
-Wed Aug 25 11:39:10 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * error.c (exc_equal): exceptions are equal if they share same
- class, message and backtrace. [ruby-talk:110354]
-
- * error.c (name_err_mesg_equal): ditto.
-
-Tue Aug 24 16:41:48 2004 Shugo Maeda <shugo@ruby-lang.org>
+Tue Aug 24 17:30:00 2004 Shugo Maeda <shugo@ruby-lang.org>
* lib/cgi/session.rb (CGI::Session::FileStore#initialize): do not
- use a session id as a filename.
+ use a session id as a filename. (backported from HEAD)
* lib/cgi/session/pstore.rb (CGI::Session::PStore#initialize): ditto.
* lib/cgi/session/pstore.rb (CGI::Session::PStore#initialize): use
- Dir::tmpdir.
+ Dir::tmpdir. (backported from HEAD)
-Tue Aug 24 14:32:17 2004 Shugo Maeda <shugo@ruby-lang.org>
+Tue Aug 24 14:40:16 2004 Shugo Maeda <shugo@ruby-lang.org>
* lib/cgi/session.rb (CGI::Session::FileStore#initialize): untaint
- session id after check.
+ session id after check. (backported from HEAD)
-Tue Aug 24 08:57:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Tue Aug 24 09:09:01 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_x509attr.c (ossl_x509attr_initialize): d2i
functions may replace the pointer indicated by the first argument.
@@ -15452,12 +10123,7 @@ Tue Aug 24 08:57:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.
-Mon Aug 23 12:43:32 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/resolv.rb (Config.default_config_hash): when multiple domains
- are set, Win32::Resolv.get_resolv_info returns Array.
-
-Sun Aug 22 16:27:38 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Aug 23 14:04:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_ssl.c (ossl_ssl_read):
- should return an empty string if specified length to read is 0.
@@ -15473,7 +10139,12 @@ Sun Aug 22 16:27:38 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/lib/openssl/buffering.rb: should not use select.
-Sun Aug 22 01:10:36 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Aug 23 12:40:56 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * lib/resolv.rb (Config.default_config_hash): when multiple domains
+ are set, Win32::Resolv.get_resolv_info returns Array.
+
+Sun Aug 22 01:15:31 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/httpproxy.rb (WEBrick::HTTPProxyServer#proxy_connect):
should call :ProxyContentHandler before finishing CONNECT.
@@ -15485,15 +10156,6 @@ Sat Aug 21 06:41:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (arg_config, with_config): deal with '-' and '_'
uniformly. [ruby-dev:24118]
-Fri Aug 20 14:49:42 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (rb_io_check_writable): no need to check read buffer if
- already changed to write mode.
-
-Fri Aug 20 11:46:43 2004 UENO Katsuhiro <katsu@blue.sky.or.jp>
-
- * ext/zlib/zlib.c: GzipReader#ungetc caused crc error.
-
Thu Aug 19 16:29:45 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb: Fail to treat a hash value of 'font' option.
@@ -15507,15 +10169,17 @@ Thu Aug 19 15:15:24 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* dir.c (free_dir): fix memory leak. reported by yamamoto
madoka.
-Thu Aug 19 09:19:27 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Aug 19 11:00:00 2004 Akiyoshi, Masamichi <masamichi.akiyoshi@hp.com>
- * configure.in, win32/Makefile.sub (LIBS): need to link shell32
- library for SH* functions on mswin32 and mingw32.
+ * dln.c (dln_load): Modify to call lib$find_image_symbol for VMS.
+ * io.c (rb_io_fwrite): Use fputc() for VMS non-stream file.
- * wince/Makefile.sub (LIBS): need to link ceshell library for SH*
- functions on mswince.
+Thu Aug 19 06:07:45 2004 why the lucky stiff <why@ruby-lang.org>
-Thu Aug 19 03:07:00 2004 why the lucky stiff <why@ruby-lang.org>
+ * ext/syck/token.c: re2c no longer compiled with bit vectors. caused
+ problems for non-ascii characters. [ruby-core:03280]
+ * ext/syck/implicit.c: ditto.
+ * ext/syck/bytecode.c: ditto.
* lib/yaml/baseemitter.rb: folding now handles double-quoted strings,
fixed problem with extra line feeds at end of folding, whitespace
@@ -15524,9 +10188,9 @@ Thu Aug 19 03:07:00 2004 why the lucky stiff <why@ruby-lang.org>
* lib/yaml/rubytypes.rb: subtelties in handling strings with
non-printable characters and odd whitespace patterns.
-Wed Aug 18 23:44:20 2004 Minero Aoki <aamine@loveruby.net>
+Wed Aug 18 23:41:33 2004 Minero Aoki <aamine@loveruby.net>
- * lib/net/protocol.rb (rbuf_fill): OpenSSL::SSLSocket has its own
+ * lib/net/protocol.rb (rbuf_fill): OpenSSL::SSL::SSLSocket has its own
buffer, select(2) might not work. [ruby-dev:24072]
Wed Aug 18 17:10:12 2004 WATANABE Hirofumi <eban@ruby-lang.org>
@@ -15539,17 +10203,6 @@ Wed Aug 18 12:52:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_obj_instance_eval): evaluates under special singleton
classes as for special constants.
-Wed Aug 18 11:22:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (init_env): initialize HOME and USER environment
- variables unless set.
-
-Wed Aug 18 10:17:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (bind_eval): new method. [RCR 251]
-
- * string.c (rb_str_clear): new method. [ruby-dev:24104]
-
Tue Aug 17 17:20:59 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (rb_io_reopen): should clear allocated OpenFile. pointed
@@ -15560,19 +10213,23 @@ Tue Aug 17 01:36:32 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/usage.rb: Remove extra indent. Tidy 'ri' option
parsing so RDoc::usage plays better with OptionParser.
+Sat Aug 14 13:09:10 2004 Minero Aoki <aamine@loveruby.net>
+
+ * lib/fileutils.rb: backport from CVS HEAD (rev1.44).
+
+ * lib/fileutils.rb: cp_r should copy symlink itself, except cp_r
+ root.
+
+ * lib/fileutils.rb: new option mv :force.
+
+ * lib/fileutils.rb: new module FileUtils::DryRun.
+
Sat Aug 14 02:48:16 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/usage.rb: Added. Allows command line programs
to report usage using their initial RDoc comment.
-Sat Aug 14 01:25:48 2004 why the lucky stiff <why@ruby-lang.org>
-
- * ext/syck/token.c: re2c no longer compiled with bit vectors. caused
- problems for non-ascii characters. [ruby-core:03280]
- * ext/syck/implicit.c: ditto.
- * ext/syck/bytecode.c: ditto.
-
-Fri Aug 13 12:55:20 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Fri Aug 13 13:23:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/httputils.rb (WEBrick::HTTPUtils.parse_range_header):
fix regex for range-spec.
@@ -15581,44 +10238,15 @@ Fri Aug 13 12:55:20 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
(WEBrick::HTTPServlet::DefaultFileHandler#make_partial_content):
multipart/byteranges response was broken.
- * lib/xmlrpc/server.rb: refine example code.
-
-Thu Aug 12 10:54:17 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * rubyio.h (rb_eof_error): should mark as NORETURN.
-
- * win32/win32.c (make_cmdvector): adjust escaped successive
- double-quote handling.
-
-Thu Aug 12 01:53:10 2004 Tanaka Akira <akr@m17n.org>
-
- * io.c (read_buffered_data): extracted from rb_io_fread.
- (io_readpartial): new method IO#readpartial.
- [ruby-dev:24055]
-
-Wed Aug 11 17:17:50 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * configure.in (RPATHFLAG): stop setting RPATHFLAG on Interix.
-
-Mon Aug 9 15:03:20 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
* lib/webrick/httpservlet/erbhandler.rb
(WEBrick::HTTPServlet::ERBHandler#do_GET): should select media type
by suffix of script filename.
-Mon Aug 9 12:51:43 2004 Dave Thomas <dave@pragprog.com>
-
- * dir.c (dir_s_glob): Roll in Austin Ziegler's Dir.glob and
- fnmatch updates.
-
-Mon Aug 9 06:33:06 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (cp_r): copies symlink to symlink, except
- root entries of cp_r.
+ * lib/xmlrpc/server.rb: refine example code.
- * lib/fileutils.rb: new method FileUtils.copy_entry.
+Wed Aug 11 17:17:50 2004 WATANABE Hirofumi <eban@ruby-lang.org>
- * test/fileutils/test_fileutils.rb: more cp_r tests.
+ * configure.in (RPATHFLAG): stop setting RPATHFLAG on Interix.
Sun Aug 8 00:43:31 2004 why the lucky stiff <why@ruby-lang.org>
@@ -15630,38 +10258,21 @@ Sun Aug 8 00:43:31 2004 why the lucky stiff <why@ruby-lang.org>
collections. plain scalars are trimmed if indentation follows in
an ambiguous flow collection.
-Sat Aug 7 03:08:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * process.c (proc_daemon): new method. should be modified for
- platforms without /dev/null.
-
Sat Aug 7 00:50:01 2004 Tanaka Akira <akr@m17n.org>
* ext/zlib/zlib.c: Zlib::GzipReader#read(0) returns "" instead of nil.
-Wed Aug 4 13:26:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * marshal.c (r_bytes0): optimize out read(0). [ruby-talk:108276]
-
-Tue Aug 3 13:49:12 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Tue Aug 3 13:49:20 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/namespace.rb: bug fix
* ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: add Tk::TreeCtrl.loupe
-Mon Aug 2 23:33:48 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * test/ruby/test_file.rb (test_fnmatch): added more tests.
-
Mon Aug 2 18:04:21 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/msgcat.rb (set_translation): bug fix (fail to set
trans_str to the same as src_str when trans_str is not given.)
-Mon Aug 2 17:40:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (blk_free): fixed serious memory leak. [ruby-dev:24013]
-
Mon Aug 2 11:53:06 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/code_objects.rb (RDoc::Context::find_symbol): Fix infinite recursion
@@ -15672,21 +10283,15 @@ Mon Aug 2 11:48:29 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_methods): Allow '.'s in
variable names to support SWIG generated files (Hans Fugal)
-Sat Jul 31 23:08:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (is_defined): stupid mistakes fixed. [ruby-dev:24006]
-
-Sat Jul 31 17:39:47 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jul 31 17:40:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* misc/ruby-mode.el (ruby-expr-beg, ruby-parse-partial,
ruby-calculate-indent, ruby-move-to-block, ruby-forward-sexp,
ruby-backward-sexp): keywords must match word-wise.
-Sat Jul 31 13:37:51 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (is_defined): avoid unnecessary method invocations.
+Sat Jul 31 05:47:37 2004 why the lucky stiff <why@ruby-lang.org>
-Sat Jul 31 05:35:37 2004 why the lucky stiff <why@ruby-lang.org>
+ * lib/yaml.rb (YAML::load_file, YAML::parse_file): added.
* lib/yaml/rubytypes.rb: exceptions were using an older
YAML.object_maker. [ruby-core:03080]
@@ -15695,10 +10300,9 @@ Sat Jul 31 05:35:37 2004 why the lucky stiff <why@ruby-lang.org>
handline CR-LFs. "\000" was showing up on folded blocks which
stopped at EOF.
-Sat Jul 31 01:25:11 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (is_defined): call is_defined() before invoking
- rb_eval(). [ruby-talk:107867]
+ * ext/syck/token.c: re2c compiled with bit vectors now.
+ * ext/syck/implicit.c: ditto.
+ * ext/syck/bytecode.c: ditto.
Fri Jul 30 16:10:54 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -15716,26 +10320,8 @@ Wed Jul 28 18:59:17 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/cgi.rb (CGI::initialize): remove at_exit code for CGI_PARAMS
and CGI_COOKIES. they will no longer be used.
-Wed Jul 28 15:44:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_call0): should call rb_call_super() directly for
- visibility overriding. [ruby-dev:23989]
-
Wed Jul 28 01:04:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * env.h: remove argv from ruby_frame.
-
- * eval.c (rb_eval): no more copy on write.
-
- * eval.c (assign): ditto.
-
- * eval.c (rb_call0): can receive *rest by specifying negative
- argc. (-1 means 0 arg and *rest, -2 means 1 arg and *rest...)
-
- * eval.c (rb_call0): properly set frame's argc counter.
-
- * gc.c (rb_gc_mark_frame): need not to mark frame's argv
-
* gc.c (run_final): wrong order of data. [ruby-dev:23984]
Tue Jul 27 07:05:04 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -15756,13 +10342,11 @@ Mon Jul 26 11:22:55 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/httputils.rb (WEBrick::HTTPUtils.escape): should
escape space.
-Sun Jul 25 10:56:28 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Sun Jul 25 11:05:21 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* win32/win32.{h,c} (rb_w32_{f,fd,fs}open): workaround for bcc32's
{f,fd,fs}open bug. set errno EMFILE and EBADF. [ruby-dev:23963]
- * test/drb/drbtest.rb: fix method duplication.
-
Sat Jul 24 13:32:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* range.c (rb_range_beg_len): returns Qnil only when "beg" points
@@ -15773,24 +10357,37 @@ Fri Jul 23 16:40:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* gc.c (define_final): should not disclose NODE* to Ruby world.
[ruby-dev:23957]
-Fri Jul 23 08:52:22 2004 Shugo Maeda <shugo@ruby-lang.org>
+Fri Jul 23 09:03:16 2004 Shugo Maeda <shugo@ruby-lang.org>
- * lib/net/imap.rb (disconnected?): new method.
+ * lib/net/imap.rb (disconnected?): new method. (backported from HEAD)
Thu Jul 22 16:41:54 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/cgi/session.rb (CGI::Session::FileStore#update): sets the
- permission of the session data file to 0600.
+ permission of the session data file to 0600.
* lib/cgi/session/pstore.rb (CGI::Session::Pstore#initialize):
ditto.
-Mon Jul 19 00:53:46 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Thu Jul 22 00:02:21 2004 Masahiro Kitajima <katonbo@katontech.com>
+
+ * process.c (rb_f_system): not need to call last_status_set() any
+ longer on _WIN32.
+
+Tue Jul 20 09:15:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * test/fileutils/test_fileutils.rb: File.link raises EINVAL on BeOS.
+
+Mon Jul 19 01:15:07 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/httpservlet/cgihandler.rb
(WEBrick::HTTPServlet::CGIhandler#do_GET): set SystemRoot environment
variable to CGI process on Windows native platforms. [ruby-dev:23936]
+ * lib/webrick/httpservlet/cgihandler.rb
+ (WEBrick::HTTPServlet::CGIhandler#do_GET): use $?.exitstatus and
+ refine log message.
+
Sun Jul 18 16:14:29 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk/msgcat.rb (TkMsgCatalog.callback): bug fix
@@ -15800,19 +10397,18 @@ Sun Jul 18 08:13:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* sprintf.c (rb_f_sprintf): remove extra sign digit.
-Sun Jul 18 03:19:14 2004 Akinori MUSHA <knu@iDaemons.org>
-
- * dir.c (bracket): use NULL instead of 0.
+Sun Jul 18 03:21:42 2004 Akinori MUSHA <knu@iDaemons.org>
-Sun Jul 18 02:35:30 2004 Shugo Maeda <shugo@ruby-lang.org>
+ * dir.c (range): use NULL instead of 0.
- * lib/net/imap.rb (receive_responses): return if a LOGOUT response
- received.
+ * dir.c (range): get rid of a gcc 3.4 warning.
-Sat Jul 17 23:59:01 2004 Shugo Maeda <shugo@ruby-lang.org>
+Sun Jul 18 03:12:11 2004 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/net/imap.rb (receive_responses): return if a LOGOUT response
+ received. (backported from HEAD)
* lib/net/imap.rb (send_string_data): wait command continuation
- requests before sending octet data of literals.
+ requests before sending octet data of literals. (backported from HEAD)
Sat Jul 17 23:54:59 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -15826,14 +10422,6 @@ Sat Jul 17 18:29:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (stmt): not to show same error messages twice.
-Sat Jul 17 14:18:11 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * string.c (rb_str_match_m): String#match should also take
- optional argument. [ruby-core:03205]
-
- * re.c (rb_reg_match_m): add optional second argugment "pos" to
- specify match start point. [ruby-core:03203]
-
Sat Jul 17 13:13:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/irb/ruby-lex.rb (RubyLex::identify_string): %s string do not
@@ -15841,7 +10429,7 @@ Sat Jul 17 13:13:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
Sat Jul 17 05:26:27 2004 Dave Thomas <dave@pragprog.com>
- * lib/rdoc/diagram.rb: Incorporate Micheal Neumann's
+ * lib/rdoc/diagram.rb: Incorporate Micheal Neuman's
client-side imagemao patch
Sat Jul 17 01:57:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -15854,6 +10442,24 @@ Fri Jul 16 22:30:28 2004 Michael Neumann <mneumann@ntecs.de>
* file.c (rb_stat_dev_major): new methods File::Stat#dev_major and
#dev_minor. [ruby-core:03195]
+Fri Jul 16 15:23:53 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (return_jump, break_jump): raise unexpceted local jump
+ exception directly. [ruby-dev:23740]
+
+ * lib/base64.rb (Deprecated): super in bound method calls original
+ name method in stable version. [ruby-dev:23916]
+
+Fri Jul 16 11:31:49 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * lib/test/unit/ui/{fox,gtk,gtk2}/testrunner.rb: remove
+ garbage (patch from akira yamada) [ruby-dev:23911]
+
+Fri Jul 16 11:20:00 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * sprintf.c (rb_f_sprintf): fix output of NaN, Inf and -Inf with
+ "%f" or etc on MSVCRT platforms. (backported from HEAD)
+
Fri Jul 16 11:17:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* error.c (exit_initialize): use EXIT_SUCCESS instead of 0.
@@ -15873,19 +10479,13 @@ Thu Jul 15 23:53:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
Thu Jul 15 22:59:48 2004 Shugo Maeda <shugo@ruby-lang.org>
* ext/readline/extconf.rb: added dir_config for curses, ncurses,
- termcap.
-
-Thu Jul 15 20:44:46 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ termcap. (backported from HEAD)
- * class.c: rdoc patch
+Thu Jul 15 20:29:15 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-Thu Jul 15 14:12:34 2004 why the lucky stiff <why@ruby-lang.org>
-
- * lib/yaml.rb (YAML::load_file, YAML::parse_file): added.
-
- * ext/syck/token.c: re2c compiled with bit vectors now.
- * ext/syck/implicit.c: ditto.
- * ext/syck/bytecode.c: ditto.
+ * class.c, error.c, eval.c, intern.h, object.c, variable.c:
+ do not set path if it is a singleton class. [ruby-dev:22588]
+ (backport from 1.9)
Thu Jul 15 10:15:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -15912,12 +10512,7 @@ Thu Jul 15 10:15:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/tkextlib/: add samples of Iwidget and TkTable
-Wed Jul 14 23:49:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enum.c (enum_min_by): new method Enum#min_by. added Enum#max_by
- as well.
-
-Wed Jul 14 18:05:21 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Wed Jul 14 18:08:37 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_asn1.c (ossl_asn1cons_to_der): fix type of
argument. [ruby-dev:23891]
@@ -15925,14 +10520,14 @@ Wed Jul 14 18:05:21 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* test/openssl/test_x509store.rb: prune tests for CRL checking
unless X509::V_FLAG_CRL_CHECK is defined.
-Wed Jul 14 12:20:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Jul 14 12:29:07 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* util.c (ruby_strtod): should not convert string in the form of
"-I.FE-X" which both "I" and "F" are ommitted. [ruby-dev:23883]
* test/ruby/test_float.rb (test_strtod): add test for bug fix.
-Wed Jul 14 00:33:48 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Jul 14 00:31:15 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* array.c: rdoc patch. merged patch from Johan Holmberg
<holmberg@iar.se> [ruby-core:3170]
@@ -15947,7 +10542,7 @@ Tue Jul 13 19:39:12 2004 akira yamada <akira@ruby-lang.org>
* test/uri/test_generic.rb (TestGeneric#test_merge): added tests.
-Tue Jul 13 15:48:56 2004 Akinori MUSHA <knu@iDaemons.org>
+Tue Jul 13 15:51:45 2004 Akinori MUSHA <knu@iDaemons.org>
* lib/mkmf.rb (init_mkmf): Do not add $(libdir) to $LIBPATH in
extmk mode.
@@ -15959,14 +10554,14 @@ Tue Jul 13 00:50:48 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb: Support call-seq: for Ruby files.
-Mon Jul 12 21:20:51 2004 Dave Thomas <dave@pragprog.com>
+Mon Jul 12 21:20:36 2004 Dave Thomas <dave@pragprog.com>
* html_generator.rb: Support hyperlinks of the form {any text}[xxx]
as well as stuff[xxx]
Sat Jul 10 09:30:24 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * test/soap/marshal/test_struct.rb: use qualified built-in class name
+ * test/soap/marshal/test_struct.rb: use qualified build-tin class name
(::Struct) to avoid name crash.
Sat Jul 10 04:21:56 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
@@ -15981,7 +10576,7 @@ Sat Jul 10 04:21:56 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
function of Tk::ValidateConfigure to define validatecommand
methods easier
-Fri Jul 9 22:18:59 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri Jul 9 22:36:36 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* array.c, enum.c, pack.c: rdoc patch from Johan Holmberg
<holmberg@iar.se> [ruby-core:3132] [ruby-core:3136]
@@ -16008,26 +10603,29 @@ Fri Jul 9 01:47:08 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/tkextlib/iwidgets : very simple examples of
[incr Widgets]
-Thu Jul 8 19:27:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (rb_cv_stack_end_address): detect stack end address
- variable supplied by system. [ruby-core:03115]
+Thu Jul 8 22:52:19 2004 Kouhei Sutou <kou@cozmixng.org>
- * gc.c (Init_stack): use system provided address if possible.
+ * lib/rss/{rss,parser,0.9,1.0,2.0}.rb: supported RSS 0.9x/2.0
+ validation and validation which disregard order of elements.
+ * test/rss/test_parser.rb: added tests for RSS 0.9x/2.0
+ validation.
+ * test/rss/{test_trackback,rss-testcase}.rb: fixed no good method
+ name.
Thu Jul 8 00:05:23 2004 akira yamada <akira@ruby-lang.org>
* lib/tempfile.rb (Tempfile::initialize): got out code of
generating tmpname. [ruby-dev:23832][ruby-dev:23837]
-Wed Jul 7 02:31:41 2004 Kouhei Sutou <kou@cozmixng.org>
+Wed Jul 7 15:53:14 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/rss/{rss,parser,0.9,1.0,2.0}.rb: supported RSS 0.9x/2.0
- validation and validation which disregard order of elements.
- * test/rss/test_parser.rb: added tests for RSS 0.9x/2.0
- validation.
- * test/rss/{test_trackback,rss-testcase}.rb: fixed no good method
- name.
+ * string.c (rb_str_match): raise TypeError when both arguments are
+ strings. [ruby-dev:22869] (backported from HEAD)
+
+ * string.c (rb_str_match2): removed.
+
+ * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub,
+ wince/Makefile.sub (string.c): now not depend on version.h.
Wed Jul 7 00:48:34 2004 WATANABE Hirofumi <eban@ruby-lang.org>
@@ -16055,7 +10653,7 @@ Mon Jul 5 09:02:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_thread_yield, rb_f_catch): 4th argument to rb_yield_0()
is a set of bit flags. [ruby-dev:23859]
-Mon Jul 5 01:20:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Jul 5 01:27:32 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* lib/drb/drb.rb(DRbConn self.open): If socket pool is full, close
the socket whose last-access-time is oldest. (and add new one)
@@ -16065,10 +10663,12 @@ Sun Jul 4 12:24:50 2004 Kouhei Sutou <kou@cozmixng.org>
* lib/rss/rss.rb: added copyright header.
-Sat Jul 3 22:25:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Sun Jul 4 00:24:40 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * added files:
- * lib/soap/header/*
+ * added files
+ * lib/soap/attachment.rb
+ * lib/soap/header
+ * lib/soap/mimemessage.rb
* lib/soap/rpc/httpserver.rb
* lib/wsdl/soap/cgiStubCreator.rb
* lib/wsdl/soap/classDefCreator.rb
@@ -16082,29 +10682,36 @@ Sat Jul 3 22:25:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/wsdl/xmlSchema/enumeration.rb
* lib/wsdl/xmlSchema/simpleRestriction.rb
* lib/wsdl/xmlSchema/simpleType.rb
- * lib/xsd/codegen/*
+ * lib/xsd/codegen
* lib/xsd/codegen.rb
- * sample/soap/authheader/*
- * sample/soap/raa2.4/*
- * sample/soap/ssl/*
- * sample/soap/swa/*
+ * sample/soap/authheader
+ * sample/soap/raa2.4
+ * sample/soap/ssl
+ * sample/soap/swa
* sample/soap/whois.rb
- * sample/wsdl/raa2.4/*
- * test/soap/header/*
- * test/soap/ssl/*
- * test/soap/struct/*
- * test/soap/swa/*
- * test/soap/wsdlDriver/*
+ * sample/soap/calc/samplehttpd.conf
+ * sample/soap/exchange/samplehttpd.conf
+ * sample/soap/sampleStruct/samplehttpd.conf
+ * sample/wsdl/raa2.4
+ * sample/wsdl/googleSearch/samplehttpd.conf
+ * test/openssl/_test_ssl.rb
+ * test/soap/header
+ * test/soap/ssl
+ * test/soap/struct
+ * test/soap/swa
+ * test/soap/wsdlDriver
* test/wsdl/multiplefault.wsdl
- * test/wsdl/simpletype/*
+ * test/wsdl/simpletype
* test/wsdl/test_multiplefault.rb
- * modified files:
+ * modified files
* lib/soap/baseData.rb
* lib/soap/element.rb
* lib/soap/generator.rb
+ * lib/soap/marshal.rb
* lib/soap/netHttpClient.rb
* lib/soap/parser.rb
+ * lib/soap/processor.rb
* lib/soap/property.rb
* lib/soap/soap.rb
* lib/soap/streamHandler.rb
@@ -16119,6 +10726,7 @@ Sat Jul 3 22:25:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/soap/mapping/wsdlRegistry.rb
* lib/soap/rpc/cgistub.rb
* lib/soap/rpc/driver.rb
+ * lib/soap/rpc/element.rb
* lib/soap/rpc/proxy.rb
* lib/soap/rpc/router.rb
* lib/soap/rpc/soaplet.rb
@@ -16135,12 +10743,26 @@ Sat Jul 3 22:25:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/wsdl/xmlSchema/schema.rb
* lib/xsd/datatypes.rb
* lib/xsd/qname.rb
+ * sample/soap/calc/httpd.rb
+ * sample/soap/exchange/httpd.rb
+ * sample/soap/sampleStruct/httpd.rb
* sample/soap/sampleStruct/server.rb
* sample/wsdl/amazon/AmazonSearch.rb
* sample/wsdl/amazon/AmazonSearchDriver.rb
+ * sample/wsdl/googleSearch/httpd.rb
+ * test/soap/test_basetype.rb
* test/soap/test_property.rb
+ * test/soap/test_streamhandler.rb
+ * test/soap/calc/test_calc.rb
+ * test/soap/calc/test_calc2.rb
* test/soap/calc/test_calc_cgi.rb
+ * test/soap/helloworld/test_helloworld.rb
* test/wsdl/test_emptycomplextype.rb
+ * test/wsdl/axisArray/test_axisarray.rb
+ * test/wsdl/datetime/test_datetime.rb
+ * test/wsdl/raa/test_raa.rb
+ * test/xsd/test_xmlschemaparser.rb
+ * test/xsd/test_xsd.rb
* summary
* add SOAP Header mustUnderstand support.
@@ -16155,33 +10777,34 @@ Sat Jul 3 22:25:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* add WSDL simpleType support to restrict lexical value space.
+ * add SOAP with Attachment support.
+
Sat Jul 3 17:19:44 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* ext/tk/lib/tkextlib/tkDND.rb: fix syntax error.
-Thu Jul 1 18:36:08 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Thu Jul 1 23:15:29 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/lib/tcltklib : bug fix
+ * lib/pstore.rb (transaction): safer backup scheme. [ruby-list:39102]
- * ext/tk/lib/tk : bug fix and add Tcl/Tk extension support libraries
+ * lib/pstore.rb (commit_new): use FileUtils.copy_stream for Cygwin.
+ [ruby-dev:23157]
-Thu Jul 1 18:31:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/pstore.rb (transaction): allow overriding dump and load.
+ [ruby-dev:23567]
* lib/pstore.rb (PStore#transaction): get rid of opening in write mode
when read only transaction. [ruby-dev:23842]
-Thu Jul 1 00:44:42 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+ * lib/yaml/store.rb: follow lib/pstore.rb's change.
- * ext/openssl/ossl_cipher.c (ossl_cipher_encrypt, ossl_cipher_decrypt):
- re-implemnt (the arguments for this method is ).
+Thu Jul 1 18:36:08 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/openssl/ossl_cipher.c (ossl_cipher_pkcs5_keyivgen): new method
- OpenSSL::Cipher::Cipher#pkcs5_keyivgen. it calls EVP_BytesToKey().
+ * ext/tk/lib/tcltklib : bug fix
- * ext/openssl/ossl_cipher.c (ossl_cipher_set_key_length): new method
- OpenSSL::Cipher::Cipher#key_len=.
+ * ext/tk/lib/tk : bug fix and add Tcl/Tk extension support libraries
-Wed Jun 30 19:48:09 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Thu Jul 1 11:59:45 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/extconf.rb: check for EVP_CIPHER_CTX_copy, ENGINE_add,
EVP_CIPHER_CTX_set_padding, EVP_CipherFinal_ex, EVP_CipherInit_ex,
@@ -16193,17 +10816,23 @@ Wed Jun 30 19:48:09 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
EVP_CipherInit_ex, EVP_CipherFinal_ex, HMAC_Init_ex): new macro for
OpenSSL 0.9.6.
+ * ext/openssl/ossl_cipher.c (ossl_cipher_encrypt, ossl_cipher_decrypt):
+ re-implemnt (the arguments for this method is ).
+
+ * ext/openssl/ossl_cipher.c (ossl_cipher_pkcs5_keyivgen): new method
+ OpenSSL::Cipher::Cipher#pkcs5_keyivgen. it calls EVP_BytesToKey().
+
* ext/openssl/ossl_cipher.c (ossl_cipher_alloc, ossl_cipher_initialize,
- ossl_cipher_copy, ossl_cipher_reset, ossl_cipher_encrypt,
- ossl_cipher_decrypt, ossl_cipher_final, ossl_cipher_set_key,
- ossl_cipher_set_iv): replace all EVP_CipherInit and
- EVP_CipherFinal into EVP_CipherInit_ex and EVP_CipherFinal_ex.
+ ossl_cipher_copy, ossl_cipher_reset ossl_cipher_final,
+ ossl_cipher_set_key, ossl_cipher_set_iv): replace all EVP_CipherInit
+ and EVP_CipherFinal into EVP_CipherInit_ex and EVP_CipherFinal_ex.
and EVP_CIPHER_CTX_init should only be called once.
- * ext/openssl/ossl_cipher.c (ossl_cipher_set_padding): check for
- EVP_CIPHER_CTX_set_padding.
+ * ext/openssl/ossl_cipher.c (ossl_cipher_set_key_length): new method
+ OpenSSL::Cipher::Cipher#key_len=.
- * ext/openssl/ossl_cipher.c (Init_ossl_cipher): Cipher#<< is deprecated.
+ * ext/openssl/ossl_cipher.c (ossl_cipher_init_deprecated): new
+ finction; print warning for Cipher#<<.
* ext/openssl/ossl_digest.c: replace all EVP_DigestInit and
EVP_DigestFinal into EVP_DigestInit_ex and EVP_DigestFinal_ex.
@@ -16221,16 +10850,50 @@ Wed Jun 30 19:48:09 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* test/openssl/test_cipher.rb, test/openssl/test_digest.rb,
test/openssl/test_hmac.rb: new file.
-Wed Jun 30 16:59:39 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Jul 1 04:08:30 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_asn1.c (ossl_i2d_ASN1_TYPE, ossl_ASN1_TYPE_free):
+ workaround for the versions earlier than OpenSSL-0.9.7.
+
+Thu Jul 1 03:33:55 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize): should create
+ empty pkey object if no argument is passed. [ruby-talk:103328]
+
+ * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.
+
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize): ditto.
+
+ * ext/openssl/ossl_pkey_dh.c: add new methods: OpenSSL::PKey::DH#p,
+ OpenSSL::PKey::DH#p=, OpenSSL::PKey::DH#g, OpenSSL::PKey::DH#g=,
+ OpenSSL::PKey::DH#pub_key, OpenSSL::PKey::DH#pub_key=,
+ OpenSSL::PKey::DH#priv_key and OpenSSL::PKey::DH#priv_key=.
+
+ * ext/openssl/ossl_pkey_dsa.c: add new methods: OpenSSL::PKey::DSA#p,
+ OpenSSL::PKey::DSA#p=, OpenSSL::PKey::DSA#q, OpenSSL::PKey::DSA#q=,
+ OpenSSL::PKey::DSA#g, OpenSSL::PKey::DSA#g=,
+ OpenSSL::PKey::DSA#pub_key, OpenSSL::PKey::DSA#pub_key=,
+ OpenSSL::PKey::DSA#priv_key and OpenSSL::PKey::DSA#priv_key=.
+
+Thu Jul 1 03:16:09 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+
+ * ext/openssl/ossl_ssl.c (ossl_ssl_read): take optional second argument
+ to specify a string to be written.
+
+ * ext/openssl/lib/openssl/buffering.rb (OpenSSL::Buffering#read):
+ take optional second argument to specify a string to be written.
- * test/ruby/test_file.rb (test_fnmatch): some tests for File.fnmatch
- are added.
+ * ext/openssl/lib/openssl/buffering.rb (OpenSSL::Buffering#gets):
+ refine regexp for end-of-line.
+
+ * ext/opnessl/lib/openssl/ssl.rb
+ (OpenSSL::SSL::SocketForwarder#listen): fix typo.
Wed Jun 30 11:38:51 2004 Mikael Brockman <phubuh@phubuh.org>
* parse.y (primary): should not be NULL. [ruby-core:03098]
-Wed Jun 30 02:41:10 2004 why the lucky stiff <why@ruby-lang.org>
+Wed Jun 30 02:53:24 2004 why the lucky stiff <why@ruby-lang.org>
* ext/syck/rubyext.c (syck_emitter_new): set buffer after
Data_Wrap_Struct to avoid possible GC. [ruby-talk:104835]
@@ -16250,107 +10913,80 @@ Mon Jun 28 14:57:56 2004 Jeff Mitchell <quixoticsycophant@yahoo.com>
* configure.in, lib/mkmf.rb (LIBPATHFLAG): use double quotes due to
DOSISH compilers. [ruby-core:03107]
-Mon Jun 28 00:35:29 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Mon Jun 28 00:30:19 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* sample/drb/*.rb: using 'DRb.thread.join' instead of 'gets'
-Sun Jun 27 22:36:47 2004 Kouhei Sutou <kou@cozmixng.org>
+Sun Jun 27 22:39:51 2004 Kouhei Sutou <kou@cozmixng.org>
* sample/rss/tdiary_plugin/rss-recent.rb: supported Hiki.
-Sat Jun 26 15:17:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jun 27 12:19:46 2004 Kouhei Sutou <kou@cozmixng.org>
- * variable.c (rb_mod_class_variables): class variables are no longer
- inherited. [ruby-dev:23808]
+ * {lib,sample,test}/rss: added RSS Parser. [ruby-dev:23780]
-Sat Jun 26 11:07:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jun 26 11:07:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (aix): -b must come at the start of the command line,
and -e must not appear while testing libraries. [ruby-talk:104501]
- * lib/mkmf.rb (find_header, dir_config): quote directory names if
- necessary. [ruby-talk:104505]
+ * lib/mkmf.rb (dir_config): quote directory names if necessary.
+ [ruby-talk:104505]
-Sat Jun 26 00:13:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jun 25 15:33:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (rb_fopen, rb_fdopen, rb_io_reopen): setvbuf() may return
- positive value on failure. [ruby-dev:23792]
+ * ext/iconv/extconf.rb: check stricter. [ruby-talk:104501]
-Fri Jun 25 18:07:15 2004 Michal Rokos <michal@ruby-lang.org>
+ * ext/iconv/extconf.rb: include iconv.h for libiconv. [ruby-dev:22715]
- * gc.c: bring back _stklen for DJGPP [ruby-core:3084]
+Fri Jun 25 08:31:29 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-Fri Jun 25 15:33:01 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (rb_thread_atfork): remove "fork terminates thread"
+ warning. [ruby-dev:23768]
- * ext/iconv/extconf.rb: check stricter. [ruby-talk:104501]
+ * object.c (rb_obj_clone): backport FL_FINALIZE patch from 1.9.
+ [ruby-core:02786][ruby-core:03067]
-Fri Jun 25 01:58:01 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/socket/socket.c (sock_sockaddr): Socket#gethostbyname()
+ should give us packed address, not struct sockaddr.
+ [ruby-core:03053]
+
+Fri Jun 25 02:04:23 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* {bcc32,win32,wince}/setup.mak: remove RUBY_EXTERN lines when
- including version.h. [ruby-talk:104456]
+ including version.h. [ruby-talk:104456] (backported from HEAD)
Thu Jun 24 14:23:29 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (rb_io_fread): return already read data when system call is
interrupted. [ruby-talk:97206]
-Thu Jun 24 01:25:21 2004 Shugo Maeda <shugo@ruby-lang.org>
+Thu Jun 24 01:32:43 2004 Shugo Maeda <shugo@ruby-lang.org>
* version.h: added declarations of ruby_version,
- ruby_release_date, ruby_platform.
-
-Thu Jun 24 01:07:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/socket/socket.c (sock_sockaddr): Socket#gethostbyname()
- should give us packed address, not struct sockaddr.
- [ruby-core:03053]
+ ruby_release_date, ruby_platform.
+ (backported from HEAD)
-Wed Jun 23 22:19:10 2004 Dave Thomas <dave@pragprog.com>
+Wed Jun 23 22:23:37 2004 Dave Thomas <dave@pragprog.com>
* ext/socket/socket.c (sock_s_gethostbyaddr): Work around problem
with OS X not returning 'from' parameter to recvfrom for
connection-oriented sockets.
-Wed Jun 23 22:16:16 2004 Michal Rokos <michal@ruby-lang.org>
-
- * io.c: io_seek()'s retval should be checked [ruby-core:03045]
-
-Wed Jun 23 21:48:27 2004 Michal Rokos <michal@ruby-lang.org>
-
- * time.c: Fix indentation.
-
- * main.c: Remove _stklen, and _CRT_glob. Move _stacksize for
- __human68k__ to gc.c where the others are.
-
- * gc.c: put _stacksize in place and clean the #ifdefs macros.
-
-Wed Jun 23 17:37:54 2004 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb: added new option --ssl.
-
Wed Jun 23 01:45:27 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RubyLex::identify_quotation):
Fix problem with the 'r' being dropped from %r{xxx}
-Wed Jun 23 00:10:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Jun 23 00:20:20 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* ext/win32ole/win32ole.c (ole_hresult2msg): remove trailing
CRs and LFs. (doesn't depend on CR+LF) [ruby-dev:23749]
Wed Jun 23 00:00:25 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * eval.c (return_jump, break_jump): raise unexpected local jump
- exception directly. [ruby-dev:23740]
-
* io.c (rb_io_initialize): should check fcntl result. [ruby-dev:23742]
-Tue Jun 22 23:35:43 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * sprintf.c (rb_f_sprintf): support FZERO and FSPACE with NaN/Inf.
-
- * test/ruby/test_sprintf.rb (test_nan, test_inf): add tests.
-
Tue Jun 22 21:11:36 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole.c (OLE_FREE): should not call CoFreeUnuse-
@@ -16361,56 +10997,21 @@ Tue Jun 22 21:11:36 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole.c (ole_hresult2msg): truncate error message
before CR.
-Tue Jun 22 19:24:59 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * sprintf.c (rb_f_sprintf): unify output of NaN, Inf and -Inf with
- "%f" or etc on all platform. [ruby-dev:23704], [ruby-dev:23747]
-
-Tue Jun 22 15:28:12 2004 Michal Rokos <michal@ruby-lang.org>
-
- * compar.c: Remove explicit NIL_P() checks since rb_cmpint() does it
- again in the exactly same manner.
-
-Tue Jun 22 01:32:40 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize): should create
- empty pkey object if no argument is passed. [ruby-talk:103328]
-
- * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.
-
- * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize): ditto.
-
- * ext/openssl/ossl_pkey_dh.c: add new methods: OpenSSL::PKey::DH#p,
- OpenSSL::PKey::DH#p=, OpenSSL::PKey::DH#g, OpenSSL::PKey::DH#g=,
- OpenSSL::PKey::DH#pub_key, OpenSSL::PKey::DH#pub_key=,
- OpenSSL::PKey::DH#priv_key and OpenSSL::PKey::DH#priv_key=.
-
- * ext/openssl/ossl_pkey_dsa.c: add new methods: OpenSSL::PKey::DSA#p,
- OpenSSL::PKey::DSA#p=, OpenSSL::PKey::DSA#q, OpenSSL::PKey::DSA#q=,
- OpenSSL::PKey::DSA#g, OpenSSL::PKey::DSA#g=,
- OpenSSL::PKey::DSA#pub_key, OpenSSL::PKey::DSA#pub_key=,
- OpenSSL::PKey::DSA#priv_key and OpenSSL::PKey::DSA#priv_key=.
-
-Mon Jun 21 09:24:51 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jun 22 16:47:42 2004 Shugo Maeda <shugo@ruby-lang.org>
- * win32/win32.c (rb_w32_opendir): should set errno if error occurs
- when calling OS API.
+ * lib/net/ftp.rb (MDTM_REGEXP): fix for demon's ftp server.
+ Thanks, Rutger Nijlunsing.
-Sun Jun 20 21:12:54 2004 Shugo Maeda <shugo@ruby-lang.org>
+Mon Jun 21 10:19:23 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/net/ftp.rb (binary=): send TYPE commands only once.
+ * win32/win32.c (rb_w32_opendir): use FindFirstFile()/FindNextFile()/
+ FindClose() instead of _findfirst()/_findnext()/_findclose().
+ merge from HEAD.
-Sat Jun 19 13:27:01 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jun 19 13:24:15 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (method_call): allow changing $SAFE. [ruby-dev:23713]
- * eval.c (proc_set_safe_level, proc_invoke, rb_mod_define_method): not
- set $SAFE for methods defined from Proc. [ruby-dev:23697]
-
-Sat Jun 19 01:10:12 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * sample/rss/tdiary_plugin/rss-recent.rb: added more information.
-
Fri Jun 18 23:12:22 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (proc_save_safe_level, rb_set_safe_level, safe_setter): limit
@@ -16421,27 +11022,10 @@ Wed Jun 16 23:05:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* object.c (rb_mod_freeze): prepare string representation before
freezing. [ruby-talk:103646]
-Wed Jun 16 19:57:24 2004 Michal Rokos <michal@ruby-lang.org>
-
- * test/ruby/test_array.rb: extend testcase to check #first, #last,
- #shift, #unshift, #pop, #push
+Wed Jun 16 16:04:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 16 16:05:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (ary_new): move alloc behind checks. [ruby-core:02982]
-
- * array.c (rb_ary_pop_m, rb_ary_shift_m): take arg to behave as push
- and unshift.
-
- * array.c (rb_ary_first, rb_ary_last): make shared array for result
- array, and correct doc for Array#first(n) and Array#last(n)
-
- * array.c (rb_ary_select): not accept any arg.
-
-Wed Jun 16 16:03:59 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * object.c (rb_class_inherited_p): singleton class inherits Class
- rather than its object's class. [ruby-dev:23690]
+ * object.c (rb_mod_le): singleton class inherits Class rather than its
+ object's class. [ruby-dev:23690]
Wed Jun 16 16:01:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -16476,36 +11060,31 @@ Sun Jun 13 00:23:04 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/sample/menubar?.rb: [add] sample of menu_spec usage
-Sat Jun 12 14:15:20 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c: RDOC for File::FNM_CASEFOLD was missed.
-
Sat Jun 12 11:15:53 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* configure.in (target_os): strip -gnu suffix on Linux.
-Fri Jun 11 22:08:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+Fri Jun 11 17:08:21 2004 Akinori MUSHA <knu@iDaemons.org>
- * array.c: remove #indexes, #indices.
+ * config.guess: Restore a wrongly removed hyphen.
- * hash.c: ditto.
+Fri Jun 11 14:30:08 2004 Akinori MUSHA <knu@iDaemons.org>
- * ext/dbm/dbm.c: remove #indexes, #indices, "values_at" warning
- from #select.
+ * config.guess: Attempt to avoid system name change on
+ Darwin platforms also.
- * ext/gdbm/gdbm.c: ditto.
-
- * ext/sdbm/init.c: ditto.
+Fri Jun 11 14:22:45 2004 Akinori MUSHA <knu@iDaemons.org>
- * ext/dbm/dbm.c (Init_dbm): set VERSION constant as "unknown" when
- DB_VERSION_STRING is not available.
+ * config.guess, config.sub: Attempt to avoid system name change on
+ Linux platforms. We have been using "linux" instead of
+ "linux-gnu" on this branch.
Thu Jun 10 19:19:41 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/sdbm/init.c (fsdbm_store): sdbm should use StringValue().
[ruby-talk:103062]
-Wed Jun 9 16:09:01 2004 akira yamada <akira@ruby-lang.org>
+Wed Jun 9 18:04:14 2004 akira yamada <akira@ruby-lang.org>
* lib/uri/generic.rb (URI::Generic::merge,
URI::Generic::route_from): accepts non-hierarchical URI.
@@ -16514,18 +11093,12 @@ Wed Jun 9 16:09:01 2004 akira yamada <akira@ruby-lang.org>
* test/uri/test_generic.rb (TestGeneric::test_route,
TestGeneric::test_merge): added tests for above changes.
-Wed Jun 9 15:39:55 2004 Akinori MUSHA <knu@iDaemons.org>
-
- * configure.in: Add support for DragonFly BSD.
-
-Wed Jun 9 15:07:06 2004 Akinori MUSHA <knu@iDaemons.org>
+Wed Jun 9 17:39:37 2004 Akinori MUSHA <knu@iDaemons.org>
* config.guess, config.sub: Update to a more recent version as of
2004-01-20.
-Wed Jun 9 11:20:05 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c: remove unused functions and variables.
+ * configure.in: Add support for DragonFly BSD.
Wed Jun 2 20:16:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -16543,43 +11116,82 @@ Fri May 28 11:20:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (eval): reverted wrongly removed condition. [ruby-dev:23638]
-Thu May 27 21:37:50 2004 Tanaka Akira <akr@m17n.org>
+Thu May 27 23:15:18 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * lib/pathname.rb (Pathname#initialize): fix pathname initialization
- by pathname.
-
-Thu May 27 20:02:09 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * lib/logger.rb: leading 0 padding of timestamp usec part.
- * io.c (rb_io_fwrite): check all case errno != 0 [ruby-dev:23648]
+ * lib/csv.rb (CSV.parse): [CAUTION] behavior changed. in the past,
+ CSV.parse accepts a filename to be read-opened (it was just a
+ shortcut of CSV.open(filename, 'r')). now CSV.parse accepts a
+ string or a stream to be parsed e.g.
+ CSV.parse("1,2\n3,r") #=> [['1', '2'], ['3', '4']]
-Thu May 27 15:54:02 2004 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/csv.rb: CSV::Row and CSV::Cell are deprecated. these classes
+ are removed in the future. in the new csv.rb, row is represented
+ as just an Array. since CSV::Row was a subclass of Array, it won't
+ hurt almost all programs except one which depended CSV::Row#match.
+ and a cell is represented as just a String or nil(NULL). this
+ change will cause widespread destruction.
- * lib/net/ftp.rb (MDTM_REGEXP): fix for demon's ftp server.
- Thanks, Rutger Nijlunsing.
+ CSV.open("foo.csv", "r") do |row|
+ row.each do |cell|
+ if cell.is_null # using Cell#is_null
+ p "(NULL)"
+ else
+ p cell.data # using Cell#data
+ end
+ end
+ end
-Thu May 27 14:53:13 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+ must be just;
- * io.c (rb_io_fwrite): workaround for bcc32's fwrite bug.
- add errno checking. [ruby-dev:23627]
+ CSV.open("foo.csv", "r") do |row|
+ row.each do |cell|
+ if cell.nil?
+ p "(NULL)"
+ else
+ p cell
+ end
+ end
+ end
- * io.c (rb_io_fwrite): should check if errno == ENOENT, too.
+ * lib/csv.rb: [CAUTION] record separator(CR, LF, CR+LF) behavior
+ change. CSV.open, CSV.parse, and CSV,generate now do not force
+ opened file binmode. formerly it set binmode explicitly.
-Thu May 27 11:25:03 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+ with CSV.open, binmode of opened file depends the given mode
+ parameter "r", "w", "rb", and "wb". CSV.parse and CSV.generate open
+ file with "r" and "w".
- * test/csv/test_csv.rb: illegal require module name (../lib/csv.rb).
+ setting mode properly is user's responsibility now.
-Wed May 26 23:12:13 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+ * lib/csv.rb: accepts String as a fs (field separator/column separator)
+ and rs (record separator/row separator)
* lib/csv.rb (CSV.read, CSV.readlines): added. works as IO.read and
IO.readlines in CSV format.
- * lib/csv.rb (CSV.parse): [CAUTION] behavior changed. in the past,
- CSV.parse accepts a filename to be read-opened (it was just a
- shortcut of CSV.open(filename, 'r')). now CSV.parse accepts a
- string or a stream to be parsed e.g.
- CSV.parse("1,2\n3,r") #=> [['1', '2'], ['3', '4']]
+ * lib/csv.rb: added CSV.foreach(path, rs = nil, &block). CSV.foreach
+ now does not handle "| cmd" as a path different from IO.foreach.
+ needed?
+
+ * test/csv/test_csv.rb: updated.
+
+ * test/ruby/test_float.rb: added test_strtod to test Float("0").
+
+Thu May 27 21:37:50 2004 Tanaka Akira <akr@m17n.org>
+
+ * lib/pathname.rb (Pathname#initialize): refine pathname initialization
+ by pathname.
+
+Thu May 27 20:22:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * io.c (rb_io_fwrite): check all case errno != 0 [ruby-dev:23648]
+
+Thu May 27 14:53:13 2004 WATANABE Hirofumi <eban@ruby-lang.org>
- * test/csv/test_csv.rb: follow above changes.
+ * io.c (rb_io_fwrite): workaround for bcc32's fwrite bug.
+ add errno checking. [ruby-dev:23627]
Wed May 26 14:19:42 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -16610,33 +11222,16 @@ Wed May 26 00:00:00 2004 why the lucky stiff <why@ruby-lang.org>
* lib/yaml/baseemitter.rb (indent_text): simpler flow block code.
-Tue May 25 11:54:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_yield_0, proc_invoke, proc_arity): allow passing a block
- to a Proc. [ruby-dev:23533]
-
- * parse.y (block_par, block_var): ditto.
-
-Tue May 25 01:50:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_asn1.c (ossl_i2d_ASN1_TYPE, ossl_ASN1_TYPE_free):
- workaround for the versions earlier than OpenSSL-0.9.7.
+ * lib/yaml.rb: added rdoc to beginning of lib.
Mon May 24 10:46:26 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
* lib/rdoc/generators/template/html/html.rb: SYSTEM identifiers
must be absolute URIs
-Sun May 23 04:53:50 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * lib/pstore.rb (transaction): allow overriding dump and load.
- [ruby-dev:23567]
-
- * lib/yaml/store.rb: follow lib/pstore.rb's change.
-
-Sat May 22 11:54:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat May 22 12:00:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * MANIFEST: add test/openssl/test_x509store.rb.
+ * MANIFEST: add new encodings in rexml.
* ext/tk/MANIFEST: add recent files.
@@ -16650,12 +11245,6 @@ Fri May 21 09:22:05 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_parameters):
Add ()'s around parameters that don't have them
-Fri May 21 02:21:11 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/csv.rb: fixed a few bugs around multi char record/field separator.
-
- * test/csv/test_csv.rb: added boundary test for above feature.
-
Thu May 20 17:02:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (check_sizeof): define result size. [ruby-core:02911]
@@ -16663,6 +11252,10 @@ Thu May 20 17:02:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (create_header): macro name should not include equal
sign.
+Thu May 20 15:59:50 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+
+ * ext/socket/socket.c: fix SEGV. [ruby-dev:23550]
+
Thu May 20 14:35:52 2004 Tanaka Akira <akr@m17n.org>
* ext/socket/socket.c: check SCM_RIGHTS macro addition to
@@ -16683,100 +11276,20 @@ Thu May 20 12:34:39 2004 Dave Thomas <dave@pragprog.com>
Thu May 20 12:22:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (have_type): do not check pointer to incomplete type,
- which always get compiled.
- [ruby-list:39683]
-
-Wed May 19 23:45:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ which always get compiled. [ruby-list:39683]
- * test/inlinetest.rb (InlineTest::loadtest): requiring library with
- replaced $0 can make $0 == __FILE__ block be evaluated twice.
-
- * test/ruby/envutil.rb (EnvUtil::rubybin): give priority to
- environment variable. [ruby-dev:23538]
-
-Wed May 19 11:08:10 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Wed May 19 11:09:00 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/tk.rb: change permition of TkObject#tk_send from
private to public
-Wed May 19 02:29:36 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: support TRACE.
-
-Wed May 19 02:21:53 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: do not use class variables.
-
-Tue May 18 21:21:43 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/csv.rb: writes lines with "\n" when row separator is not given.
- formerly it was "\r\n".
-
- * lib/csv.rb: [CAUTION] API change
-
- * CSV::Row removed. a row is represented as just an Array. since
- CSV::Row was a subclass of Array, it won't hurt almost all programs
- except one which depended CSV::Row#match.
-
- * CSV::Cell removed. a cell is represented as just a String or
- nil(NULL). this change will cause widespread destruction.
-
- CSV.open("foo.csv", "r") do |row|
- row.each do |cell|
- if cell.is_null # Cell#is_null
- p "(NULL)"
- else
- p cell.data # Cell#data
- end
- end
- end
-
- must be just;
-
- CSV.open("foo.csv", "r") do |row|
- row.each do |cell|
- if cell.nil?
- p "(NULL)"
- else
- p cell
- end
- end
- end
-
- * lib/csv.rb: [CAUTION] record separator(CR, LF, CR+LF) behavior
- change. CSV.open, CSV.parse, and CSV,generate now do not force
- opened file binmode. formerly it set binmode explicitly.
-
- with CSV.open, binmode of opened file depends the given mode
- parameter "r", "w", "rb", and "wb". CSV.parse and CSV.generate open
- file with "r" and "w".
-
- setting mode properly is user's responsibility now.
-
- * lib/csv.rb: accepts String as a fs (field separator/column separator)
- and rs (record separator/row separator)
-
- * lib/csv.rb: added CSV.foreach(path, rs = nil, &block). CSV.foreach
- now does not handle "| cmd" as a path different from IO.foreach.
- needed?
-
- * test/csv/test_csv.rb: updated.
-
-Tue May 18 14:24:20 2004 why the lucky stiff <why@ruby-lang.org>
-
- * lib/yaml.rb: added rdoc to beginning of lib.
-
Tue May 18 14:00:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* node.h (NEW_DSTR): adjust list length.
* parse.y (literal_concat): ditto.
-Tue May 18 09:30:25 2004 SASADA Koichi <ko1@atdot.net>
-
- * eval.c (rb_method_node): search cache entry first.
-
-Mon May 17 16:04:06 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon May 17 16:14:25 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* numeric.c (flo_to_s): it's preferable that "p 0.0" outputs "0.0"
instead of "0.0e+00". [ruby-dev:23480]
@@ -16793,43 +11306,13 @@ Mon May 17 10:13:33 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/socket/socket.c (sock_s_getnameinfo): ditto.
-Mon May 17 00:36:21 2004 why the lucky stiff <why@ruby-lang.org>
+Mon May 17 01:15:23 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * lib/yaml.rb: removed fallback to pure Ruby parser.
* lib/yaml/baseemitter.rb (indent_text): was forcing a mod value
of zero at times, which kept some blocks from getting indentation.
-Mon May 17 00:07:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
-
- * lib/drb/drb.rb: Cosmetic documentation changes.
-
-Sun May 16 20:55:49 2004 Tanaka Akira <akr@m17n.org>
-
- * ext/dbm/dbm.c (fdbm_initialize): accept optional 3rd argument to
- specify an open flag.
- (Init_dbm): define open flags: DBM::READER, DBM::WRITER, DBM::WRCREAT
- and DBM::NEWDB.
-
-Sat May 15 17:52:24 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * test/ruby/test_float.rb(test_strtod): Add test for signed 0.000...1
-
-Sat May 15 14:20:13 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * ext/syck/depend: add ruby's headers.
-
-Sat May 15 13:38:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/syck/MANIFEST, ext/syck/depend: new file.
-
- * lib/yaml/rubytypes.rb: range of exponential floats. [ruby-core:02824]
-
- * test/yaml/test_yaml.rb: tests for strings start with colon and some
- round trip.
-
-Sat May 15 12:04:58 2004 why the lucky stiff <why@ruby-lang.org>
-
- * lib/yaml.rb: removed fallback to pure Ruby parser.
-
* lib/yaml/baseemitter.rb (node_text): rewriting folded scalars.
* ext/syck/syck.h: reports style of scalars now, be they plain, block
@@ -16846,9 +11329,33 @@ Sat May 15 12:04:58 2004 why the lucky stiff <why@ruby-lang.org>
* ext/syck/rubyext.c (yaml_org_handler): symbols loaded only
if scalar style is plain.
+ * ext/syck/rubyext.c (yaml_org_handler): some empty strings were
+ loaded as symbols.
+
* test/yaml/test_yaml.rb (test_perl_regexp): updated test to
match new regexp serialization.
+Mon May 17 00:03:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/drb/drb.rb: Cosmetic documentation changes.
+
+Sun May 16 22:36:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/test/unit.rb: Removed :nodoc: directive (it prevented effective
+ RDoc operation), and added file-level comment.
+
+Sun May 16 20:55:49 2004 Tanaka Akira <akr@m17n.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): accept optional 3rd argument to
+ specify an open flag.
+ (Init_dbm): define open flags: DBM::READER, DBM::WRITER, DBM::WRCREAT
+ and DBM::NEWDB.
+
+Sun May 16 13:10:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/test/unit/**/*.rb: Removed :nodoc: directives (many were
+ generating warnings, many were on private methods).
+
Sat May 15 01:41:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (eval): forgot to restore $SAFE value before evaluating
@@ -16864,27 +11371,18 @@ Fri May 14 22:08:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_new4): should not reuse frozen shared string if
the original is not an instance of String. [ruby-talk:100193]
-Fri May 14 21:29:26 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * time.c (time_mdump): preserve GMT bit in the marshal data.
- [ruby-talk:100213]
-
-Fri May 14 18:37:49 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/tk/canvas.rb: improve coords support for canvas
- items. Now, supports all of the followings.
- TkcLine.new(c, 0, 0, 100, 100, :fill=>'red')
- TkcLine.new(c, [0, 0, 100, 100], :fill=>'red')
- TkcLine.new(c, [0, 0], [100, 100], :fill=>'red')
- TkcLine.new(c, [[0, 0], [100, 100]], :fill=>'red')
- TkcLine.new(c, :coords=>[0, 0, 100, 100], :fill=>'red')
- TkcLine.new(c, :coords=>[[0, 0], [100, 100]], :fill=>'red')
+Fri May 14 18:39:25 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-Fri May 14 13:30:39 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * ext/tk/lib/tk/canvas.rb: improve coords support for canvas items.
+ Now, supports all of the followings.
+ TkcLine.new(c, 0, 0, 100, 100, :fill=>'red')
+ TkcLine.new(c, [0, 0, 100, 100], :fill=>'red')
+ TkcLine.new(c, [0, 0], [100, 100], :fill=>'red')
+ TkcLine.new(c, [[0, 0], [100, 100]], :fill=>'red')
+ TkcLine.new(c, :coords=>[0, 0, 100, 100], :fill=>'red')
+ TkcLine.new(c, :coords=>[[0, 0], [100, 100]], :fill=>'red')
- * test/ruby/test_float.rb: Add test for util.c revision 1.42.
-
-Fri May 14 12:13:46 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri May 14 12:11:43 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* util.c (ruby_strtod): strtod("0", &end); => end should point '\0'.
[ruby-dev:23498]
@@ -16894,10 +11392,15 @@ Thu May 13 15:47:30 2004 akira yamada <akira@ruby-lang.org>
* lib/net/telnet.rb (Net::Telnet::login): "options" can specify
regexps for login prompt and/or password prompt.
-Thu May 13 14:17:57 2004 why the lucky stiff <why@ruby-lang.org>
+Thu May 13 14:23:45 2004 WATANABE Hirofumi <eban@ruby-lang.org>
- * ext/syck/rubyext.c (yaml_org_handler): some empty strings were
- loaded as symbols.
+ * hash.c (delete_if_i): use st_delete_safe() (via
+ rb_hash_delete()) instead of returning ST_DELETE.
+ backport from HEAD. [ruby-dev:23487]
+
+Thu May 13 13:01:30 2004 akira yamada <akira@ruby-lang.org>
+
+ * lib/uri/mailto.rb (URI::MailTo::to_s): should include fragment.
Thu May 13 11:04:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
@@ -16929,15 +11432,6 @@ Wed May 12 11:51:08 2004 Dave Thomas <dave@pragprog.com>
* class.c (rb_obj_singleton_methods): fix rdoc
-Tue May 11 07:09:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (is_defined): do not protect exception during receiver
- evaluation.
-
-Mon May 10 22:28:14 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/protocol.rb (each_crlf_line): remove junk line.
-
Mon May 10 21:44:42 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/html_generator.rb: Change scheme for
@@ -16956,81 +11450,43 @@ Mon May 10 12:11:37 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/html_generator.rb: Hack to search parents
for unqualified constant names.
-Mon May 10 01:18:15 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/pop.rb (logging): append "\n".
-
-Sun May 9 23:38:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
-
- * lib/net/ftp.rb: ported documentation improvement from 1.8 branch
-
- * lib/net/imap.rb: ditto
+Mon May 10 12:11:37 2004 Dave Thomas <dave@pragprog.com>
- * lib/net/pop.rb: ditto
+ * lib/rdoc/generators/html_generator.rb: Hack to search parents
+ for unqualified constant names.
- * lib/net/smtp.rb: ditto
+Sun May 9 22:37:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+ * lib/net/ftp.rb: improved documentation
+ * lib/net/imap.rb: ditto
+ * lib/net/pop.rb: ditto
+ * lib/net/smtp.rb: ditto
* lib/net/telnet.rb: ditto
-Sun May 9 23:34:51 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * test/ruby/test_float.rb: added test_strtod to test Float("0").
-
-Sun May 9 13:24:24 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * lib/yaml/store.rb: use FileUtils::copy.
-
-Sun May 9 12:34:26 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * regex.c : removed unused file.
-
-Sat May 8 10:53:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * io.c (rb_f_open): open should not ignore block when "to_open"
- method is used. [ruby-dev:23478]
-
-Fri May 7 22:07:39 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/fileutils.rb (mv): new option `force'. [ruby-talk:99457]
-
- * lib/fileutils.rb: new method for command option reflection:
- FileUtils.commands, .options, .have_option?, .options_of,
- .collect_methods.
-
- * lib/fileutils.rb: module Verbose, NoWrite, DryRun do not have
- option flags @fileutils_verbose and @fileutils_noop, they make no
- sense.
-
Fri May 7 21:50:21 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::parse_include): Allow
multiple arguments to 'include'
-Fri May 7 21:03:51 2004 Minero Aoki <aamine@loveruby.net>
+Fri May 7 21:31:56 2004 Minero Aoki <aamine@loveruby.net>
* lib/fileutils.rb (fu_list): Array() breaks pathes including "\n".
[ruby-core:02843]
- * test/fileutils/test_fileutils.rb (mkdir): test "\n" in path.
-
-Fri May 7 20:53:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/dbm/dbm.c (fdbm_modify): typo fixed. [ruby-dev:23473]
-
-Fri May 7 11:17:27 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Fri May 7 11:25:53 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* util.c (ruby_strtod): "0.0000000000000000001" should be converted
to 1.0e-19 instead of 0.0. (leading zeros aren't significant digits)
[ruby-talk:99318] [ruby-dev:23465]
-Thu May 6 22:27:32 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Fri May 7 10:00:05 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/socket/socket.c (ippaddr): use NUMERICHOST if can not resolve
- hostname.
+ * ext/tk/tkutil.c (get_eval_string_core): bug fix. [ruby-dev:23466]
-Thu May 6 22:09:29 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Thu May 6 22:13:17 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * ext/tk/tkutil.c (get_eval_string_core): bug fix. [ruby-dev:23466]
+ * ext/socket/socket.c (ippaddr): use NUMERICHOST if can not resolve
+ hostname.
Thu May 6 14:22:29 2004 why the lucky stiff <why@ruby-lang.org>
@@ -17045,15 +11501,6 @@ Thu May 6 14:22:29 2004 why the lucky stiff <why@ruby-lang.org>
* ext/syck/gram.c: fixed transfer methods on structs, broke it
last commit.
-Thu May 6 14:38:02 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (rb_push_glob): simplified code (not change behavior)
-
-Thu May 6 13:32:44 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb: get rid of side effect of Config.expand, patched by
- <tttt01@infoseek.jp> (ruby-bugs:PR#597)
-
Thu May 6 11:40:28 2004 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/imap.rb (string): accept NIL.
@@ -17066,13 +11513,16 @@ Thu May 6 01:59:04 2004 Dave Thomas <dave@pragprog.com>
Don't include the &block parameter if we have explicit
yield parameters.
-Wed May 5 03:52:31 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Wed May 5 03:40:29 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/rinda/ring.rb: use recv instead of recvfrom.
-Wed May 5 00:38:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Tue May 4 23:52:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
* lib/gserver.rb: documented
+
+Tue May 4 23:46:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
* lib/xmlrpc/README.txt: introduced for documentation purposes
Mon May 3 09:47:24 2004 Dave Thomas <dave@pragprog.com>
@@ -17080,10 +11530,6 @@ Mon May 3 09:47:24 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_or_yield_parameters):
Fix parsing bug if yield called within 1 line block
-Sun May 2 21:56:48 2004 Minero Aoki <aamine@loveruby.net>
-
- * test/fileutils/test_fileutils.rb (rm_f, rm_r): test :force flag.
-
Sun May 2 01:04:38 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib, ext/tk: renewal Ruby/Tk
@@ -17092,26 +11538,11 @@ Fri Apr 30 20:08:41 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* time.c (SIZEOF_TIME_T): support SIZEOF_TIME_T == SIZEOF_INT.
-Wed Apr 28 01:26:11 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * oniguruma.h, regparse.c: imported Oni Guruma 2.2.8.
-
-Wed Apr 28 01:16:23 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * oniguruma.h, regparse.c: imported Oni Guruma 2.2.7.
-
-Tue Apr 27 14:43:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk: LIBURUBY_A is needed for extconf.rb even when
- cross-compiling.
-
-Tue Apr 27 13:33:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+Tue Apr 27 13:12:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * parse.y (string_content): turn off NODE_NEWLINE flag to avoid
- unnecessary line trace for inlined expression.
- (ruby-bugs PR#1320)
+ * eval.c (rb_eval): too many line trace call. (ruby-bugs PR#1320)
-Tue Apr 27 08:15:13 2004 why the lucky stiff <why@ruby-lang.org>
+Tue Apr 27 08:41:28 2004 why the lucky stiff <why@ruby-lang.org>
* lib/yaml/rubytypes.rb: passing Range tests.
@@ -17139,33 +11570,32 @@ Mon Apr 26 21:40:09 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/code_objects.rb (RDoc::Context::add_alias): Only alias
to instance methods.
-Sun Apr 25 18:26:23 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * configure.in (ac_cv_func_fork): set to no on DJGPP.
-
-Sat Apr 24 14:32:03 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * re.c: applied stack error handling patch. [ruby-dev:23431]
-
Sat Apr 24 10:38:31 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/markup/simple_markup.rb (SM::SimpleMarkup::group_lines):
Fix bug where consecutive headings are merged.
-Fri Apr 23 23:24:47 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 23 23:26:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/mkmf.rb: $hdrdir should not contain macros, for backward
+ * lib/mkmf.rb: $hdrdir should not contain macros for backward
compatibility. [bruby-dev:28]
- * lib/mkmf.rb (create_makefile): in the case of extout, just copy
- script files, without comparison.
+ * version.c (ruby_show_copyright): obtain copyright year from
+ RUBY_RELEASE_YEAR.
+
+ * win32/resource.rb: ditto.
+
+ * win32/resource.rb: default rubyw icon to ruby.ico, and let DLL also
+ include them.
+
+ * win32/resource.rb: include winver.h for older WindowsCE.
Fri Apr 23 16:38:46 2004 Tanaka Akira <akr@m17n.org>
* lib/pathname.rb: sync taint/freeze flag between
a pathname object and its internal string object.
-Fri Apr 23 14:52:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 23 14:52:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (stmt, arg, aref_args): should not make sole splat into
array, in aref_args other than aref with op_asgn.
@@ -17175,18 +11605,7 @@ Fri Apr 23 14:14:38 2004 Tanaka Akira <akr@m17n.org>
* lib/resolv.rb: don't use Regexp#source to embed regexps.
[ruby-dev:23432]
-Thu Apr 22 18:25:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk, ext/extmk.rb: make ext and .ext get removed by distclean.
-
-Thu Apr 22 10:07:01 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * */Makefile.sub (distclean-local): should remove $(RBCONFIG).
-
-Thu Apr 22 04:17:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_mod_define_method): allow binding methods to modules.
- [ruby-dev:23410]
+Thu Apr 22 04:15:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (aref_args): should pass expanded list. [ruby-core:02793]
@@ -17198,7 +11617,7 @@ Thu Apr 22 01:12:57 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_index_m): use unsigned comparison for T_FIXNUM
search. [ruby-talk:97342]
-Wed Apr 21 23:04:42 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Wed Apr 21 22:57:27 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/rinda/rinda.rb, test/rinda/test_rinda.rb: check Hash tuple size.
@@ -17207,44 +11626,6 @@ Wed Apr 21 20:05:00 2004 Tanaka Akira <akr@m17n.org>
* lib/open-uri.rb (URI::HTTP#proxy_open): set Host: field explicitly.
[ruby-list:39542]
-Wed Apr 21 18:39:46 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/smtp.rb: merge SMTP-TLS patch. This patch is
- contributed by Daniel Hob. [ruby-core:02789]
-
-Wed Apr 21 18:23:45 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/smtp.rb: change coding style: def m( a ) -> def m(a).
-
-Wed Apr 21 18:01:47 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/pop.rb: do not use class variables.
-
- * lib/net/pop.rb (do_start): ensure to clean up connection when
- authentication failed.
-
-Wed Apr 21 17:23:59 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb (HTTP#connect): CONNECT must precede SSL connect.
- [ruby-dev:23379]
-
- * lib/net/http.rb (HTTP.new): class variables are not inherited
- now.
-
-Wed Apr 21 15:56:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit/ui/console/testrunner.rb (test_started): restore $0
- after changing process title. [ruby-talk:97426]
-
-Wed Apr 21 10:18:06 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * process.c(rb_spawn): fix SEGV at "p system('command line here')"
- (may happen only in bccwin32) [ruby-dev:23380]
-
-Mon Apr 19 20:58:44 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c: Updated RDocs.
-
Mon Apr 19 18:11:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* hash.c (rb_hash_equal): returns true if two hashes have same set
@@ -17253,132 +11634,107 @@ Mon Apr 19 18:11:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* hash.c (rb_hash_eql): returns true if two hashes are equal and
have same default values.
-Mon Apr 19 08:19:11 2004 Doug Kearns <djkea2@mugca.its.monash.edu.au>
+Mon Apr 19 08:19:58 2004 Doug Kearns <djkea2@mugca.its.monash.edu.au>
- * dln.c, io.c, pack.c, lib/benchmark.rb, lib/cgi.rb, lib/csv.rb,
- lib/date.rb, lib/ftools.rb, lib/getoptlong.rb, lib/logger.rb,
- lib/matrix.rb, lib/monitor.rb, lib/set.rb, lib/thwait.rb,
- lib/timeout.rb, lib/yaml.rb, lib/drb/drb.rb, lib/irb/workspace.rb,
- lib/net/ftp.rb, lib/net/http.rb, lib/net/imap.rb, lib/net/pop.rb,
- lib/net/telnet.rb, lib/racc/parser.rb, lib/rinda/rinda.rb,
- lib/rinda/tuplespace.rb, lib/shell/command-processor.rb,
- lib/soap/rpc/soaplet.rb, lib/test/unit/testcase.rb,
- lib/test/unit/testsuite.rb: typo fix.
+ * dln.c, io.c, lib/benchmark.rb, lib/cgi.rb, lib/csv.rb, lib/date.rb,
+ lib/ftools.rb, lib/getoptlong.rb, lib/logger.rb, lib/matrix.rb,
+ lib/monitor.rb, lib/set.rb, lib/thwait.rb, lib/timeout.rb,
+ lib/yaml.rb, lib/drb/drb.rb, lib/irb/workspace.rb, lib/net/ftp.rb,
+ lib/net/http.rb, lib/net/imap.rb, lib/net/telnet.rb,
+ lib/racc/parser.rb, lib/rinda/rinda.rb, lib/rinda/tuplespace.rb,
+ lib/shell/command-processor.rb, lib/soap/rpc/soaplet.rb,
+ lib/test/unit/testcase.rb, lib/test/unit/testsuite.rb: typo fix.
Mon Apr 19 08:14:18 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_body): Allow for
#ifdef HAVE_PROTOTYPES
+Fri Apr 16 22:33:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * ext/iconv/iconv.c: nearly finished RDoc comments.
+
Fri Apr 16 17:04:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* string.c (rb_str_equal): always returns true or false, never
returns nil. [ruby-dev:23404]
-Fri Apr 16 12:38:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/drb/drb.rb (DRb::DRbUnknown::initialize): Exception#to_str is
- deprecated.
-
- * lib/drb/drb.rb (DRb::DRbServer::InvokeMethod::perform): multiple
- value class changed.
-
- * lib/drb/invokemethod.rb (DRb::DRbServer::InvokeMethod18Mixin::block_yield):
- ditto.
-
-Fri Apr 16 08:27:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 16 08:27:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb: skip linking when libraries to be preloaded not
compiled. [ruby-list:39561]
-Thu Apr 15 19:57:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 15 23:21:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* process.c (pst_success_p): new method Process::Status#success?.
[ruby-dev:23385]
- * rubytest.rb: do nothing while cross-compiling, return status in
- system independent style.
-
-Thu Apr 15 19:26:54 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (rb_push_glob): Dir.glob() should return nil if block is given.
- (http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Dir)
-
- * dir.c (push_braces): Dir.glob() should handle '{ }' nested more than
- 3 times.
-
- * dir.c (push_braces, rb_push_glob): Dir.glob() should handle escaped
- '{' and '}' and ','.
-
- [ruby-dev:23376]
-
Thu Apr 15 17:12:13 2004 Tanaka Akira <akr@m17n.org>
* ext/gdbm/gdbm.c (Init_gdbm): define GDBM::READER, GDBM::WRITER,
GDBM::WRCREAT and GDBM::NEWDB.
(fgdbm_initialize): use specified read/write flag.
-Wed Apr 14 13:06:09 2004 Doug Kearns <djkea2@mugca.its.monash.edu.au>
-
- * array.c, enum.c, eval.c, file.c, io.c, numeric.c, object.c, prec.c,
- process.c, re.c, string.c: typos in RDoc comments. [ruby-core:02783]
-
Wed Apr 14 11:29:56 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* numeric.c (flo_eq): workaround for bcc32's bug.
(ruby-bugs-ja:PR#594)
+Wed Apr 14 13:06:35 2004 Doug Kearns <djkea2@mugca.its.monash.edu.au>
+
+ * array.c, enum.c, eval.c, file.c, io.c, numeric.c, object.c, prec.c,
+ process.c, re.c, string.c: typos in RDoc comments. [ruby-core:02783]
+
Wed Apr 14 11:06:38 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::scan): Changed
behavior of :enddoc: -- it now unconditionally terminates
processing of the current file.
-Wed Apr 14 10:57:40 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Wed Apr 14 11:03:22 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* defines.h: include <net/socket.h> to get fd_set definition in BeOS.
-Tue Apr 13 23:00:55 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Apr 13 23:06:30 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/rinda/rinda.rb: change pattern matching.
a === b -> a == b || a === b. [druby-ja:98]
* test/rinda/test_rinda.rb: ditto.
-Tue Apr 13 21:50:57 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Apr 13 19:54:29 2004 Minero Aoki <aamine@loveruby.net>
- * bcc32/Makefile.sub (PHONY): Borland make disallows empty command
- rules.
+ * lib/net/http.rb: should not overwrite HTTP request header.
+ [ruby-list:39543]
-Tue Apr 13 17:55:16 2004 Minero Aoki <aamine@loveruby.net>
+Tue Apr 13 01:30:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
- * lib/net/http.rb (begin_transport): should not overwrite HTTP
- request header. [ruby-list:39543]
+ * ext/iconv/iconv.c: RDoc documentation (from RD; nearly finished).
+ * ext/iconv/charset_alias.rb: Prevent from RDoc'ing.
-Tue Apr 13 16:48:00 2004 Minero Aoki <aamine@loveruby.net>
+Mon Apr 12 19:11:29 2004 Eric Hodel <drbrain@segment7.net>
- * lib/net/pop.rb: merge POP3S patch. This patch is contributed by
- Daniel Hobe.
+ * gc.c (rb_gc_copy_finalizer): typo. [ruby-core:02774]
-Tue Apr 13 02:56:29 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+Mon Apr 12 18:52:32 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * common.mk: changed the order of ascii.c alphabetically.
+ * ext/openssl/ossl_x509name.c (ossl_x509name_init_i): should return
+ a value.
-Mon Apr 12 19:11:21 2004 Eric Hodel <drbrain@segment7.net>
+Mon Apr 12 10:43:47 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * gc.c (rb_gc_copy_finalizer): typo. [ruby-core:02774]
+ * dir.c (rb_glob2, rb_glob, rb_globi, push_globs, push_braces,
+ rb_push_glob): fix memory leak. (leaked when block was interrupted)
-Mon Apr 12 18:45:58 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Mon Apr 12 10:27:37 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * ext/openssl/ossl_x509name.c (ossl_x509name_init_i): should return
- a value.
+ * bcc32/Makefile.sub: backport SIZEOF_TIME_T definition from 1.9.
-Mon Apr 12 10:39:50 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+ * win32/Makefile.sub: ditto.
- * dir.c (rb_glob2, rb_glob, push_globs, push_braces, rb_push_glob):
- fix memory leak. (leaked when block was interrupted)
+ * wince/Makefile.sub: ditto.
-Sun Apr 11 19:10:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Apr 11 19:12:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ruby.c (require_libraries): restore source file/line after
statically linked extensions initialized. [ruby-dev:23357]
@@ -17399,73 +11755,7 @@ Sat Apr 10 00:00:19 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/markup/simple_markup/inline.rb: Fix problem
with \_cat_<b>dog</b>
-Fri Apr 9 17:05:21 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (has_magic, find_dirsep): incomplete '[' matches no character
- in Dir.glob. (follows File.fnmatch's behavior)
-
- * dir.c (fnmatch_helper): incomplete escape is ignored in File.fnmatch.
- (follows Dir.glob's behavior)
-
- * dir.c (find_dirsep): '/' between '[' and ']' is ignored in Dir.glob.
- (follows File.fnmatch with File::FNM_PATHNAME 's behavior)
-
- * dir.c (find_dirsep): escaped slash '\/' loses its meaning as
- directory separator in Dir.glob.
-
- [ruby-dev:23291]
-
-Thu Apr 8 20:25:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb (extmake): skip uncompiled extensions.
-
- * lib/mkmf.rb (create_makefile): emit no rules for static library if
- $static is nil, e.g., outside of ext/.
-
- * lib/test/unit/ui/console/testrunner.rb (test_started): show test
- name via $0.
-
- * runruby.rb: set environments to use the compiled binary.
-
- * test/runner.rb: do nothing while cross-compiling.
-
- * test/drb/drbtest.rb, test/soap/calc/test_calc_cgi.rb: use envutil to
- know ruby binary, and restore $: after require.
-
- * test/ruby/envutil.rb: give priority to RUBY environment variable to
- use just compiled binary and libraries.
-
-Thu Apr 8 19:03:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_binmode): inverted condition. [ruby-dev:23349]
-
-Thu Apr 8 18:22:00 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/iconv/iconv.c (iconv_s_list): return encoding list if no block
- is given. [ruby-dev:23063]
-
-Wed Apr 7 15:29:24 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * pack.c (pack_pack): use NUM2INT() instead of num2i32().
-
-Wed Apr 7 12:32:02 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/parser.rb, lib/rss/1.0.rb: accepted rdf:resource or
- resource attribute in rdf:li.
- * test/rss/test_parser.rb: added test for above change.
-
- * lib/rss/dublincore.rb: reverted style.
-
- * lib/rss/xmlparser.rb: normalized XMLParser class hierarchy.
-
-Wed Apr 7 10:43:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in, common.mk, */Makefile.sub (ext/extinit.o): OUTFLAG
- doesn't work for object files on VC.
-
- * */Makefile.sub (config.h): need SIZEOF_TIME_T now.
-
-Wed Apr 7 00:24:34 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Wed Apr 7 00:19:50 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/rinda/rinda.rb: fix hash tuple bug.
@@ -17475,12 +11765,6 @@ Wed Apr 7 00:24:34 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
Tue Apr 6 18:24:18 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * file.c (rb_get_path): get path string via "to_path" method if
- path object is not a string. [Ruby2]
-
- * gc.c (rb_gc_call_finalizer_at_exit): do not free threads in the
- exit finalizers.
-
* io.c (rb_io_reopen): should use rb_io_check_io().
Tue Apr 6 16:46:09 2004 Tanaka Akira <akr@m17n.org>
@@ -17491,82 +11775,49 @@ Tue Apr 6 16:46:09 2004 Tanaka Akira <akr@m17n.org>
(time_plus): use time_add.
(time_minus): use time_add.
-Tue Apr 6 13:11:48 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/socket/socket.c (raise_socket_error): never return.
+Tue Apr 6 13:21:30 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* ext/socket/socket.c (make_hostent): must return value.
-Tue Apr 6 00:14:43 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * error.c (Init_Exception): remove Exception#to_str. [Ruby2]
-
- * eval.c (error_print): should no call "to_str" anymore use
- "message" method instead.
-
- * io.c (rb_f_open): Kernel#open() calls "to_open" if the first
- argument responds to it. [Ruby2]
-
-Tue Apr 6 00:13:43 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Tue Apr 6 00:05:30 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/rinda/rinda.rb: add require 'drb/drb'
-Mon Apr 5 22:25:32 2004 Tanaka Akira <akr@m17n.org>
-
- * test/zlib/test_zlib.rb: new file.
- (TestZlibGzipWriter#test_new_nil): test for [ruby-dev:23228].
-
-Mon Apr 5 22:16:23 2004 Minero Aoki <aamine@loveruby.net>
-
- * parse.y (assoc_list): {a: 1, b: 2} should be allowed.
- [ruby-dev:23328]
-
-Mon Apr 5 19:43:40 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * regexec.c: imported Oni Guruma 2.2.6.
-
-Mon Apr 5 19:39:10 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
+Mon Apr 5 08:18:23 2004 Dave Thomas <dave@pragprog.com>
- * regparse.c, oniguruma.h: imported Oni Guruma 2.2.6.
+ * lib/rdoc/rdoc.rb: Remove leading ./ from file names so that cross
+ references work properly.
-Mon Apr 5 12:12:09 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Apr 4 20:33:42 2004 Minero Aoki <aamine@loveruby.net>
- * ext/socket/socket.c (raise_socket_error): some platforms don't have
- EAI_SYSTEM.
+ * eval.c (Init_load): make $LOADED_FEATURES built-in.
+ [ruby-dev:23299]
-Mon Apr 5 08:18:23 2004 Dave Thomas <dave@pragprog.com>
+ * ruby.c (ruby_prog_init): make $PROGRAM_NAME built-in.
- * lib/rdoc/rdoc.rb: Remove leading ./ from file names so that cross
- references work properly.
+ * lib/English.rb: remove $LOADED_FEATURES and $PROGRAM_NAME.
Sun Apr 4 14:01:20 2004 Dave Thomas <dave@pragprog.com>
- * lib/rdoc/options.rb (Options::parse): Allow multiple -x options to
- RDoc. Fix bug where files weren't being excluded properly
+ * lib/rdoc/options.rb (Options::parse): Allow multiple -x options to RDoc.
+ Fix bug where files weren't being excluded properly
-Sat Apr 3 09:36:38 2004 why the lucky stiff <why@ruby-lang.org>
+Sat Apr 3 17:11:05 2004 why the lucky stiff <why@ruby-lang.org>
* ext/syck/syck.h: version 0.43.
-Sat Apr 3 08:28:47 2004 why the lucky stiff <why@ruby-lang.org>
-
* ext/syck/lib/gram.c: allow root-level inline collections.
- [ruby-talk:94922]
+ [ruby-talk:94922]
* lib/yaml/rubytypes.rb (Symbol#to_yaml): emit symbols as implicits.
- [ruby-talk:94930]
-
-Fri Apr 2 19:28:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * bcc32/Makefile.sub (OUTFLAG): needed for static-linked-ext.
+ [ruby-talk:94930]
-Fri Apr 2 18:00:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/syck/bytecode.c: turn off default implicit typing.
- * ext/extmk.rb (extmake): extract necessary variables for static link
- from Makefile.
+ * ext/syck/implicit.c: detect base60 integers.
- * lib/mkmf.rb (create_makefile): save preload and libpath for next
- compile.
+ * ext/syck/rubyext.c: handle base60, as well as hex and octal
+ with commas. implicit typing of ruby symbols.
Fri Apr 2 17:27:17 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -17585,20 +11836,8 @@ Fri Apr 2 14:35:26 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (block_pass): should generate unique identifier of the
pushing block. [ruby-talk:96363]
-Fri Apr 2 11:36:20 2004 Minero Aoki <aamine@loveruby.net>
-
- * eval.c (Init_load): make $LOADED_FEATURES built-in.
- [ruby-dev:23299]
-
- * ruby.c (ruby_prog_init): make $PROGRAM_NAME built-in.
-
- * lib/English.rb: remove $LOADED_FEATURES and $PROGRAM_NAME.
-
Fri Apr 2 07:31:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/socket/socket.c: mistakingly removed do_not_reverse_lookup.
- [ruby-list:39475]
-
* ext/socket/socket.c (make_hostent): fix memory leak, based on
the patch from HORIKAWA Hisashi <vzw00011@nifty.ne.jp>.
@@ -17623,6 +11862,14 @@ Thu Apr 1 19:58:37 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
be empty). Instance of URI have instance_variables but it must be
llowed whenever original mapping is allowed or not.
+ * lib/xsd/datatypes.rb: check the smallest positive non-zero
+ single-precision float exactly instead of packing with "f".
+ [ruby-talk:88822]
+
+ * lib/soap/mapping/rubytypeFactory.rb: should not dump singleton class.
+ [ruby-dev:22588]
+ c = class << Object.new; class C; self; end; end; SOAPMarshal.dump(c)
+
Wed Mar 31 19:06:23 2004 Tanaka Akira <akr@m17n.org>
* time.c (year_leap_p): new function.
@@ -17630,7 +11877,7 @@ Wed Mar 31 19:06:23 2004 Tanaka Akira <akr@m17n.org>
(search_time_t): use timegm_noleapsecond instead of
mktime for first guess.
-Wed Mar 31 12:05:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 31 12:04:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/delegate.rb (DelegateClass): define internal methods of the
result class, but not metaclass of the caller. [ruby-talk:96156]
@@ -17639,44 +11886,12 @@ Wed Mar 31 12:05:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ruby.h: missing.h is now prerequisite to intern.h.
-Wed Mar 31 11:17:16 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * pack.c (pack_pack): raises RangeError if uv is out of UTF8 value
- range. [ruby-dev:23281]
-
- * io.c (rb_io_binmode): stdio buffer should be empty when calling
- IO#binmode. [ruby-talk:96155]
-
Tue Mar 30 20:25:34 2004 Tanaka Akira <akr@m17n.org>
* time.c (search_time_t): limit guess range by mktime if it is
available. [ruby-dev:23274]
-Tue Mar 30 18:19:00 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_eval): fix SEGV at retry in iterator's receiver.
- [ruby-dev:23227]
-
-Mon Mar 29 20:17:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (rb_exec): follow older behavior if close-on-exec is not
- available.
-
- * process.c (rb_fork): protect from exceptions while waiting failed
- process, if status is given.
-
-Sun Mar 28 16:25:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * cygwin/GNUmakefile.in (clean-local, distclean-local): remove
- work files.
-
- * win32/Makefile.sub (clean-local): ditto.
-
-Sun Mar 28 14:23:02 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/pop.rb: def m( arg ) -> def m(arg).
-
-Sun Mar 28 14:09:13 2004 Minero Aoki <aamine@loveruby.net>
+Sun Mar 28 14:16:59 2004 Minero Aoki <aamine@loveruby.net>
* lib/net/pop.rb (auth): failed when account/password include "%".
[ruby-talk:95933]
@@ -17690,46 +11905,16 @@ Sat Mar 27 10:40:48 2004 Tanaka Akira <akr@m17n.org>
* (lib/pp.rb, lib/prettyprint.rb): define seplist in PP::PPMethods
instead of PrettyPrint.
-Sat Mar 27 01:47:09 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/logger.rb: trim tail space of each line. no user visible change.
+Thu Mar 25 23:28:52 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * lib/rss/dublincore.rb: fixed class definition mismatch.
-
- * sample/openssl/gen_csr.rb: fixed wrong usage text.
+ * time.c (time_overflow_p): backport 1.9 usec overflow function.
+ (ruby-bugs PR#1307)
Thu Mar 25 23:15:24 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_options.rb (RI::Options::show_version):
Add --version option
-Thu Mar 25 21:45:00 2004 Shigeo Kobayashi <shigek@ruby-lang.org>
-
- * ext/bigdecimal/bigdecimal.c: Bug in + and - reported by Bret Jolly
- fixed.
-
-Thu Mar 25 21:01:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * version.c (ruby_show_copyright): obtain copyright year from
- RUBY_RELEASE_YEAR.
-
- * win32/resource.rb: ditto.
-
-Thu Mar 25 19:37:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/resource.rb: default rubyw icon to ruby.ico, and let DLL also
- include them.
-
- * win32/resource.rb: include winver.h for older WindowsCE.
-
-Thu Mar 25 14:01:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk, */Makefile.sub (lib, dll): phony targets.
-
- * configure.in (ruby, miniruby): ditto.
-
- * cygwin/GNUmakefile.in (rubyw): ditto.
-
Thu Mar 25 04:16:18 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_options.rb (RI::Options): Add the --list-names option,
@@ -17746,7 +11931,7 @@ Thu Mar 25 02:00:18 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/template/html/one_page_html.rb (Page):
Fix to work with C modules.
-Wed Mar 24 20:49:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Wed Mar 24 21:17:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
* lib/uri.rb: Documented (thanks Dmitry V. Sabanin).
* lib/uri/common.rb: Ditto.
@@ -17756,13 +11941,17 @@ Wed Mar 24 20:49:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
* lib/uri/https.rb: Ditto.
* lib/uri/ldap.rb: Ditto.
* lib/uri/mailto.rb: Ditto.
+ (All backported from 1.9)
-Wed Mar 24 18:48:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 24 18:48:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb ($ruby, $topdir, $hdrdir): should not be affected by
DESTDIR after installed.
- * lib/mkmf.rb (dummy_makefile): default file lists to be cleaned.
+ * lib/mkmf.rb (RUBY): / is not recognized as path separator on
+ nmake/bmake. [ruby-list:39388]
+
+ * lib/mkmf.rb (init_mkmf): $INCFLAGS also should be lazy-evaluated.
Wed Mar 24 12:32:56 2004 Dave Thomas <dave@pragprog.com>
@@ -17779,86 +11968,18 @@ Wed Mar 24 11:11:26 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/html_generator.rb (Generators::HTMLGenerator::load_html_template):
Allow non-RDoc templates by putting a slash in the template name
-Wed Mar 24 10:05:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/tempfile.rb (Tempfile::_close): should not clear @tmpname
- until the file is really removed. [ruby-core:02684]
-
-Wed Mar 24 04:12:44 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_mod_cvar_get): new method Module#class_variable_get.
-
- * object.c (rb_mod_cvar_set): ditto (Module#class_variable_set).
-
-Tue Mar 23 17:45:22 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (rb_thread_atfork): 1.9 warns no more for thread
- termination. [ruby-dev:23212]
-
-Tue Mar 23 14:46:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in, */Makefile.sub, common.mk (clean-local, distclean-local):
- separate files under directories due to directory separator.
-
- * */Makefile.sub (MKFILES): common.mk and */Makefile.sub should not be
- removed.
-
- * win32/Makefile.sub, wince/Makefile.sub: $* cannot appear in explicit
- rules.
-
- * cygwin/GNUmakefile.in: some mingw stuffs were missed.
-
- * lib/mkmf.rb (create_makefile): Borland make wrongly removes braces
- from command lines.
-
- * bcc32/Makefile.sub: needs bcc32/mkexports.rb.
+Mon Mar 22 16:19:57 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-Mon Mar 22 08:21:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in, */Makefile.sub, common.mk: extract common portions.
-
- * Makefile.in, cygwin/GNUmakefile.in, */Makefile.sub (RBCONFIG):
- separated time stamp file for rbconfig.rb.
-
- * configure.in: append common.mk to Makefile.
-
- * mkconfig.rb: keep mtime of rbconfig.rb if unchanged.
-
- * win32/rm.bat: remove multiple files.
-
- * wince/mkconfig_wce.rb: use fake.rb instead.
-
-Sun Mar 21 22:17:35 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#virtual_host):
- sort @virtual_hosts in address, port, host order.
-
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server):
- hostname should not be match if :ServerAlias is not given.
+ * ruby.1: add -width option to .Bl for old groff.
Sun Mar 21 21:11:16 2004 Keiju Ishitsuka <keiju@ishitsuka.com>
* lib/shell/*: bug fix for Shell#system(command_line_string).
-Sun Mar 21 21:04:42 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * ruby.1: add -width option to .Bl for old groff.
-
-Sun Mar 21 18:57:37 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rss/*: Test::Unit::TestCase -> RSS::TestCase and
- Test::Unit::Assertions -> RSS::Assertions.
-
-Sun Mar 21 18:48:20 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/{rss,dublincore,syndication}.rb: handled W3CDTF correctly.
-
-Sun Mar 21 18:15:29 2004 Kouhei Sutou <kou@cozmixng.org>
+Sat Mar 20 20:57:10 2004 David Black <dblack@wobblini.net>
- * test/rss/test_xml-stylesheet.rb: added tests for xml-stylesheet.
-
- * lib/rss/xml-stylesheet.rb: added xml-stylesheet parsing
- function.
+ * lib/scanf.rb: Backported 1.9 branch
+ modifications/corrections to 1.8 branch
Sat Mar 20 23:51:03 2004 WATANABE Hirofumi <eban@ruby-lang.org>
@@ -17868,164 +11989,58 @@ Sat Mar 20 23:51:03 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* eval.c (rb_f_raise): should not clear backtrace information if
exception object already have one.
-Sat Mar 20 21:21:03 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * ext/extmk.rb: rm -rf $extout, not extout.
-
Sat Mar 20 15:25:36 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/template/html/html.rb (RDoc::Page): Force
page background to white.
-Sat Mar 20 09:33:36 2004 Tadayoshi Funaba <tadf@dotrb.org>
+Sat Mar 20 09:52:33 2004 Tadayoshi Funaba <tadf@dotrb.org>
* lib/date.rb, lib/date/format.rb: _parse() now accepts fractional
part of second minute that follows a comma or a full stop.
-Fri Mar 19 21:06:21 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (assoc_list): allow {sym: val} style Hash. [Ruby2]
- this change is done by Nobuyoshi Nakada <nobu@ruby-lang.org>.
-
-Fri Mar 19 15:15:15 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * variable.c (rb_cvar_set): class variables become private to the
- particular class/module. [Ruby2]
-
- * variable.c (rb_cvar_get): ditto.
-
- * variable.c (rb_cvar_defined): ditto.
-
-Fri Mar 19 11:31:32 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/mkmf.rb ($beos, $solaris): add OS flags.
-
- * lib/mkmf.rb (RUBY): / is not recognized as path separator on
- nmake/bmake. [ruby-list:39388]
-
- * lib/mkmf.rb (CLEANLIBS, CLEANOBJS): should remove *.exp with *.so.
-
Fri Mar 19 01:55:57 2004 Mauricio Fernandez <batsman.geo@yahoo.com>
* io.c (rb_io_sync): need not to check writable. [ruby-core:02674]
-Thu Mar 18 19:47:44 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * instruby.rb, rubytest.rb: do not depend on srcdir.
-
-Thu Mar 18 18:50:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Mar 18 21:44:38 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * mkconfig.rb: no longer embed srcdir and compile_dir into
- rbconfig.rb.
+ * lib/drb/drb.rb: backport drb.rb 1.16.
- * ext/extmk.rb, lib/mkmf.rb: obtain top_srcdir and topdir from library
- paths.
+Fri Mar 18 17:49:51 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
-Thu Mar 18 17:46:35 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+ * struct.c (make_struct): allow const_id for accessor names.
+ [ruby-core:04585]
- * lib/drb/drb.rb: do not undef :to_a.
+ * eval.c (rb_attr): check if attribute name is local_id or
+ const_id.
Thu Mar 18 16:22:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (proc_eq): avoid false positive by using scope and
dyna_vars. no longer use frame.uniq.
- * eval.c (proc_arity): arity is now defined as number of
- parameters that would not be ignored. i.e. Proc.new{}.arity
- returns zero. update test suites too.
-
-Thu Mar 18 15:27:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c: remove specialized version of rb_Array(). use simple
- one defined in object.c.
-
- * object.c (Init_Object): remove Kernel#to_a.
-
- * enum.c (enum_zip): use "to_a" instead of "to_ary".
-
-Wed Mar 17 00:22:03 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * oniguruma.h: imported Oniguruma 2.2.5.
- * regparse.c: ditto.
-
-Tue Mar 16 11:14:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (fnmatch_helper): File.fnmatch('\.', '.') should return true.
- (Rev1.112 lost compatiblity)
-
- * dir.c (fnmatch_helper): File.fnmatch('\/', '/', File::FNM_PATHNAME)
- should return true. (Rev1.112 lost compatiblity)
+Wed Mar 17 14:44:43 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * dir.c (fnmatch): File.fnmatch('**/.boo', '.foo/.boo',
- File::FNM_PATHNAME) should return false because of leading period.
-
-Mon Mar 15 17:01:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * error.c (exc_initialize): calling 'to_str' each time just for
- type checking is too heavy. [ruby-core:02661]
-
-Mon Mar 15 10:14:51 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SocketForwarder):
- add do_not_reverse_lookup.
+ * dir.c (range): fix possible "\0" overrun. (in case of "\0-")
Mon Mar 15 07:39:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_yield_0): should not re-submit TAG_BREAK if this
yield is not break destination. [ruby-dev:23197]
-Sun Mar 14 22:07:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_thread_raise): err at unstarted thread. (PR#1302)
-
-Sat Mar 13 14:56:32 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * test/drb/ut_drb.rb: use 'druby://localhost:0'. [ruby-dev:23078]
-
- * test/drb/ut_eval.rb: ditto.
-
- * test/drb/ut_large.rb: ditto.
-
- * test/drb/ut_safe1.rb: ditto.
-
- * test/drb/ut_drb_drbssl.rb: use 'drbssl://localhost:0'.
-
-Fri Mar 12 23:52:56 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (fnmatch): directory recursion '**/' can be used with
- File::FNM_PATHNAME. [ruby-dev:22901]
-
- * dir.c (fnmatch, fnmatch_helper): only '/' is accepted as path
- separator even in DOSISH environment. [ruby-dev:22974]
- [ruby-list:39337]
-
- * dir.c (fnmatch_helper): faster '*' matching.
-
-Fri Mar 12 20:19:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (rb_cv_noreturn): default for platforms not support
- prototypes.
+Sat Mar 13 14:28:16 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * ruby.c (ruby_init_loadpath): buffer for path name should have
- MAXPATHLEN.
+ * test/drb/test_drbssl.rb: rescue LoadError. (Barkport from main
+ trunk)
- * lib/mkmf.rb (configuration): include topdir and hdrdir in VPATH.
+ * test/drb/test_drbunix.rb: ditto.
- * lib/mkmf.rb (create_makefile): default dependency rule.
-
-Fri Mar 12 07:35:36 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/config.rb (WEBrick::Config::General): add
- :DoNotReverseLookup.
-
- * lib/webrick/server.rb (WEBrick::GenericServer#accept): call
- do_not_reverse_lookup for each socket if :DoNotReverseLookup
- is set. [ruby-code:02357]
-
-Wed Mar 10 22:26:25 2004 Minero Aoki <aamine@loveruby.net>
+Wed Mar 10 22:28:09 2004 Minero Aoki <aamine@loveruby.net>
* lib/fileutils.rb (remove_dir): should handle symlink correctly.
This patch is contributed by Christian Loew. [ruby-talk:94635]
+ (Backport from main trunk)
Wed Mar 10 16:28:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -18036,337 +12051,54 @@ Wed Mar 10 16:28:42 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_yield_0): set exit_value for block break.
-Wed Mar 10 16:00:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * struct.c (rb_struct_s_def): Struct::new executes block with
- generated struct class. [ruby-talk:02606]
-
Wed Mar 10 15:58:43 2004 Ryan Davis <ryand@zenspider.com>
* eval.c (eval): Only print backtrace if generating the backtrace
doesn't generate an exception. [ruby-core:02621]
-Wed Mar 10 10:15:16 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ruby.c (opt_W_getter): get rid of warning.
-
- * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub:
- fixed dependency.
-
Tue Mar 9 13:04:26 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (rb_io_ungetc): raise IOError instead of calling
rb_sys_fail(). [ruby-talk:23181]
-Tue Mar 9 10:03:40 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub:
- replaced regex.c entry with Oniguruma files.
-
-Tue Mar 9 01:09:46 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * Makefile.in: replaced regex.c entry with Oniguruma files.
-
-Mon Mar 8 23:16:07 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: HTTPHeader did not initialized correctly.
-
- * lib/net/http.rb (connect): does same debug output.
-
-Mon Mar 8 21:38:18 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb (add_header): remove warning. [ruby-dev:23170]
-
-Mon Mar 8 21:09:39 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (range): Cancel change for incomplete '['. More discussion
- is needed.
-
-Mon Mar 8 19:35:13 2004 akira yamada <akira@arika.org>
+Mon Mar 8 19:32:28 2004 akira yamada <akira@ruby-lang.org>
* lib/uri/common.rb (URI::REGEXP::PATTERN::HOSTPORT): (?:#{PORT})
-> (?::#{PORT}). [ruby-dev:23170]
-Mon Mar 8 15:03:24 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Mar 8 15:31:41 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* dir.c (range): treat incomplete '[' as ordinary character (like
- has_magic does). fix buffer overrun at incomplete escape like '[\'.
-
-Mon Mar 8 13:35:32 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+ has_magic does).
- * regparse.c (parse_exp): need to separate initialization for bcc32.
- [ruby-dev:23169]
+ * dir.c (range): Cancel above change. More discussion is needed.
- * oniguruma.h (ONIG_EXTERN): check __GNUC__ instead of __CYGWIN__.
+Sun Mar 7 22:37:46 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-Mon Mar 8 01:05:55 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/config.rb (WEBrick::Config::HTTP): rename :RequestHander
- to :RequestCallback and add new option :ServerAlias.
+ * test/drb/ut_drb.rb: use 'druby://localhost:0'. [ruby-dev:23078]
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): use
- :RequestCallback and warn if :RequestHandler is in server's option.
+ * test/drb/ut_eval.rb: ditto.
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): should print
- error message for WEBrick::HTTPSataus::Error.
+ * test/drb/ut_large.rb: ditto.
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server):
- lookup for hostname from :ServerAlias if the req.host is not match
- to :ServerName.
+ * test/drb/ut_safe1.rb: ditto.
- * lib/webrick/httpservlet.rb (WEBrick::HTTPServlet::CGIHandler#do_GET):
- use $?.exitstatus and refine log message.
+ * test/drb/ut_drb_drbssl.rb: use 'drbssl://localhost:0'.
Sun Mar 7 16:22:26 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* Makefile.in (lex.c): use $? instead of $<.
- * lib/pstore.rb (commit_new): use FileUtils.copy_stream for Cygwin.
- [ruby-dev:23157]
-
-Sun Mar 7 05:34:42 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: HTTPHeader keeps its header fields as an array.
-
- * lib/net/http.rb: new method HTTPHeader#add_header, get_fields.
-
- * lib/net/http.rb: new method HTTPHeader#content_length=.
-
- * lib/net/http.rb: new method HTTPHeader#content_type, main_type,
- sub_type, type_params, content_type=, set_content_type.
-
- * lib/net/http.rb (HTTPHeader#basic_encode): result of pack(m) may
- contain multiple LFs.
-
-Sun Mar 7 03:11:00 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: new method Net::HTTPRequest#body(=).
-
- * lib/net/http.rb: new method Net::HTTPRequest#body_stream(=).
-
-Sun Mar 7 02:06:07 2004 Minero Aoki <aamine@loveruby.net>
+Fri Mar 5 00:54:14 2004 Dave Thomas <dave@pragprog.com>
- * lib/net/http.rb: spin off https code again.
-
- * lib/net/https.rb: new file.
-
- * ext/openssl/lib/net/https.rb: removed. moved to net/https with
- slight modifications.
-
- * ext/openssl/lib/net/protocols.rb: removed. merged with net/http.
-
- * lib/net/protocol.rb: new class BufferedIO.
-
- * lib/net/protocol.rb: InternetMessageIO < BufferedIO.
-
- * lib/net/protocol.rb: BufferedIO.new takes an IO.
-
- * lib/net/smtp.rb: follow InternetMessageIO's change.
-
- * lib/net/pop.rb: ditto.
-
-Sun Mar 7 00:55:03 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/protocol.rb: remove method: InternetMessageIO#address,
- port, ip_address, read_timeout(=), socket.
-
- * lib/net/protocol.rb: simplify code.
-
- * lib/net/protocol.rb: apply latest coding style.
-
-Sat Mar 6 15:15:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/strscan/depend: depends on re.h and regex.h.
-
- * ext/strscan/strscan.c: no version check needed.
-
- * ext/strscan/strscan.c (strscan_init_copy): struct re_registers must
- not be bitwise copied.
-
-Sat Mar 6 11:14:33 2004 David Black <dblack@wobblini.net>
-
- * lib/scanf.rb: refixed the previous fix in IO#block_scanf
-
-Sat Mar 6 10:49:40 2004 David Black <dblack@wobblini.net>
-
- * lib/scanf.rb: fixed a logic glitch in IO#block_scanf
-
-Sat Mar 6 02:00:19 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: net/https is merged.
-
- * ext/openssl/lib/net/https.rb: ditto.
-
-Sat Mar 6 00:39:21 2004 Kazuo Saito <ksaito@uranus.dti.ne.jp>
-
- * oniggnu.h: imported from Oniguruma library.
- * oniguruma.h: ditto.
- * regcomp.c: ditto.
- * regenc.c: ditto.
- * regenc.h: ditto.
- * regerror.c: ditto.
- * regex.c: ditto.
- * regexec.c: ditto.
- * reggnu.c: ditto.
- * regint.h: ditto.
- * regparse.c: ditto.
- * regparse.h: ditto.
- * ascii.c: ditto.
- * euc_jp.c: ditto.
- * sjis.c: ditto.
- * utf8.c: ditto.
-
- * MANIFEST: added Oniguruma files listed above.
-
- * LEGAL: added Oniguruma license.
-
- * regex.h: now includes oniggnu.h.
-
- * re.c: applied Oniguruma patch.
-
-Fri Mar 5 23:13:08 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: support WebDAV methods, PROPPATCH, LOCK,
- UNLOCK, OPTIONS, PROPFIND, DELETE, MOVE, COPY, MKCOL.
- This patch is contributed by Tatsuki Sugiura.
-
-Fri Mar 5 20:58:37 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb: Net::HTTPResponse#response is obsolete.
- [ruby-core:02592]
-
- * lib/net/http.rb: Net::HTTPResponse#header is obsolete.
-
- * lib/net/http.rb: Net::HTTPResponse#read_header is obsolete.
-
-Fri Mar 5 20:10:57 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/strscan/strscan.c: new method StringScanner#initialize_copy
- to allow #dup and #clone.
-
- * test/strscan/test_strscan.rb: test StringScanner#dup.
-
-Fri Mar 5 19:42:09 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb (HTTPResponse#to_ary): should return an object
- which does not respond to #to_ary. It causes infinite loop in
- puts. [ruby-core:02578]
-
-Fri Mar 5 00:51:35 2004 Dave Thomas <dave@pragprog.com>
-
- * lib/test/unit.rb: Move RDoc documentation so that you can
+ * lib/test/unit.rb: MOve RDoc documentation so that you can
now say 'ri Test::Unit'
-Thu Mar 4 22:31:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in: miniruby is not needed for cross compile.
-
- * configure.in (PREP): miniruby for native compile.
-
-Thu Mar 4 11:46:32 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/drb/extservm.rb (DRb::ExtServManager#invoke_service_command):
- detach server processes to get rid of zombies.
-
-Thu Mar 4 10:41:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ruby.h (T_MASK): save 1 bit in flags bits by shifting T_xxx
- values.
-
-Thu Mar 4 08:08:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/syck/rubyext.c: get rid of warnings.
-
- * lib/rss/taxonomy.rb: ditto.
-
- * lib/rdoc/ri/ri_formatter.rb: ditto.
-
- * test/ruby/test_assignment.rb: ditto.
-
-Thu Mar 4 01:17:28 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/ri/ri_display.rb (DefaultDisplay::page): wait until the
- pager terminates.
-
-Wed Mar 3 13:10:56 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (method_hash): new method. [ruby-talk:93968]
-
- * eval.c (proc_eq): do not compare dyna_vars.
-
- * eval.c (proc_hash): new method.
-
- * eval.c (rb_yield_0): protect break/return from within orphan (or
- lambda) Proc object.
-
-Wed Mar 3 09:52:05 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb ($topdir): use compile_dir only when not installed yet.
- [ruby-talk:94098]
-
-Wed Mar 3 01:18:52 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/converter.rb: handled Uconv::Error.
-
- * lib/rss/dublincore.rb: DublincoreModel -> DublinCoreModel
-
-Wed Mar 3 00:59:30 2004 David Black <dblack@wobblini.net>
-
- * lib/scanf.rb: soak_up_spaces only ungetc's non-space last
- character
-
- * lib/scanf.rb: IO#block_scanf now returns partial last iteration
- array if format string matches partly
-
-Tue Mar 2 16:30:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (pipe_open): erred program name should be reported by
- exceptions, instead of the first argument.
-
- * process.c (rb_spawn): ditto.
-
- * process.c (proc_spawn_v): use first argument as program name.
-
- * win32/win32.c (rb_w32_aspawn): ditto.
-
- * win32/win32.c (CreateChild): search executable file if no program
- name given.
-
- * lib/drb/extservm.rb (invoke_service_command): use Process.spawn.
- [ruby-dev:23103]
-
- * lib/rdoc/ri/ri_display.rb (setup_pager): use IO.popen.
- [ruby-dev:23086], [ruby-dev:23103]
-
- * lib/rdoc/diagram.rb (convert_to_png): ditto.
-
- * lib/rdoc/generators/chm_generator.rb (compile_project): ditto.
-
-Tue Mar 2 12:24:03 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Mar 2 12:32:59 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/Makefile.sub, wince/Makefile.sub (config.h): shouldn't check
defined? NORETURN. [ruby-dev:23100]
-Tue Mar 2 11:28:40 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_iterator.rb (test_ljump): cannot use
- assert_nothing_raised due to passing block.
-
-Tue Mar 2 06:23:14 2004 David Black <dblack@wobblini.net>
-
- * lib/scanf.rb: fixed Kernel#scanf to propagate code block
-
-Mon Mar 1 23:25:40 2004 David Black <dblack@wobblini.net>
-
- * lib/scanf.rb: Partial fix so STDIN#scanf works with new
- STDIN#pos behavior
-
-Mon Mar 1 19:42:05 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * bcc32/setup.mak: configure's default is "--enable-install-doc"
-
- * win32/setup.mak: ditto.
-
Mon Mar 1 12:24:10 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_alias):
@@ -18377,105 +12109,38 @@ Sun Feb 29 23:14:53 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_class):
Handle :nodoc: on singleton classes.
-Sat Feb 28 21:50:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * bcc32/Makefile.sub, bcc32/README.bcc32, bcc32/configure.bat,
- bcc32/setup.mak: new configure scheme. use ``configure --prefix=dir''
- instead of ``make DESTDIR=dir install''.
- --with-static-linked-ext support on bccwin32. [ruby-dev:23034]
-
-Sat Feb 28 21:50:20 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * bcc32/setup.mak: "configure --disable-install-doc" is now working.
-
- * win32/setup.mak: ditto.
-
-Sat Feb 28 15:09:49 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * bcc32/configure.bat: append missing label ":exit".
-
- * bcc32/configure.bat: fix typo.
-
-Sat Feb 28 10:31:03 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sat Feb 28 10:58:49 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* MANIFEST: add test_erb.rb
* lib/erb.rb, test/erb/test_erb.rb: don't forget filename,
if both filename and safe_level given. [ruby-dev:23050]
-Sat Feb 28 01:08:40 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (yylex): should not allow symbol for invalid global
- variable (e.g. `:$-)`). [ruby-core:02518]
-
-Fri Feb 27 20:37:09 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (proc_invoke): no orphan block check is needed when pcall
- is true.
-
- * eval.c (localjump_destination): update localjump condition.
-
-Fri Feb 27 02:10:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * eval.c (localjump_destination): lambda should not interfere
- return from the yielded block.
-
-Fri Feb 27 00:53:49 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Fri Feb 27 01:00:09 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb, test/drb/drbtest.rb: require drb/eq.rb by default
-Thu Feb 26 12:15:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (make_cmdvector): adjust successive double-quote
- handling.
-
-Thu Feb 26 09:42:56 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * hash.c (delete_if_i): use st_delete_safe() (via
- rb_hash_delete()) instead of returning ST_DELETE.
-
-Thu Feb 26 02:35:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (rb_f_exec): get rid of SEGV when exec failed for command
- in single string.
-
-Wed Feb 25 21:17:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (obj_free), io.c (rb_io_fptr_finalize), rubyio.h (OpenFile):
- sharing OpenFile.
-
- * io.c (rb_io_initialize): accept IO instance. [ruby-dev:22195]
-
-Wed Feb 25 21:16:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 25 21:16:25 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* instruby.rb (with_destdir): should return the given argument if no
DESTDIR is given.
* instruby.rb: use path name expansion of cmd.exe.
-Wed Feb 25 20:44:45 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 25 09:35:22 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/cgi-lib.rb, lib/getopts.rb, lib/importenv.rb, lib/parsearg.rb:
- warn with caller position.
+ * error.c (NameError::Message): new class for lazy evaluation of
+ message to ensure replaced before marshalling. merge from HEAD.
+ (ruby-bugs-ja:PR#588)
- * test/rss/test_content.rb, test/rss/test_dublincore.rb,
- test/rss/test_syndication.rb, test/rss/test_trackback.rb: use cgi
- instead of cgi-lib.
+ * eval.c (rb_method_missing): use NameError::Message. merge from
+ HEAD. (ruby-bugs-ja:PR#588)
-Tue Feb 24 18:42:03 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Tue Feb 24 18:59:37 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* dir.c (glob_helper): '**/' should not match leading period
unless File::FNM_DOTMATCH is set. (like '*/') [ruby-dev:23014]
-Tue Feb 24 18:03:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_file.rb (test_fnmatch): test for dir.c:1.108.
-
-Tue Feb 24 17:07:17 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (fnmatch): File.fnmatch with File::FNM_PATHNAME was broken
- for the pattern including '*' followed by '/'.
-
Tue Feb 24 13:22:21 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/rdoc.rb (RDoc::RDoc::normalized_file_list): Attempt to get better
@@ -18493,6 +12158,11 @@ Tue Feb 24 06:40:14 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RubyLex::identify_identifier): Handle
class variables in code listings
+Tue Feb 24 06:40:14 2004 Dave Thomas <dave@pragprog.com>
+
+ * lib/rdoc/parsers/parse_rb.rb (RubyLex::identify_identifier): Handle
+ class variables in code listings
+
Tue Feb 24 06:32:27 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_aliases): Handle
@@ -18521,164 +12191,88 @@ Tue Feb 24 03:45:06 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_config.c (Init_ossl_config): include Enumerable.
-Mon Feb 23 09:09:44 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * instruby.rb (parse_args): use optparse instead of getopts.
+Mon Feb 23 09:16:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* instruby.rb (DOSISH): embedded path in batch files should not be
prefixed by DESTDIR. [ruby-core:02186]
-Sun Feb 22 14:58:04 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb: $extstatic is Array or nil now. [ruby-talk:93383]
-
- * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub: terminate options.
-
- * lib/mkmf.rb (init_mkmf): $INCFLAGS also should be lazy-evaluated.
-
-Sun Feb 22 13:05:37 2004 akira yamada <akira@ruby-lang.org>
-
- * lib/uri/mailto.rb (URI::MailTo::to_s): should include fragment.
-
-Sun Feb 22 12:58:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb: use optparse instead of getopts.
+Sun Feb 22 09:54:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
- * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub: ditto.
+ * re.c: corrected documentation format (again)
-Sun Feb 22 09:51:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Sun Feb 22 09:43:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
* re.c: corrected documentation format (rb_reg_initialize_m)
-Sat Feb 21 22:41:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Sat Feb 21 22:36:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
* ext/zlib/zlib.c: documented, but needs more effort.
-Sat Feb 21 14:33:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb: prefer relative path. [ruby-talk:93037]
-
-Sat Feb 21 11:12:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 21 11:12:15 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* missing/os2.c, missing/x68.c: typo fix. pointed out by greentea.
-Fri Feb 20 19:11:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/ostruct.rb (OpenStruct#initialize_copy): should not share
- members. [ruby-dev:22966]
-
Fri Feb 20 18:59:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/irb/init.rb (IRB::IRB.parse_opts): add -I option to
irb. [ruby-dev:39243]
-Fri Feb 20 12:55:27 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (pipe_open): fix typo.
-
- * win32/win32.c (CreateChild): first argument to CreateProcess() must
- have path, not just basename.
-
Thu Feb 19 23:24:16 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/html_generator.rb (Generators::HtmlClass::build_attribute_list):
Support visibility modifiers for attributes
-Thu Feb 19 22:39:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Thu Feb 19 23:24:16 2004 Dave Thomas <dave@pragprog.com>
- * lib/ostruct.rb: documented
+ * lib/rdoc/generators/html_generator.rb (Generators::HtmlClass::build_attribute_list):
+ Support visibility modifiers for attributes
Thu Feb 19 22:39:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/rinda/test_rinda.rb: DRb.start_service only once in testsuites.
DRb.start_service could handle this.
-Thu Feb 19 22:24:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
+Thu Feb 19 22:19:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
- * lib/soap/mapping/rubytypeFactory.rb: should not dump singleton class.
- [ruby-dev:22588]
- c = class << Object.new; class C; self; end; end; SOAPMarshal.dump(c)
+ * lib/ostruct.rb: documented
-Thu Feb 19 18:08:18 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Thu Feb 19 21:28:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
* ext/strscan/strscan.c: improved documentation
-Thu Feb 19 18:08:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Feb 19 03:10:52 2004 Minero Aoki <aamine@loveruby.net>
- * win32/win32.c, win32/win32.h: fixed prototypes.
+ * ext/strscan/strscan.c: synchronized with main trunk (rev 1.11).
- * win32/win32.c (wait): same as waitpid() with -1.
+Thu Feb 19 02:30:34 2004 Minero Aoki <aamine@loveruby.net>
-Thu Feb 19 02:34:28 2004 Dave Thomas <dave@pragprog.com>
-
- * lib/rdoc/markup/simple_markup/preprocess.rb (SM::PreProcess::include_file):
- Only strip comment markers if all lines start with comments.
-
-Thu Feb 19 03:05:49 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/strscan/strscan.c: StringScanner#restsize is obsolete;
- use #rest_size instead.
-
- * ext/strscan/strscan.c: StringScanner#matchedsize is obsolete;
- use #matched_size instead.
-
-Thu Feb 19 02:42:19 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/strscan/strscan.c: don't use rb_eval_string, it defines
- classes under the module when required in module clauses.
- [ruby-dev:22951]
-
-Thu Feb 19 02:37:28 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/strscan/strscan.c: merge documentation from 1.8 branch.
- Thanks Gavin Sinclair.
-
-Thu Feb 19 00:20:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
-
- * lib/cgi-lib.rb: deprecated after 1.8.1
-
- * lib/getopts.rb: ditto
-
- * lib/importenv.rb: ditto
-
- * lib/parsearg.rb: ditto
+ * ext/strscan/strscan.c: documentation checked.
Thu Feb 19 00:11:05 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/markup/simple_markup/preprocess.rb (SM::PreProcess::handle):
Strip extraneous space from filenames in :include:
-Wed Feb 18 22:53:41 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Wed Feb 18 22:52:00 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * lib/drb/unix.rb: remove O_NONBLOCk, thanks \ay
+ * lib/drb/unix.rb: remove O_NONBLOCK, thanks \ay
-Wed Feb 18 22:42:19 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Wed Feb 18 22:47:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
- * test/rinda/test_rinda.rb: improt test_rinda.rb
+ * ext/strscan/strscan.c: documented
Wed Feb 18 22:03:11 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/*: should not depend on $KCODE.
-Wed Feb 18 18:07:09 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_sprintf.rb: added tests.
-
Wed Feb 18 17:18:01 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* ext/win32ole/win32ole.c: need to include <olectl.h> on Cygwin.
Wed Feb 18 10:40:38 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * sprintf.c (rb_f_sprintf): sign bit extension should not be done
- if FPLUS flag is specified. [ruby-list:39224]
-
* sprintf.c (rb_f_sprintf): do not prepend dots for negative
- numbers if FZERO is specified. [ruby-dev:39218]
-
-Wed Feb 18 10:23:34 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * sprintf.c (rb_f_sprintf): clean up.
+ numbers if FZERO is specified. [ruby-list:39218]
Tue Feb 17 23:40:34 2004 Guy Decoux <ts@moulon.inra.fr>
@@ -18687,11 +12281,6 @@ Tue Feb 17 23:40:34 2004 Guy Decoux <ts@moulon.inra.fr>
Tue Feb 17 23:28:45 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * test/soap/marshal/test_marshal.rb, test/ruby/test_marshal.rb: do $:
- trick to share the testcase test/ruby/marshaltestlib.rb.
-
-Tue Feb 17 23:13:23 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
* test/ruby/marshaltestlib.rb: common marshal testcase added.
* test/ruby/test_marshal.rb: use above testsuite.
@@ -18700,282 +12289,108 @@ Tue Feb 17 23:13:23 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/soap/marshal/cmarshal.rb: removed (not used).
-Tue Feb 17 19:34:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Feb 17 10:51:23 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/extmk.rb (extmake): $extout_prefix doesn't vary for libraries.
-
- * ext/extmk.rb (extmake): remove compile directory if empty.
-
- * ext/extmk.rb (parse_args) lib/mkmf.rb (create_makefile): move
- initialization of $extout_prefix from lib/mkmf.rb. [ruby-dev:22928]
-
- * ext/extmk.rb: clear ext and extout directory when cleaning.
-
- * lib/mkmf.rb (CLEANLIBS): should be under $(arch) directory.
-
-Tue Feb 17 18:02:10 2004 Minero Aoki <aamine@loveruby.net>
-
- * ext/strscan/strscan.c: ScanError may be (wrongly) garbage
- collected. (thanks Gavin Sinclair)
-
- * ext/strscan/strscan.c: move ::ScanError to StringScanner::Error.
- ::ScanError is also defined for backward compatibility.
-
- * ext/strscan/strscan.c: #peep is obsolete, use #peek.
-
- * ext/strscan/strscan.c: #empty? is obsolete, use #eos?.
-
- * ext/strscan/strscan.c: #clear is obsolete, use #terminate.
-
- * ext/strscan/strscan.c: #getbyte is obsolete, use #get_byte.
+ * ext/syck/rubyext.c (syck_emitter_end_object): takes only one arg.
-Tue Feb 17 12:12:47 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Feb 17 01:35:28 2004 Tanaka Akira <akr@m17n.org>
- * ext/extmk.rb (parse_args): delay expanding $(extout) until invoking
- make.
+ * eval.c (rb_eval): care that another thread replace NODE_DREGX_ONCE
+ to NODE_LIT. [ruby-dev:22920]
- * lib/mkmf.rb (CLEANLIBS): should remove files have specific
- extensions.
+Tue Feb 17 01:24:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Feb 17 11:33:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bcc32/Makefile.sub, win32/Makefile.sub (config.h): define
+ STACK_GROW_DIRECTION. [ruby-dev:22910]
- * lib/rss/rexmlparser.rb: REXML version may be 4 digits.
+ * bcc32/Makefile.sub (config.h): add newer checks.
-Tue Feb 17 10:45:59 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+ * wince/Makefile.sub (config.h): define NEED_IO_SEEK_BETWEEN_RW.
- * ext/syck/rubyext.c (syck_emitter_end_object): takes only one arg.
+Tue Feb 17 00:38:10 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-Tue Feb 17 07:48:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rinda/tuplespace.rb: TupleSpace#initialize, stop doubling timeout
- * lib/rexml/encodings/SHIFT_JIS: wrong library name.
+Tue Feb 17 00:18:03 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-Tue Feb 17 01:35:28 2004 Tanaka Akira <akr@m17n.org>
+ * test/rinda/test_rinda.rb: import test_rinda.rb
- * eval.c (rb_eval): care that another thread replace NODE_DREGX_ONCE
- to NODE_LIT. [ruby-dev:22920]
+Tue Feb 17 00:14:30 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-Tue Feb 17 01:20:57 2004 Minero Aoki <aamine@loveruby.net>
+ * bcc32/Makefile.sub: avoid warning "Redefinition of macro
+ 'HAVE_GETLOGIN'".
- * lib/fileutils.rb: new module FileUtils::DryRun.
+ * vms/config.h_in: ditto.
Mon Feb 16 23:28:14 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/csv.rb: document reduction. [ruby-core:02429]
- * test/yaml/test_yaml.rb: added 0..1 test with "0".."1" on display.
- it should be defined that the specification about what kind of Range
- is supported in ruby's custom type in YAML.
-
-Mon Feb 16 22:22:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Mon Feb 16 22:08:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
* lib/generator.rb: corrected doc format
-
* lib/rinda/rinda.rb: added documentation (from Hugh Sasse)
-
* lib/rinda/tuplespace.rb: ditto
- [Note: rinda files actually committed Wed Feb 18 07:27:00 2004]
-
-Mon Feb 16 20:28:52 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Feb 16 20:41:32 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* bcc32/Makefile.sub: show more warnings. (refering to mingw)
* bcc32/setup.mak: ditto.
-Mon Feb 16 18:35:58 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (config.status): should create *.pdb on ext/,
- not .ext/.
-
- * win32/Makefile.sub (config.status): convert the name of import
- library.
-
- * lib/mkmf.rb (create_makefile): now don't need to remove
- $(TARGET).lib.
-
-Mon Feb 16 15:45:22 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in: check functions, fork spawnv.
-
- * io.c (rb_io_s_popen): accept argv not only single command line.
-
- * process.c (rb_proc_exec_n): export.
-
- * process.c (rb_check_argv): check if arguments are safe to invoke.
-
- * process.c (rb_fork): retry to fork.
-
- * process.c (rb_spawn): spawn child process asynchronously.
-
- * process.c (rb_f_system): raise an exception if the command could not
- execute.
-
- * win32/win32.c (rb_w32_argv_size): count necessary size for joined
- arguments.
-
- * win32/win32.c (rb_w32_join_argv): join arguments with quoting.
-
- * win32/win32.c (rb_w32_pipe_exec, rb_w32_spawn, rb_w32_aspawn):
- accept program name adding to command line.
-
-Mon Feb 16 15:18:33 2004 Minero Aoki <aamine@loveruby.net>
+Mon Feb 16 13:39:44 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
- * lib/racc/parser.rb: add note for Racc full package.
+ * dir.c (rb_glob, rb_globi): add const.
-Mon Feb 16 15:13:01 2004 Minero Aoki <aamine@loveruby.net>
+ * ruby.h: ditto.
- * ext/racc/cparse/README: new file.
-
- * ext/racc/cparse/MANIFEST: add README.
-
-Mon Feb 16 12:29:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/iconv/iconv.c (iconv_s_list): new method Iconv.list
- (libiconv only).
-
-Mon Feb 16 10:29:52 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (CompareImpl): File.fnmatch and Dir.glob get better performance
- in Win32. This is achived by calling downcase() for single-byte
- characters. (CharLower() is slower than downcase())
-
-Mon Feb 16 02:14:29 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Feb 16 02:16:33 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* bcc32/Makefile.sub: should warn suspicious pointer conversion.
* bcc32/setup.mak: ditto.
-Sun Feb 15 20:56:22 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * dir.c (push_braces): remove wrong const. [ruby-dev:22891]
-
-Sun Feb 15 20:41:15 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * sample/soap/calc/httpd.rb, sample/soap/exchange/httpd.rb,
- sample/soap/sampleStruct/httpd.rb, sample/wsdl/googleSearch/httpd.rb:
- use soap/property instead of getopts for configuring DocumentRoot
- and port# of httpd. see samplehttpd.conf below.
-
- * sample/soap/calc/samplehttpd.conf,
- sample/soap/exchange/samplehttpd.conf,
- sample/soap/sampleStruct/samplehttpd.conf,
- sample/wsdl/googleSearch/samplehttpd.conf: added.
-
-Sun Feb 15 19:13:33 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sun Feb 15 19:06:42 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * lib/rinda/tuplespace.rb: read(tpl,0), raise RequestExpiredError
- if not found.
+ * lib/rinda/tuplespace.rb: TupleSpace#read(tpl, 0), raise
+ RequestExpiredError if not found.
-Sun Feb 15 15:48:57 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+Sun Feb 15 15:56:46 2004 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole.c: add IDispatch wrapper in val2variant.
Thanks, arton.
-Sun Feb 15 15:23:29 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
-
- * ruby.h, dir.c (rb_glob): add const.
-
Sun Feb 15 01:46:05 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/mkmf.rb: absolute path of ruby is assigned to $(RUBY).
[ruby-dev:22870]
-Sat Feb 14 23:59:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * mkconfig.rb: use fileutils.rb instead of ftools.rb.
-
- * bcc32/Makefile.sub, win32/Makefile.sub (config.h): define
- STACK_GROW_DIRECTION.
-
- * bcc32/Makefile.sub (config.h): add newer checks.
-
- * wince/Makefile.sub (config.h): define NEED_IO_SEEK_BETWEEN_RW.
-
-Sat Feb 14 23:26:27 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * lib/un.rb: use OptionParser instead of getopts.
-
-Sat Feb 14 11:28:14 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sat Feb 14 11:29:41 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* sample/drb/*: import lib/drb/sample
-Sat Feb 14 11:14:12 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Sat Feb 14 11:08:23 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb: add pretty_print, thanks gotoken.
-Fri Feb 13 21:51:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
-
- * lib/fileutils.rb: slighly improved documentation (sync with 1.8)
-
-Fri Feb 13 19:57:01 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rss/test_trackback.rb: added tests for TrackBack with RSS
- 2.0.
-
- * test/rss/common.rb: added methods make RSS 2.0.
-
- * lib/rss/trackback.rb: TrackBack API is decided.
-
- * lib/rss/rss.rb: RSS::VERSION 0.0.7 -> 0.0.8.
-
- * lib/rss/parser.rb, lib/rss/rss.rb: replaced $DEBUG by RSS::DEBUG.
-
- * lib/rss/2.0.rb: removed RSS 2.0 URI. Because RSS 2.0 doesn't
- have URI.
-
-Fri Feb 13 14:41:00 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/tk.rb: en-bugged at last commit (Feb 11 23:24:22 2004)
+Fri Feb 13 12:35:08 2004 Minero Aoki <aamine@loveruby.net>
-Fri Feb 13 12:26:37 2004 Minero Aoki <aamine@loveruby.net>
+ * test/fileutils/test_fileutils.rb: File.link may raise EINVAL and
+ EACCES on Windows.
- * test/fileutils/test_fileutils.rb: rescue SystemCallError instead
- of EINVAL. File.link may raise EACCES on network file systems.
-
-Fri Feb 13 05:18:58 2004 Minero Aoki <aamine@loveruby.net>
-
- * test/fileutils/test_fileutils.rb: File.link raises EINVAL on
- Win9x. [ruby-dev:22713]
-
-Thu Feb 12 21:49:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Thu Feb 12 21:45:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
* lib/ftools.rb: documented
-Thu Feb 12 21:19:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Thu Feb 12 21:25:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
- * lib/base64.rb: added and tidied documentation
+ * lib/base64.rb: backported from HEAD (modularised and documented)
-Thu Feb 12 20:45:01 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/protocol.rb (WriteAdapater#puts): must append "\n" to
- the string, don't prepend. (ruby-bugs:PR#1280)
-
-Thu Feb 12 20:31:43 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Feb 12 20:31:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (create_tmpsrc): cpp32 of Borland C++ ignores #error
directives in DOS line-ending files at all.
-Thu Feb 12 15:23:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (rparen): ignore preceding newlines to right parentheses.
- (ruby-bugs:PR#1221) [ruby-dev:22858]
-
-Thu Feb 12 14:17:43 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * configure.in: set ac_cv_func_link to yes to enable link() on MinGW.
- [ruby-dev:22241]
-
-Thu Feb 12 13:32:49 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (link): raise NotImplementedError on Win9X.
- contributed by Tietew. [ruby-dev:22713]
-
- * win32/win32.c, win32/win32.h (link): add const.
-
-Thu Feb 12 09:56:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/tk/lib/tk.rb (TkComm::tk_split_list): suppress a warning.
-
Thu Feb 12 02:23:56 2004 Tanaka Akira <akr@m17n.org>
* lib/pathname.rb: use assert_raise instead of assert_raises.
@@ -18987,91 +12402,26 @@ Thu Feb 12 02:23:56 2004 Tanaka Akira <akr@m17n.org>
* lib/tsort.rb: ditto.
use TSortHash and TSortArray instead of Hash and Array in test.
-Wed Feb 11 23:24:22 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/tk.rb: properly treat a Tcl/Tk's string with escaping
- special characters.
-
-Tue Feb 10 20:49:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (method_proc): return bound Proc object. [ruby-dev:22854]
-
- * eval.c (rb_mod_define_method): bind method body itself for Method
- object.
-
- * node.h (NODE_DMETHOD): deprecated.
-
- * object.c (rb_class_inherited_p): export.
-
-Tue Feb 10 16:43:50 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (umethod_bind): purge unused check. [ruby-dev:22850]
-
-Tue Feb 10 14:33:08 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * string.c (rb_str_match): raise TypeError when both arguments are
- strings. [ruby-dev:22851]
-
- * string.c (rb_str_match2): removed.
-
- * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub,
- wince/Makefile.sub (string.c): now not depend on version.h.
-
-Mon Feb 9 17:46:07 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in, bcc32/Makefile.sub, win32/Makefile.sub, configure.in,
- runruby.rb: run rdoc, test and so on with compiled extension
- libraries. [ruby-dev:22688]
-
- * ext/extmk.rb, lib/mkmf.rb: make extension libraries in separated
- directory, similar to the actual directory structure.
-
- * lib/fileutils.rb (FileUtils.copy_file): use the mode of the original
- file to create new file.
-
- * lib/rdoc/ri/ri_paths.rb (RI::Paths::SYSDIR): get rid of unexpected
- influence by envirionment variable.
-
- * bcc32/configure.bat, win32/configure.bat: add install-doc options.
-
- * win32/win32.c, win32/win32.h (rb_w32_fstat): fix Borland C runtime
- bug which returns wrong mode. [ruby-dev:22846]
-
-Mon Feb 9 16:30:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (detach_process_watcher): return the last status.
- [ruby-dev:22841]
-
-Sun Feb 8 16:46:08 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/pp.rb (PP::PPMethods::object_address_group): suppress negative
- sign for higher heap areas.
-
-Sun Feb 8 16:18:27 2004 akira yamada <akira@ruby-lang.org>
-
- * test/yaml/test_yaml.rb (YAML_Unit_Tests::test_range_cycle):
- added tests.
-
-Sun Feb 8 15:51:57 2004 akira yamada <akira@ruby-lang.org>
+Wed Feb 11 20:01:12 2004 akira yamada <akira@ruby-lang.org>
* test/ruby/test_file.rb (TestFile::test_fnmatch): added tests for
File.fnmatch. [ruby-dev:22815][ruby-dev:22819]
-Sun Feb 8 15:41:45 2004 akira yamada <akira@ruby-lang.org>
+ * test/ruby/test_proc.rb (TestProc::test_eq): added a
+ test. [ruby-dev:22599]
- * test/yaml/test_yaml.rb (YAML_Unit_Tests::test_range_cycle):
- added tests. [ruby-core:02306] [ruby-core:02311]
+ * test/ruby/test_proc.rb (TestProc::test_eq): added tests for
+ Proc#==. [ruby-dev:22592], [ruby-dev:22601]
-Sun Feb 8 14:24:35 2004 Minero Aoki <aamine@loveruby.net>
+Tue Feb 10 16:43:56 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/net/http.rb (HTTP#request): should not overwrite Connection
- header. (ruby-bugs:PR#1274)
+ * eval.c (umethod_bind): purge unused check. [ruby-dev:22850]
-Sun Feb 8 10:11:21 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Feb 9 17:16:00 2004 WATANABE Hirofumi <eban@ruby-lang.org>
- * dir.c (glob_helper): Dir.glob('**/') did not work. [ruby-dev:22832]
+ * lib/rdoc/parsers/parse_c.rb: escape '{' and '}' to avoid warnings.
-Sun Feb 8 00:29:26 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
+Mon Feb 9 13:00:55 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* dir.c (fnmatch): File.fnmatch('*?', 'a') should return true.
[ruby-dev:22815]
@@ -19079,14 +12429,10 @@ Sun Feb 8 00:29:26 2004 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* dir.c (fnmatch): File.fnmatch('\[1\]' , '[1]') should return true.
[ruby-dev:22819]
- * dir.c: Did some styles (no change to behavior)
-
-Sat Feb 7 19:56:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/irb/init.rb (IRB.rc_files): yield possible rc file names.
+Sun Feb 8 16:46:13 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/irb/input-method.rb (IRB::ReadlineInputMethod::initialize):
- load and save history automatically. [ruby-core:02352]
+ * lib/pp.rb (PP::PPMethods::object_address_group): suppress negative
+ sign for higher heap areas.
Fri Feb 6 22:48:16 2004 Dave Thomas <dave@pragprog.com>
@@ -19103,27 +12449,6 @@ Fri Feb 6 22:22:50 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* lib/pp.rb (PPInspectTest#test_to_s_with_iv): remove instance
variable which is defined in the test.
-Fri Feb 6 18:54:18 2004 akira yamada <akira@ruby-lang.org>
-
- * test/ruby/test_proc.rb (TestProc::test_eq): added a
- test. [ruby-dev:22599]
-
-Fri Feb 6 18:26:00 2004 akira yamada <akira@ruby-lang.org>
-
- * test/ruby/test_proc.rb (TestProc::test_eq): added tests for
- Proc#==. [ruby-dev:22592], [ruby-dev:22601]
-
-Fri Feb 6 10:12:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/socket/socket.c (bsock_do_not_reverse_lookup): control reverse
- lookup for every instance. [ruby-core:02346]
-
-Fri Feb 6 09:15:11 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/irb/extend-command.rb: add irb_help command. [ruby-talk:91610]
-
- * lib/irb/cmd/help.rb (IRB::ExtendCommand::Help): show RDoc.
-
Fri Feb 6 00:48:37 2004 Tanaka Akira <akr@m17n.org>
* lib/prettyprint.rb (PrettyPrint#first?): obsoleted.
@@ -19140,10 +12465,6 @@ Thu Feb 5 23:56:55 2004 Tanaka Akira <akr@m17n.org>
* lib/set.rb (Set#pretty_print): use seplist.
-Wed Feb 4 22:39:46 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_stat_mode): should not sign-expand, so backout.
-
Wed Feb 4 02:12:06 2004 Tanaka Akira <akr@m17n.org>
* file.c (test_l): fix wrong method name in document.
@@ -19154,37 +12475,19 @@ Wed Feb 4 02:12:06 2004 Tanaka Akira <akr@m17n.org>
(test_sgid): ditto.
(test_sticky): ditto.
-Tue Feb 3 22:36:25 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/2.0.rb, lib/rss/content.rb, lib/rss/dublincore.rb,
- lib/rss/rss.rb, lib/rss/syndication.rb: removed warnings.
-
- * lib/rss/converter.rb: removed handling load error of nkf.
-
- * test/rss/test_syndication.rb, test/rss/test_trackback.rb,
- test/rss/test_dublincore.rb, test/rss/test_content.rb: replaced
- 'require "rss/parser"' by 'require "rss/1.0"'.
-
- * test/rss/test_parser.rb, test/rss/test_accessor.rb: removed
- 'require "rss/parser"'.
-
-Tue Feb 3 11:23:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (reduce_nodes): remove tail returns. [ruby-talk:90934]
-
Tue Feb 3 08:04:57 2004 Tanaka Akira <akr@m17n.org>
* lib/pp.rb (Struct#pretty_print_cycle): follow 1.8 style.
-Mon Feb 2 22:06:31 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 2 19:33:49 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+
+ * configure.in: backport from 1.9 for Interix.
- * parse.y (block_append, new_evstr, void_expr0): remove no longer used
- labels.
+ * dln.c (dln_load): ditto.
-Mon Feb 2 18:45:50 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+Mon Feb 2 13:31:51 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * dln.c (dln_load): don't specify RTLD_GLOBAL on Interix,
- because it caused SEGV when running runner.rb.
+ * lib/net/http.rb (canonical_each): fix merge miss.
Mon Feb 2 01:54:00 2004 Tanaka Akira <akr@m17n.org>
@@ -19206,14 +12509,12 @@ Mon Feb 2 01:54:00 2004 Tanaka Akira <akr@m17n.org>
(UDPSocket#send): recognize 3 arguments form. try all addresses on
4 arguments form.
-Sun Feb 1 23:00:00 2004 Shigeo Kobayashi <shigek@ruby-lang.org>
+Sun Feb 1 18:17:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
- * ext/bigdecimal.c: Bug in BigDecimal("1e#{n}").add BigDecimal('.5'),n)
- reported and fixed by Javier Goizueta.
+ * lib/net/http.rb: merged coding style changes from HEAD.
-Sun Feb 1 18:21:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
+Sun Feb 1 16:15:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
- From ruby_1_8 branch:
* lib/test/unit.rb: rearranged documentation for RDoc's sake.
* lib/matrix.rb: improved documentation.
* lib/net/http.rb: slight documentation formatting improvement.
@@ -19224,32 +12525,27 @@ Sun Feb 1 05:30:06 2004 Tanaka Akira <akr@m17n.org>
raise an errror on non-http proxy URI.
(OpenURI::Buffer#<<): make a tempfile binmode. [ruby-talk:90793]
-Sun Feb 1 00:57:41 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss/parser.rb (RSS::Parser): added @@default_parser. Used
- XML parser became selectable.
- * test/rss/test_parser.rb: added tests for
- RSS::Parser.default_parser.
+Sat Jan 31 09:20:32 2004 NAKAMURA, Hiroshi <nakahiro@sairon.co.jp>
-Sat Jan 31 02:28:15 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+ * sample/openssl/gen_csr.rb: wrong usage string.
- * configure.in (RPATHFLAG): set to -Wl,-R like NetBSD on Interix.
+Sat Jan 31 01:00:32 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-Sat Jan 31 01:09:41 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/logger.rb: leading 0 padding of timestamp usec part.
+ * lib/soap/wsdlDriver.rb, lib/wsdl/soap/operation.rb: add support of
+ "parts" attribute of soap:body element in WSDL.
-Fri Jan 30 18:53:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/wsdl/xmlSchema/schema.rb: friendly warning message for
+ simpleType element which is not supported for now.
- * re.c (KR_REHASH): wrong hash value on sizeof(long) > sizeof(int).
+ * lib/soap/mapping/factory.rb: deleted unused methods.
-Thu Jan 29 23:11:57 2004 WATANABE Hirofumi <eban@ruby-lang.org>
+ * lib/soap/mapping/rubytypeFactory.rb: do no ignore case while xsi:type
+ string <-> Ruby class name matching.
- * configure.in (DLEXT2): removed. Ruby does not treat
- ".dll" as a extention library anymore.
+ * test/wsdl/soap/{soapbodyparts.wsdl,test_soapbodyparts.wsdl}: new
+ files.
- * bcc32/Makefile.sub, win32/Makefile.sub, wince/Makefile.sub (DLEXT2):
- ditto.
+Thu Jan 29 23:56:00 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* util.c (mblen): fix overrun. [ruby-dev:22672]
@@ -19258,83 +12554,36 @@ Thu Jan 29 22:41:53 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/generators/html_generator.rb: Allow 'link:' in Tidylinks.
THis means you can write "see f1[link:files/f1_rb.html]".
-Thu Jan 29 22:24:47 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * sample/openssl/gen_csr.rb: follow OpenSSL::X509::Name change.
- ASN.1 type of subject DN elements were wrong.
-
-Thu Jan 29 22:19:51 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * test/*: remove $: trick. [ruby-dev:22763] use test/runner.rb to
- run test.
-
-Thu Jan 29 19:28:16 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb (Request#initialize): reject only when a path is
- empty. [ruby-dev:22771]
-
-Thu Jan 29 18:54:08 2004 H.Yamamoto <ocean@m2.ccsnet.ne.jp>
+Thu Jan 29 15:33:23 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
- * dir.c (glob_helper): infinite loop bug in win32 code.
- [ruby-dev:22770]
-
-Thu Jan 29 17:03:49 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
- [ruby-dev:22761]
-
-Thu Jan 29 11:32:14 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * test/rss/test_*: do $: trick while searching a module in the current
- directory.
-
- * test/xsd/test_xmlschemaparser.rb, test/wsdl/test_emptycomplextype.rb,
- test/soap/helloworld/test_helloworld.rb,
- test/soap/calc/{test_calc.rb,test_calc2.rb}: do File.expand_path
- before using __FILE__.
-
- * test/yaml/test_yaml.rb: assert_equals -> assert_equal.
-
-Thu Jan 29 01:56:02 2004 why the lucky stiff <why@ruby-lang.org>
-
- * ext/syck/rubyext.c: usec round-tripping skew. [ruby-core:2305]
-
- * lib/yaml/rubytypes.rb: character Range now round-trips. [ruby-core:2306]
-
- * test/yaml/test_yaml.rb: add Time and Range tests.
-
-Thu Jan 29 00:00:46 2004 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rss: rss/parser.rb is always required.
-
-Wed Jan 28 15:09:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_x509hame.c (ossl_x509name_initialize): change
+ second argument. it expected to be a Hash not an Integer.
- * test/rss/*.rb: remove "test/" prefix.
+ * ext/openssl/ossl_x509name.c (ossl_x509name_add_entry): add new
+ function for OpenSSL::X509::Name#add_entry.
-Wed Jan 28 13:07:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_x509name.c (ossl_x509name_to_a): append ASN.1
+ tag number to each element of return value.
- * ext/iconv/extconf.rb: include iconv.h for libiconv. [ruby-dev:22715]
+ * ext/openssl/ossl_x509name.c (Init_ossl_x509name): add constants
+ OpenSSL::X509::Name::DEFAULT_OBJECT_TYPE and OBJECT_TYPE_TEMPLATE.
-Wed Jan 28 12:43:07 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name#initialize):
+ second argument takes OBJECT_TYPE_TEMPLATE by default.
- * lib/rss: rss library imported. [ruby-dev:22726]
+ * sample/openssl/gen_csr.rb: use OpenSSL::X509::Name.parse.
Wed Jan 28 04:29:41 2004 Eric Schwartz <emschwar@fc.hp.com>
* lib/cgi/session.rb: use LOCK_SH to read, and a few other
improvements. [ruby-core:02328]
-Tue Jan 27 15:00:14 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * misc/ruby-mode.el: better support for general delimited
- strings. [ruby-dev:22695]
-
-Tue Jan 27 11:04:40 2004 FUKUMOTO Atsushi <fukumoto@nospam.imasy.or.jp>
+Tue Jan 27 11:09:29 2004 FUKUMOTO Atsushi <fukumoto@nospam.imasy.or.jp>
* ext/socket/socket.c (s_recvfrom): sending length should be an
invariant while retrying on EAGAIN. [ruby-talk:89962]
-Tue Jan 27 10:31:28 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jan 27 10:35:18 2004 NAKAMURA Usaku <usa@ruby-lang.org>
* ext/win32ole/win32ole.c (set_argv): fix condition.
@@ -19343,14 +12592,19 @@ Tue Jan 27 02:26:31 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/httputils.rb (WEBrick:HTTPUtils::parse_header):
refine regex for header-name.
+Tue Jan 27 00:30:11 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * win32/Makefile.sub: rollback.
+
Mon Jan 26 22:53:04 2004 Dave Thomas <dave@pragprog.com>
* io.c: Remove documentation references to $defout.
-Mon Jan 26 14:41:46 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+Mon Jan 26 15:11:47 2004 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/weakref.rb (WeakRef::initialize): set up @__id before
- calling "super".
+ * sample/exyacc.rb: escape '}' to avoid warning.
+
+Mon Jan 26 14:41:46 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/delegate.rb (Delegator::initialize): preserve
singleton_method_added method [ruby-dev:22685]
@@ -19358,11 +12612,11 @@ Mon Jan 26 14:41:46 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/delegate.rb (Delegator::initialize): use Kernel::raise
instead of mere raise. [ruby-dev:22681]
-Mon Jan 26 12:45:23 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
+Mon Jan 26 12:47:17 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: define CONST84 when TCL_MAJOR_VERSION == 7
-Mon Jan 26 11:30:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jan 26 11:35:23 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/extmk.rb: Makefiles should depend on also rbconfig.rb.
(ruby-bugs:PR#1256)
@@ -19370,112 +12624,18 @@ Mon Jan 26 11:30:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/win32ole/win32ole.c (set_argv): set real arguments to
WIN32OLE::ARGV. [ruby-list:39073]
-Sun Jan 25 18:25:26 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_x509name.c (ossl_x509name_add_entry): third
- argument become optional.
-
- * ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.
-
- * ext/openssl/ossl_x509name.c (Init_x509name): emailAddress and
- domainComponent should be IA5String.
-
-Sun Jan 25 01:45:38 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#run): support
- virtual host.
-
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#virtual_host): add
- new method to register virtual hosting server.
-
- * lib/webrick/httpserver.rb (WEBrick::HTTPServer#lookup_server): add
- new method to lookup virtual hosting server.
-
-Sat Jan 24 13:06:26 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
- * ext/openssl/ossl_x509hame.c (ossl_x509name_initialize): change
- second argument. it expected to be a Hash not an Integer.
-
- * ext/openssl/ossl_x509name.c (ossl_x509name_add_entry): add new
- function for OpenSSL::X509::Name#add_entry.
-
- * ext/openssl/ossl_x509name.c (Init_ossl_x509name): add constants
- OpenSSL::X509::Name::DEFAULT_OBJECT_TYPE and OBJECT_TYPE_TEMPLATE.
-
- * ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name#initialize):
- second argument takes OBJECT_TYPE_TEMPLATE by default.
-
-Fri Jan 23 02:26:30 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * pack.c (num2i32): pack should not raise RangeError.
- [ruby-dev:22654]
-
- * pack.c (pack_pack): do not auto convert nil to zero.
-
Thu Jan 22 22:54:53 2004 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/imap.rb (BEG_REGEXP): allow 8-bit characters in quoted
strings for Novell GroupWise Internet Agent.
-
* lib/net/imap.rb (DATA_REGEXP): ditto.
-Thu Jan 22 18:35:49 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * lib/e2mmap.rb (VERSION): remove unnecessary version checking.
-
-Thu Jan 22 16:21:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jan 22 16:21:33 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (string_content): reset lexical states at the beginning of
string contents. [ruby-list:39061]
-Thu Jan 22 08:08:50 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (opt_rescue): use NODE_ERRINFO() instead of
- NODE_GVAR("$!"), to avoid confusion from variable aliasing.
- [ruby-talk:90074]
-
- * version.c (Init_version): remove obsolete constants VERSION
- etc. [ruby-dev:22643]
-
-Thu Jan 22 01:46:32 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (newline_node): do not use NODE_NEWLINE node anymore,
- use NEWLINE flag instead.
-
-Thu Jan 22 01:12:12 2004 Siena. <siena@faculty.chiba-u.jp>
-
- * missing/os2.c (chdir, getcwd):
- use _chdir2 and _getcwd2 supporting multiple drives in OS/2 with EMX.
-
-Thu Jan 22 00:33:52 2004 Siena. <siena@faculty.chiba-u.jp>
-
- * configure.in: check availability of link(). [ruby-dev:22237]
- * file.c (rb_file_s_link): raise an exception when link() is unavailable.
- * missing/os2.c (link): removed. File#link isn't supported.
- * bcc32/Makefile.sub: define HAVE_LINK to enable link(). [ruby-dev:22241]
- * win32/Makefile.sub: ditto.
-
-Thu Jan 22 00:26:25 2004 Siena. <siena@faculty.chiba-u.jp>
-
- * ChangeLog: typo: RUBY_MBCHAR_MAX was RUBY_MBCHAR_MAXSIZE.
-
-Thu Jan 22 00:12:51 2004 Siena. <siena@faculty.chiba-u.jp>
-
- * defines.h: define RUBY_MBCHAR_MAX instead of MB_CUR_MAX.
- * dir.c (Next, emx_mblen): use RUBY_MBCHAR_MAX for mblen().
- * file.c (CharNext): ditto.
- * ruby.c (translate_char): ditto.
- * util.c (__crt0_glob_function): ditto.
-
-Thu Jan 22 00:10:01 2004 Dave Thomas <dave@pragprog.com>
-
- * lib/base64.rb: :nodoc: the Deprecated module
-
-Wed Jan 21 23:52:39 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * configure.in: Interix(SFU) support.
-
-Wed Jan 21 23:03:45 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+Wed Jan 21 21:55:51 2004 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
* lib/drb/drb.rb: remove O_NONBLOCK, thanks \ay
* lib/drb/extserv.rb: typo
@@ -19488,28 +12648,21 @@ Wed Jan 21 17:57:56 2004 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/imap.rb (ensure_nz_number): show a detailed error
message.
-Wed Jan 21 16:44:15 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jan 21 16:44:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (merge_libs): squeeze successive same libraries.
[ruby-dev:22652]
-Wed Jan 21 16:10:36 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/base64.rb: enclosed in a module. [ruby-core:02285]
-
-Wed Jan 21 16:01:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jan 21 16:01:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/digest/rmd160/extconf.rb: have_library appends found library.
Wed Jan 21 11:36:00 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/socket/socket.c (sock_gethostbyname): returns host if
- ai_canonname is NULL. (ruby-bugs PR#1243)
-
* parse.y (block_append): update nd_end for "real" head node.
[ruby-list:39058]
-Tue Jan 20 14:48:28 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Tue Jan 20 14:48:13 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/extconf.rb: should check <openssl/conf_api.h> instead
of OPENSSL_VERSION_NUMBER. [ruby-list:39056]
@@ -19529,57 +12682,25 @@ Tue Jan 20 13:22:39 2004 Dave Thomas <dave@pragprog.com>
* lib/English.rb: Document English.rb.
-Tue Jan 20 04:41:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_marshal.rb (MarshalTestLib::test_exception): test
- for [ruby-dev:22604].
-
- * test/ruby/test_marshal.rb (MarshalTestLibtest_singleton): test
- for [ruby-dev:22588].
-
-Tue Jan 20 02:38:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * marshal.c (w_class): should not dump singleton class.
- [ruby-dev:22631]
-
Tue Jan 20 02:49:22 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/extconf.rb: add check for OpenSSL version.
[ruby-list:39054]
-Mon Jan 19 23:56:20 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (name_err_mesg_to_str): inverted condition for result of
- inspection. [ruby-dev:22628]
-
-Mon Jan 19 22:24:28 2004 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * sample/exyacc.rb: escape '}' to avoid warning.
-
- * lib/rdoc/parsers/parse_c.rb: escape '{' and '}' to avoid warnings.
-
-Mon Jan 19 21:28:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/digest/defs.h, win32/win3.c, win32/win32.h, file.c: remove
- useless casts for Borland C.
-
-Mon Jan 19 17:39:38 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (NameError::message): internal use only.
+Tue Jan 20 02:38:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
- * eval.c (rb_method_missing): use hidden constant.
+ * marshal.c (w_class): should not dump singleton class.
+ [ruby-dev:22631]
-Mon Jan 19 16:30:53 2004 akira yamada <akira@ruby-lang.org>
+Tue Jan 20 01:31:36 2004 WATANABE Hirofumi <eban@ruby-lang.org>
- * test/ruby/test_time.rb: added tests for [ruby-dev:22614] and
- [ruby-dev:22617].
+ * io.c (lineno): typo fix(FIX2INT -> INT2FIX).
-Mon Jan 19 13:09:21 2004 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jan 19 21:53:38 2004 akira yamada <akira@ruby-lang.org>
- * ext/extmk.rb, win32/Makefile.sub, win32/configure.bat,
- win32/setup.mak: --with-static-linked-ext support on mswin32.
+ * io.c, re.c, string.c, time.c: fixed up positions of RDocs.
-Mon Jan 19 06:49:07 2004 Tadayoshi Funaba <tadf@dotrb.org>
+Mon Jan 19 07:09:20 2004 Tadayoshi Funaba <tadf@dotrb.org>
* lib/date.rb: zone was wrong when it was behind UTC.
Thanks Mark J. Reed.
@@ -19589,53 +12710,10 @@ Mon Jan 19 06:49:07 2004 Tadayoshi Funaba <tadf@dotrb.org>
* sample/cal.rb: added a class, anyway.
-Mon Jan 19 01:08:39 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * class.c, error.c, eval.c, intern.h, object.c, variable.c:
- do not set path if it is a singleton class. [ruby-dev:22588]
-
- * lib/cgi.rb (CGI::QueryExtension): give extended string, not a
- delegater object.
-
-Sun Jan 18 23:59:44 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/iconv/charset_alias.rb: prefer us_EN locale encodings or
- former. [ruby-dev:22609]
-
- * ext/iconv/iconv.c (iconv_create): raise InvalidEncoding
- exception when EINVAL.
-
-Sun Jan 18 23:16:34 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * class.c, error.c, file.c, io.c, numeric.c, object.c, re.c, struct.c,
- time.c: marked init_copy functions nodoc.
-
Sun Jan 18 20:47:35 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* ruby.c: use translate_char() on Cygwin.
-Sun Jan 18 20:00:16 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/soap/wsdlDriver.rb, lib/wsdl/soap/operation.rb: add support of
- "parts" attribute of soap:body element in WSDL.
-
- * lib/wsdl/xmlSchema/schema.rb: friendly warning message for
- simpleType element which is not supported for now.
-
- * test/wsdl/soap/{soapbodyparts.wsdl,test_soapbodyparts.wsdl}: new
- files.
-
-Sun Jan 18 16:46:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * time.c (time_overflow_p): should return results. [ruby-dev:22614]
-
-Sun Jan 18 12:07:24 2004 Siena. <siena@faculty.chiba-u.jp>
-
- * test/ruby/test_time.rb: new test case to test Time#[+-].
-
- * time.c (time_plus, time_minus): fix RangeError for a negative
- argument in environments whose time_t is unsigned. [ruby-dev:22608]
-
Sun Jan 18 02:33:26 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* defines.h (_WIN32): undef _WIN32 on Cygwin before defining DOSISH.
@@ -19645,136 +12723,59 @@ Sun Jan 18 00:23:55 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* marshal.c (class2path): check anonymous class/module before
checking referable, and allow singleton classes.
-Sat Jan 17 23:58:51 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (NameError::Message): new class for lazy evaluation of
- message to ensure replaced before marshalling. [ruby-dev:22604]
-
- * eval.c (rb_method_missing): use NameError::Message.
-
-Sat Jan 17 21:49:50 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/time.rb (test_rfc2822, test_rfc3339, test_encode_xmlschema):
- should not expect that all platforms handle negative time_t value.
-
-Fri Jan 16 23:53:09 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (proc_eq): compare also arguments and environment
- (including local variables). [ruby-dev:22590]
-
Fri Jan 16 14:33:35 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* marshal.c (class2path): get class path and check referable.
[ruby-dev:22588]
-Thu Jan 15 12:58:26 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jan 16 09:52:23 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (proc_eq): Proc with empty body may not be equal.
+ [ruby-dev:22590]
+
+Thu Jan 15 13:03:10 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (argf_read): do not append EOF. (ruby-bugs-ja:PR#585)
* io.c (rb_io_fwrite): ad-hockery hack to get rid of HP-UX stdio
weird behavior. [ruby-dev:22424]
-Wed Jan 14 21:13:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/inlinetest.rb (InlineTest::eval_part): eval under the top
- level environment.
-
-Wed Jan 14 17:54:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/inlinetest.rb (InlineTest::loadtest): require instead of
- load, to get rid of multiple loading.
-
-Wed Jan 14 13:30:52 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jan 14 13:31:06 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/iconv/extconf.rb: wrapper iconv.rb is dependent on platform.
-Wed Jan 14 09:32:02 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * MANIFEST: add test/net/test_httpheader.rb. (commit miss?)
-
-Wed Jan 14 00:58:35 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+Tue Jan 13 18:54:28 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * eval.c (Init_Proc): move SystemStackError from under
- StandardError to Exception. [ruby-talk:89782]
-
-Tue Jan 13 18:03:02 2004 Ian Macdonald <ian@caliban.org>
-
- * file.c (rb_stat_wr, rb_stat_ww): New functions
- implementing new methods (File::Stat#world_readable?,
- File::Stat#world_writable?).
-
-Tue Jan 13 16:53:25 2004 why the lucky stiff <why@ruby-lang.org>
-
- * ext/syck/rubyext.c: omission of Date library code caused
- test suite failure. [ruby-core:2251]
-
-Tue Jan 13 16:50:03 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/tk.rb: use $0 as the default application class name.
-
-Tue Jan 13 14:48:00 2004 Ian Macdonald <ian@caliban.org>
-
- * lib/pathname.rb: New methods (Pathname#world_readable?,
- Pathname#world_writable?).
-
-Tue Jan 13 14:48:01 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (primary): allow no "when" case. [ruby-dev:22578]
+ * lib/logger.rb(Logger#msg2str): no special treatment for the object
+ which responds to :to_str. commited at 2004-01-11T21:46:27 by
+ gsinclair.
- * ruby.h (rb_class_of): reduce branch. [ruby-dev:22577]
+ * lib/logger.rb(LogDevice#initialize): remove type checking if the
+ given object is a String. Kernel.open handles it correctly.
+ commited at 2004-01-11T21:46:27 by gsinclair.
- * ruby.h (rb_type): ditto.
+ * test/logger/test_logger.rb: follow above change (ArgumentError ->
+ TypeError.) follow above commit.
-Tue Jan 13 14:26:59 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Tue Jan 13 14:27:13 2004 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
* lib/test/unit/ui/testrunnerutilities.rb (TestRunnerUtilities):
moved run method which allows output level. [ruby-dev:22554]
-Tue Jan 13 13:04:24 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * test/test_*.rb: Pathname#parent -> Pathname#dirname.
-
-Tue Jan 13 11:38:58 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/yaml/test_yaml.rb (YAML_Unit_Tests::test_spec_type_{int,float}):
- fix syntax error.
-
-Tue Jan 13 07:52:40 2004 why the lucky stiff <why@ruby-lang.org>
-
- * ext/syck/bytecode.c: turn off default implicit typing.
-
- * ext/syck/implicit.c: detect base60 integers.
-
- * ext/syck/rubyext.c: handle base60, as well as hex and octal
- with commas. implicit typing of ruby symbols.
-
- * test/yaml/test_yaml.rb: add test.
-
Tue Jan 13 04:29:52 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_driver.rb (RiDriver::report_method_stuff):
Show fully-qualified class names in class list.
-Tue Jan 13 01:24:17 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * file.c (test_wr): Rdoc fix. [ruby-core:02225]
-
Tue Jan 13 01:04:37 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_paths.rb (RI::Paths): First attempt at
incorporating DESTDIR in the rdoc installation.
-Mon Jan 12 23:26:21 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jan 12 23:27:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (primary): fix position after FCALL. [ruby-dev:22574]
-Mon Jan 12 18:00:11 2004 Ian Macdonald <ian@caliban.org>
-
- * file.c (test_wr, test_ww): New functions implementing new
- methods (File::world_readable?, File::world_writable?).
-
- * file.c (S_IRUGO, S_IGUGO): New macros.
-
Mon Jan 12 12:07:22 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_methods):
@@ -19792,22 +12793,29 @@ Mon Jan 12 12:07:22 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_formatter.rb (RI::HtmlFormatter::break_to_newline):
HTML formats need explicit line breaks.
+Mon Jan 12 11:46:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * configure.in (LIBPATHFLAG, RPATHFLAG): enclose paths with single
+ quotes. [ruby-dev:22564]
+
+ * lib/mkmf.rb (libpathflag): do not enclose with quotes always.
+
+ * {bcc32,win32,wince}/Makefile.sub (LIBPATHFLAG): quoted.
+
Mon Jan 12 02:24:07 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_formatter.rb (RI::HtmlFormatter): Add HTML
generation support to ri (Elliot Hughes)
-Sun Jan 11 23:54:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * env.h (ruby_frame, ruby_scope, ruby_in_eval, ruby_class,
- ruby_dyna_vars): export. [ruby-dev:22566]
+Mon Jan 12 02:24:07 2004 Dave Thomas <dave@pragprog.com>
-Sun Jan 11 02:35:53 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * lib/rdoc/ri/ri_formatter.rb (RI::HtmlFormatter): Add HTML
+ generation support to ri (Elliot Hughes)
- * ext/socket/socket.c (make_hostent): a bug in brace position.
+Sun Jan 11 02:07:47 2004 Dave Thomas <dave@pragprog.com>
- * configure.in: install rdoc by default. if you do not want to
- install rdoc, specify --disable-install-doc.
+ * lib/rdoc/ri/ri_options.rb (RI::Options::OptionList::OptionList):
+ Also accept command line options via the 'RI' environment variable.
Sun Jan 11 02:07:47 2004 Dave Thomas <dave@pragprog.com>
@@ -19828,49 +12836,7 @@ Sat Jan 10 01:54:50 2004 Eric Sunshine <sunshine@sunshineco.com>
correctly on Rhapsody when -arch compiler flag was used (via
configure's --enable-fat-binary option).
-Sat Jan 10 23:01:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (LIBPATHFLAG, RPATHFLAG): enclose paths with single
- quotes. [ruby-dev:22564]
-
- * lib/mkmf.rb (libpathflag): do not enclose with quotes always.
-
- * {bcc32,win32,wince}/Makefile.sub (LIBPATHFLAG): quoted.
-
-Sat Jan 10 22:46:18 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (dir_inspect): new method, Dir#inspect. [ruby-dev:22562]
-
-Fri Jan 9 17:36:51 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * ext/socket/socket.c (make_hostent): getaddrinfo(3) on BSD do not
- fill ai_canonname if serv is not supplied. (ruby-bugs PR#1243)
-
-Fri Jan 9 13:14:59 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/test/unit/collector/dir.rb: do not ignore exceptions(LoadError
- and SystemExitError) while loading a testcase. smell of bug.
-
- * test/testunit/collector/test_dir.rb: add new test of the LoadError.
-
- * test/drb/{test_drbssl.rb,test_drbunix.rb}: do not define testcase if
- openssl is not installed.
-
- * test/testunit/collector/test_dir.rb: assert_raises -> assert_raise.
-
-Fri Jan 9 11:52:16 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * rubysig.h: <errno.h> is needed to use errno which may be a macro.
-
-Fri Jan 9 11:20:24 2004 Siena. <siena@faculty.chiba-u.jp>
-
- * ext/extmk.rb (extmake): should not reduce necessary libraries.
- [ruby-dev:22440]
-
- * lib/mkmf.rb (merge_libs): merge libraries according to
- dependency.
-
-Fri Jan 9 10:05:23 2004 Siena. <siena@faculty.chiba-u.jp>
+Fri Jan 9 10:05:14 2004 Siena. <siena@faculty.chiba-u.jp>
* lib/mkmf.rb (libpathflag): use single quotes. [ruby-dev:22440]
@@ -19880,7 +12846,7 @@ Thu Jan 8 23:49:21 2004 WATANABE Hirofumi <eban@ruby-lang.org>
rdoc documentation, you need to run configure with
--enable-install-doc.
-Thu Jan 8 21:17:43 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Thu Jan 8 21:29:43 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_pkey.c (ossl_pkey_to_der): removed; it returns
public key only.
@@ -19894,10 +12860,6 @@ Thu Jan 8 21:17:43 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_pkey_rsa.c (ossl_rsa_to_der): new function for
OpenSSL::PKey::RSA#to_der.
-Thu Jan 8 18:25:29 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (glob_helper): should not recurse in exceptional status.
-
Thu Jan 8 16:51:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/wsdl/datetime/test_datetime.rb: fixed a stupid testcase which
@@ -19907,58 +12869,15 @@ Thu Jan 8 11:20:01 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* eval.c, object.c, process.c, re.c: don't use C++ style comments.
-Thu Jan 8 08:46:14 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/syck/rubyext.c (yaml_org_handler): lazy-load Date for
- static-ext.
-
-Thu Jan 8 07:06:30 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb: preserve order in Setup. [ruby-dev:22503]
-
- * ext/extmk.rb: move dependent libraries just after depended
- libraries.
-
- * ext/digest/*/extconf.rb: depend on digest.
-
-Thu Jan 8 04:36:17 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
+Thu Jan 8 04:36:21 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* lib/webrick/cgi.rb (WEBrick::CGI#initialize): should create
@config[:Logger] if it was not given.
-Wed Jan 7 22:28:12 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (glob_helper): fix memory leak.
-
-Wed Jan 7 21:15:07 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
-
* sample/webrick/*: new files.
* MANIFEST: add sample/webrick/*
-Wed Jan 7 20:51:51 2004 Minero Aoki <aamine@loveruby.net>
-
- * test/net/test_httpheader.rb: new file.
-
- * MANIFEST: add test/net/test_httpheader.rb.
-
-Wed Jan 7 20:42:06 2004 Minero Aoki <aamine@loveruby.net>
-
- * lib/net/http.rb (HTTPHeader#content_length): should return nil
- unless header exists. [ruby-dev:22519]
-
-Wed Jan 7 14:26:05 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/tk.rb (TkPanedWindow): use epath for embedded windows.
-
- * ext/tk/lib/tktext.rb: use epath for embedded windows.
-
- * ext/tk/lib/tkcanvas.rb: use epath for window items.
-
-Wed Jan 7 14:24:04 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/soap/{attachment.rb,mimemessage.rb}: added from soap4r/1.5.2.
-
Wed Jan 7 13:00:18 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_driver.rb: Fix problem where ri was
@@ -19982,71 +12901,16 @@ Tue Jan 6 22:13:34 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (rb_mod_modfunc): should break if m has no super class.
[ruby-dev:22498]
-Tue Jan 6 21:51:37 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jan 6 21:55:02 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (fptr_finalize): should save errno just after failure.
[ruby-dev:22492]
-Tue Jan 6 20:51:10 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/logger.rb(Logger#msg2str): no special treatment for the object
- which responds to :to_str.
-
- * lib/logger.rb(LogDevice#initialize): remove type checking if the
- given object is a String. Kernel.open handles it correctly.
-
- * test/logger/test_logger.rb: follow above change (ArgumentError ->
- TypeError.)
-
Tue Jan 6 14:53:14 2004 Dave Thomas <dave@pragprog.com>
* bin/ri: split out the display side, making it pluggable. Added
new ri_driver and ri_display files in lib/rdoc/ri.
-Tue Jan 6 11:29:43 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * test/inlinetest.rb, test/{test_generator.rb,test_ipaddr.rb,
- test_pathname.rb,test_pp.rb,test_prettyprint.rb,test_set.rb,
- test_time.rb,test_tsort.rb: added.
-
-Tue Jan 6 09:38:27 2004 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * import soap4r/1.5.2;
-
- * lib/soap/{attachment.rb,baseData.rb,encodingstyle/soapHandler.rb}:
- introduce SOAPExternalReference class as a referenct to SOAPEnvelope
- external content.
-
- * lib/soap/{attachment.rb,mimemessage.rb}: great SwA (SOAP messages
- with Attachments) support code by Jamie Herre.
-
- * lib/soap/{element.rb,marshal.rb,parser.rb,processor.rb,
- streamHandler.rb,wsdlDriver.rb}: SwA support.
-
- * lib/soap/rpc/{cgistub.rb,driver.rb,element.rb,proxy.rb,router.rb,
- soaplet.rb}: SwA support and refactoring.
-
- * lib/soap/generator.rb, lib/soap/mapping/mapping.rb: follow
- SOAPReference#initialize signature change.
-
- * lib/soap/mapping/factory.rb: deleted unused methods.
-
- * lib/soap/mapping/rubytypeFactory.rb: do no ignore case while xsi:type
- string <-> Ruby class name matching.
-
- * lib/xsd/datatypes.rb: check the smallest positive non-zero
- single-precision float exactly instead of packing with "f".
- [ruby-talk:88822]
-
- * test/soap/test_basetype.rb, test/xsd/test_xsd.rb: use 1.402e-45, not
- 1.4e-45. 1.4e-45 is smaller than 2 ** -149...
-
- * test/soap/test_basetype.rb, test/soap/marshal/test_marshal.rb,
- test/xsd/test_xsd.rb: use "(-1.0 / (1.0 / 0.0))" instead of "-0.0".
-
- * test/soap/test_streamhandler.rb: revert to the previous test that
- warns "basic_auth unsupported under net/http".
-
Tue Jan 6 06:37:53 2004 Dave Thomas <dave@pragprog.com>
* bin/rdoc: Add --ri-system switch
@@ -20067,45 +12931,6 @@ Tue Jan 6 00:04:40 2004 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method_or_yield_parameters):
fix parsing if there are braces in a method parameter list
-Tue Jan 6 01:01:04 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/dir.h, win32/win32.c: fix patch miss.
-
- * win32/Makefile.sub: fix file dependency.
-
-Mon Jan 5 20:32:00 2004 Gavin Sinclair <gsinclair@soyabean.com.au>
-
- * lib/logger.rb: enhanced documentation.
-
-Mon Jan 5 18:58:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
- [ruby-dev:22486]
-
- * pack.c (pack_unpack): unpack requires big endian offet (OFF16B
- and OFF32B). The patch is from Minero Aoki in [ruby-dev:22489]
-
- * pack.c (OFF16B): add big-endian offset again.
-
-Mon Jan 5 03:00:53 2004 Minero Aoki <aamine@loveruby.net>
-
- * test/ruby/test_pack.rb: new test test_unpack_N.
-
-Mon Jan 5 01:47:53 2004 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/mkmf.rb (create_makefile): remove duplicated object files
- from $objs on DOSISH platforms.
-
-Sat Jan 3 02:44:48 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * rubysig.h (TRAP_END): preserve errno before switching context.
- [ruby-core:02137]
-
-Sat Jan 3 01:18:08 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * dir.c: merge tuning from H.Yamamoto <ocean@m2.ccsnet.ne.jp>.
- [ruby-dev:22476]
-
Fri Jan 2 14:54:11 2004 Dave Thomas <dave@pragprog.com>
* bin/ri: Add new --classes option, and arrange for
@@ -20124,23 +12949,10 @@ Fri Jan 2 01:50:13 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (argf_eof): ARGF.eof? should not have any side effect.
[ruby-dev:22469]
-Thu Jan 1 09:03:20 2004 Dave Thomas <dave@pragprog.com>
-
- * bin/ri (report_class_stuff): Fix problem with ambiguous nested
- classes not matching.
-
Wed Dec 31 17:25:17 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (argf_each_byte): should return self. [ruby-dev:22465]
-Wed Dec 31 15:05:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
-
- * lib/pathname.rb: Corrected small coding error.
-
-Wed Dec 31 15:00:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
-
- * lib/pathname.rb: Completed documentation.
-
Wed Dec 31 11:20:34 2003 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::do_methods): Make
@@ -20176,23 +12988,21 @@ Tue Dec 30 12:30:30 2003 Dave Thomas <dave@pragprog.com>
class and a method have the same name, finding Xxx.abc was trying
to find 'abc' in method 'Xxx', not class 'Xxx'.
+
Tue Dec 30 08:32:32 2003 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method):
- Handle undoing nsting of yield parameters correctly for:
-
- def each_entry(&b) Dir.foreach(@path) {|f| yield P.new(f) } end
+ Handle undoing nesting of yield parameters correctly for:
-Tue Dec 30 07:30:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
+ def each_entry(&b) Dir.foreach(@path) {|f| yield P.new(f) } end
- * lib/pathname.rb: Added documentation.
-Mon Dec 29 20:08:17 2003 Minero Aoki <aamine@loveruby.net>
+Tue Dec 30 08:32:32 2003 Dave Thomas <dave@pragprog.com>
- * lib/net/http.rb (GenericRequest#initialize): check if path
- begins with '/'.
+ * lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_method):
+ Handle undoing nesting of yield parameters correctly for:
- * lib/net/http.rb: def m( arg ) -> def m(arg)
+ def each_entry(&block) Dir.foreach(@path) {|f| yield Pathname.new(f) } end
Mon Dec 29 12:51:02 2003 Dave Thomas <dave@pragprog.com>
@@ -20206,25 +13016,10 @@ Mon Dec 29 05:05:51 2003 Dave Thomas <dave@pragprog.com>
* struct.c, random: Add RDoc comments
-Mon Dec 29 02:25:00 2003 Gavin Sinclair <gsinclair@soyabean.com.au>
-
- * lib/optparse.rb: Improved documentation.
-
Mon Dec 29 02:20:54 2003 Dave Thomas <dave@pragprog.com>
* eval.c: Add RDoc for class Proc, Method, UnboundMethod
-Mon Dec 29 02:20:26 2003 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * instruby.rb: fix install directory if destdir and compile_dir are
- not in the same drive.
-
- * ext/extmk.rb: ditto. [ruby-list:39009]
-
- * win32/Makefile.sub, win32/README.win32, win32/configure.bat,
- win32/setup.mak: new configure scheme. use ``configure --prefix=dir''
- instead of ``nmake DESTDIR=dir install''.
-
Mon Dec 29 00:41:44 2003 Dave Thomas <dave@pragprog.com>
* math.c: Add RDoc comments
@@ -20258,7 +13053,7 @@ Sun Dec 28 03:50:05 2003 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_override_comment):
Escape method names used in regexp
-Sun Dec 28 01:46:02 2003 Dave Thomas <dave@wireless_3.local.thomases.com>
+Sun Dec 28 01:46:02 2003 Dave Thomas <dave@pragprog.com>
* lib/rdoc/ri/ri_formatter.rb (RI::TextFormatter::display_flow_item):
Add support for rules in 'ri' output.
@@ -20276,27 +13071,27 @@ Sun Dec 28 01:05:31 2003 Dave Thomas <dave@pragprog.com>
* marshal.c, signal.c: RDoc collemts added by Elliott Hughes
-Sun Dec 28 00:46:25 2003 Dave Thomas <dave@pragprog.com>
+Sun Dec 28 00:48:47 2003 Dave Thomas <dave@pragprog.com>
* lib/rdoc/parsers/parse_c.rb (RDoc::C_Parser::find_class_comment):
- Some Ruby source uses lower-case class names for the
- Init_Xxx C function name.
+ Some source files use lower case class or module names
+ when naming the Init_XXX function in C.
Sat Dec 27 23:41:46 2003 WATANABE Hirofumi <eban@ruby-lang.org>
* configure.in: fix "test: too many arguments" error.
-Sat Dec 27 15:32:40 2003 Dave Thomas <dave@wireless_3.local.thomases.com>
+Sat Dec 27 15:32:19 2003 Dave Thomas <dave@wireless_3.local.thomases.com>
- * time.c: Add RDoc comments for Time class.
+ * time.c: RDoc comments added
-Sat Dec 27 15:07:26 2003 Dave Thomas <dave@pragprog.com>
+Sat Dec 27 15:07:57 2003 Dave Thomas <dave@pragprog.com>
* object.c: Add RDoc comments for Symbol class.
-Sat Dec 27 14:39:53 2003 Dave Thomas <dave@pragprog.com>
+Sat Dec 27 14:42:30 2003 Dave Thomas <dave@pragprog.com>
- * numeric.c (Init_Numeric): Add RDoc comments.
+ * numeric.c: Add RDoc comments.
Sat Dec 27 00:44:00 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
@@ -20314,7 +13109,7 @@ Fri Dec 26 23:02:09 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (rb_io_getline): should return nil when read_all gives
empty string, even when nil rs is specified. [ruby-core:02077]
-Fri Dec 26 18:33:54 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Dec 26 18:50:59 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in: check if getcontext and setcontext are available.
@@ -20324,26 +13119,14 @@ Fri Dec 26 16:40:53 2003 Tanaka Akira <akr@m17n.org>
* lib/pathname.rb (PathnameTest#test_plus): add 2 assertions.
-Fri Dec 26 14:05:13 2003 Minero Aoki <aamine@loveruby.net>
-
- * test/ruby/test_pack.rb: new test test_pack_N.
-
-Fri Dec 26 12:53:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+Fri Dec 26 09:26:58 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* pack.c (pack_pack): add sign check for 'i', and 'l'.
[ruby-dev:22427]
* bignum.c (rb_quad_pack): add range check for 'quad int'.
-Fri Dec 26 10:58:58 2003 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * MANIFEST: add vms/config.h and remove vms/config.h_in.
-
-Fri Dec 26 10:42:00 2003 AKIYOSHI, Masamichi <masamichi.akiyoshi@hp.com>
-
- * io.c: [VMS] "rfm=stmlf" is specified for open() and fopen().
-
-Thu Dec 25 22:29:53 2003 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Dec 25 22:39:59 2003 NAKAMURA Usaku <usa@ruby-lang.org>
* string.c (rb_str_update): don't return any value.
@@ -22607,6 +15390,11 @@ Mon Oct 20 09:45:12 2003 NAKAMURA Usaku <usa@ruby-lang.org>
* lib/debug.rb (debug_command): remove debug print.
+Wed Oct 20 00:25:41 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (search_required): required name must not be changed before
+ loading. [ruby-dev:24492]
+
Sun Oct 19 13:12:30 2003 Tanaka Akira <akr@m17n.org>
* lib/pathname.rb (foreachline, dir_foreach): add obsolete warning.
@@ -23590,6 +16378,35 @@ Thu Oct 2 00:21:11 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/soap/calc/*: give httpd config param "CGIInterpreter".
"/usr/bin/env ruby" thing does not work under non-Unix boxes.
+Sat Oct 2 00:42:20 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * marshal.c (r_byte): retrieve pointer from string value for each
+ time. [ruby-dev:24404]
+
+ * marshal.c (r_bytes0): ditto.
+
+ * enum.c (sort_by_i): re-entrance check added. [ruby-dev:24399]
+
+ * io.c (io_read): should freeze all reading buffer.
+ [ruby-dev:24400]
+
+ * string.c (rb_str_sum): should use bignums when bits is greater
+ than or equals to sizeof(long)*CHAR_BITS. [ruby-dev:24395]
+
+ * eval.c (specific_eval): defer pointer retrieval to prevent
+ unsafe sourcefile string modification. [ruby-dev:24382]
+
+ * string.c (rb_str_sum): wrong cast caused wrong result.
+ [ruby-dev:24385]
+
+ * enum.c (enum_sort_by): hide temporary array from
+ ObjectSpace.each_object. [ruby-dev:24386]
+
+ * string.c (rb_str_sum): check was done with false pointer.
+ [ruby-dev:24383]
+
+ * string.c (rb_str_sum): string may be altered. [ruby-dev:24381]
+
Thu Oct 2 00:25:21 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
* signal.c (ruby_signal_name): adjust to the prototype.
@@ -23753,6 +16570,20 @@ Sat Sep 27 09:44:18 2003 Minero Aoki <aamine@loveruby.net>
* test/fileutils/test_nowrite.rb: ditto.
+Mon Sep 27 09:14:03 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * array.c (rb_ary_delete): comparison may change the capacity.
+ [ruby-dev:24348]
+
+ * array.c (rb_ary_fill): fill should honor length argument.
+ [ruby-dev:24346]
+
+ * array.c (rb_ary_replace): should not use ptr from shared array.
+ [ruby-dev:24345]
+
+ * ext/socket/socket.c (s_accept): don't retry for EWOULDBLOCK.
+ [ruby-talk:113807]
+
Sat Sep 27 04:57:07 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/ruby/test_file.rb: new file. only asserts unlink-before-close
diff --git a/LEGAL b/LEGAL
index 8dd957bd3e..908eb270f5 100644
--- a/LEGAL
+++ b/LEGAL
@@ -5,27 +5,34 @@ All the files in this distribution are covered under either the Ruby's
license (see the file COPYING) or public-domain except some files
mentioned below.
-oniguruma.h:
-regcomp.c:
-regenc.[ch]:
-regerror.c:
-regex.c:
-regexec.c:
-regint.h:
-regparse.[ch]:
-ascii.c:
-euc_jp.c:
-sjis.c:
-utf8.c:
-
-Oniguruma ---- (C) K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
-
-http://www.geocities.jp/kosako3/oniguruma/
-http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/oniguruma/
-http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/oniguruma/
-
- When this software is partly used or it is distributed with Ruby,
- this of Ruby follows the license of Ruby.
+regex.[ch]:
+
+ These files are under LGPL. Treat them as LGPL says. (See the file
+ LGPL for details)
+
+ Extended regular expression matching and search library.
+ Copyright (C) 1993, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file LGPL. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+ Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto)
+ Last change: May 21, 1993 by t^2
+ removed gapped buffer support, multiple syntax support by matz <matz@nts.co.jp>
+ Perl5 extension added by matz <matz@caelum.co.jp>
+ UTF-8 extension added Jan 16 1999 by Yoshida Masato <yoshidam@tau.bekkoame.ne.jp>
configure:
diff --git a/Makefile.in b/Makefile.in
index d5d2b9f3ed..254f1656ee 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -6,7 +6,7 @@ srcdir = @srcdir@
VPATH = $(srcdir):$(srcdir)/missing
CC = @CC@
-YACC = bison
+YACC = @YACC@
PURIFY =
AUTOCONF = autoconf
@SET_MAKE@
@@ -33,9 +33,8 @@ RIDATADIR = $(DESTDIR)$(datadir)/ri/$(MAJOR).$(MINOR)/system
empty =
OUTFLAG = @OUTFLAG@$(empty)
-CFLAGS = @CFLAGS@ @ARCH_FLAG@
-XCFLAGS = -I. -I$(srcdir) @XCFLAGS@
-CPPFLAGS = @CPPFLAGS@
+CFLAGS = @CFLAGS@ @XCFLAGS@ @ARCH_FLAG@
+CPPFLAGS = -I. -I$(srcdir) @CPPFLAGS@
LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
EXTLDFLAGS =
XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)
@@ -53,7 +52,7 @@ RUBY_SO_NAME=@RUBY_SO_NAME@
EXEEXT = @EXEEXT@
PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
RUBY = $(RUBY_INSTALL_NAME)
-MINIRUBY = @MINIRUBY@ $(MINIRUBYOPT)
+MINIRUBY = @MINIRUBY@
RUNRUBY = @RUNRUBY@
#### End of system configuration section. ####
@@ -86,7 +85,7 @@ ASFLAGS = @ASFLAGS@
OBJEXT = @OBJEXT@
MANTYPE = @MANTYPE@
-INSTALLED_LIST= .installed.list
+PREINSTALL = @PREINSTALL@
#### End of variables
all:
@@ -98,7 +97,7 @@ all:
miniruby$(EXEEXT):
@$(RM) $@
- $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(LIBS) $(OUTFLAG)$@
+ $(PURIFY) $(CC) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(MAINLIBS)
$(PROGRAM):
@$(RM) $@
@@ -113,7 +112,6 @@ $(LIBRUBY_A):
@-$(RANLIB) $@ 2> /dev/null || true
$(LIBRUBY_SO):
- @-$(PRE_LIBRUBY_UPDATE)
$(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) $(OUTFLAG)$@
@-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \
File.symlink "$(LIBRUBY_SO)", link}' \
@@ -156,14 +154,16 @@ $(srcdir)/configure: $(srcdir)/configure.in
lex.c: keywords
@-$(RM) $@
- gperf -C -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $? > $@ || \
+ gperf -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $? > $@ || \
cp "$(srcdir)/$@" .
.y.c:
- $(YACC) $(YFLAGS) -o $@ $<
+ $(YACC) $<
+ sed '/^#/s|y\.tab\.c|$@|' y.tab.c > $@
+ rm -f y.tab.c
.c.@OBJEXT@:
- $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c $<
+ $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
.s.@OBJEXT@:
$(AS) $(ASFLAGS) -o $@ $<
diff --git a/README b/README
index d4580076b0..cf836415ad 100644
--- a/README
+++ b/README
@@ -22,16 +22,24 @@ Perl). It is simple, straight-forward, and extensible.
* How to get Ruby
-The Ruby distribution can be found on:
+The Ruby distribution files can be found in the following FTP site:
ftp://ftp.ruby-lang.org/pub/ruby/
-You can get it by anonymous CVS. How to check out is:
+The latest source code of this version series can be checked out
+through SVN with the following command:
- $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src login
- (Logging in to anonymous@cvs.ruby-lang.org)
- CVS password: anonymous
- $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:/src checkout ruby
+ $ svn co http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8_6/
+
+The trunk of the Ruby source tree can be checked out with the
+following command:
+
+ $ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby
+
+There are some other branches under development. Try the following
+command and see the list of branches:
+
+ $ svn ls http://svn.ruby-lang.org/repos/ruby/branches/
* Ruby home-page
diff --git a/README.EXT b/README.EXT
index 283de48b7f..e5d39911ca 100644
--- a/README.EXT
+++ b/README.EXT
@@ -8,8 +8,8 @@ In C, variables have types and data do not have types. In contrast,
Ruby variables do not have a static type, and data themselves have
types, so data will need to be converted between the languages.
-Data in Ruby are represented by the C type `VALUE'. Each VALUE data
-has its data-type.
+Data in Ruby are represented by C type `VALUE'. Each VALUE data has
+its data-type.
To retrieve C data from a VALUE, you need to:
@@ -91,34 +91,34 @@ The data for type T_NIL, T_FALSE, T_TRUE are nil, true, false
respectively. They are singletons for the data type.
The T_FIXNUM data is a 31bit length fixed integer (63bit length on
-some machines), which can be converted to a C integer by using the
+some machines), which can be convert to a C integer by using the
FIX2INT() macro. There is also NUM2INT() which converts any Ruby
numbers into C integers. The NUM2INT() macro includes a type check, so
an exception will be raised if the conversion failed. NUM2DBL() can
-be used to retrieve the double float value in the same way.
+be used to retrieve the double float value in same way.
-In version 1.7 or later it is recommended that you use the new macros
-StringValue() and StringValuePtr() to get a char* from a VALUE.
-StringValue(var) replaces var's value with the result of "var.to_str()".
-StringValuePtr(var) does same replacement and returns char*
-representation of var. These macros will skip the replacement if var is
-a String. Notice that the macros take only the lvalue as their
-argument, to change the value of var in place.
+To get char* from a VALUE, version 1.7 recommend to use new macros
+StringValue() and StringValuePtr(). StringValue(var) replaces var's
+value to the result of "var.to_str()". StringValuePtr(var) does same
+replacement and returns char* representation of var. These macros
+will skip the replacement if var is a String. Notice that the macros
+requires to take only lvalue as their argument, to change the value
+of var in the replacement.
-In version 1.6 or earlier, STR2CSTR() was used to do the same thing
-but now it is deprecated in version 1.7, because STR2CSTR() has a risk
-of a dangling pointer problem in the to_str() impliclit conversion.
+In version 1.6 or earlier, STR2CSTR() was used to do same thing
+but now it is obsoleted in version 1.7 because of STR2CSTR() has
+a risk of dangling pointer problem in to_str() impliclit conversion.
Other data types have corresponding C structures, e.g. struct RArray
-for T_ARRAY etc. The VALUE of the type which has the corresponding structure
+for T_ARRAY etc. The VALUE of the type which has corresponding structure
can be cast to retrieve the pointer to the struct. The casting macro
will be of the form RXXXX for each data type; for instance, RARRAY(obj).
See "ruby.h".
-There are some accessing macros for structure members, for example
-`RSTRING_LEN(s)' to to get the size of the Ruby String object. The
-allocated region can be accessed by `RSTRING_PTR(str). For arrays, use
-`RARRAY_LEN(ary) and `RARRAY_PTR(ary) respectively.
+For example, `RSTRING(str)->len' is the way to get the size of the
+Ruby String object. The allocated region can be accessed by
+`RSTRING(str)->ptr'. For arrays, use `RARRAY(ary)->len' and
+`RARRAY(ary)->ptr' respectively.
Notice: Do not change the value of the structure directly, unless you
are responsible for the result. This ends up being the cause of interesting
@@ -205,7 +205,7 @@ interpreter. Some (not all) of the useful functions are listed below:
rb_ary_unshift(VALUE ary, VALUE val)
Array operations. The first argument to each functions must be an
- array. They may dump core if other types are given.
+ array. They may dump core if other types given.
2. Extending Ruby with C
@@ -244,7 +244,7 @@ To define methods or singleton methods, use these functions:
VALUE (*func)(), int argc)
The `argc' represents the number of the arguments to the C function,
-which must be less than 17. But I doubt you'll need that many.
+which must be less than 17. But I believe you don't need that much. :-)
If `argc' is negative, it specifies the calling sequence, not number of
the arguments.
@@ -272,7 +272,7 @@ private methods:
The other is to define module functions, which are private AND singleton
methods of the module. For example, sqrt is the module function
-defined in Math module. It can be called in the following way:
+defined in Math module. It can be call in the form like:
Math.sqrt(4)
@@ -291,7 +291,7 @@ in the Kernel module, can be defined using:
void rb_define_global_function(const char *name, VALUE (*func)(), int argc)
-To define an alias for the method,
+To define alias to the method,
void rb_define_alias(VALUE module, const char* new, const char* old);
@@ -321,7 +321,7 @@ There are several ways to invoke Ruby's features from C code.
2.2.1 Evaluate Ruby Programs in a String
The easiest way to use Ruby's functionality from a C program is to
-evaluate the string as Ruby program. This function will do the job:
+evaluate the string as Ruby program. This function will do the job.
VALUE rb_eval_string(const char *str)
@@ -434,7 +434,7 @@ The prototypes of the getter and setter functions are as follows:
(*getter)(ID id, void *data, struct global_entry* entry);
(*setter)(VALUE val, ID id, void *data, struct global_entry* entry);
-3.3 Encapsulate C data into a Ruby object
+3.3 Encapsulate C data into Ruby object
To wrap and objectify a C pointer as a Ruby object (so called
DATA), use Data_Wrap_Struct().
@@ -619,7 +619,7 @@ are not exported to the Ruby world. You need to protect them by
If the file named extconf.rb exists, it will be executed to generate
Makefile.
-extconf.rb is the file for checking compilation conditions etc. You
+extconf.rb is the file for check compilation conditions etc. You
need to put
require 'mkmf'
@@ -639,12 +639,12 @@ The value of the variables below will affect the Makefile.
$LDFLAGS: included in LDFLAGS make variable (such as -L)
$objs: list of object file names
-Normally, the object files list is automatically generated by searching
-source files, but you must define them explicitly if any sources will
+In normal, object files list is automatically generated by searching
+source files, but you need directs them explicitly if any sources will
be generated while building.
If a compilation condition is not fulfilled, you should not call
-``create_makefile''. The Makefile will not be generated, compilation will
+``create_makefile''. The Makefile will not generated, compilation will
not be done.
(5) prepare depend (optional)
@@ -654,7 +654,7 @@ check dependencies. You can make this file by invoking
% gcc -MM *.c > depend
-It's harmless. Prepare it.
+It's no harm. Prepare it.
(6) generate Makefile
@@ -673,12 +673,12 @@ Type
make
to compile your extension. You don't need this step either if you have
-put the extension library under the ext directory of the ruby source tree.
+put extension library under the ext directory of the ruby source tree.
(8) debug
You may need to rb_debug the extension. Extensions can be linked
-statically by adding the directory name in the ext/Setup file so that
+statically by the adding directory name in the ext/Setup file so that
you can inspect the extension with the debugger.
(9) done, now you have the extension library
@@ -843,15 +843,15 @@ it can't be seen from Ruby programs.
void rb_define_readonly_variable(const char *name, VALUE *var)
Defines a read-only global variable. Works just like
-rb_define_variable(), except the defined variable is read-only.
+rb_define_variable(), except defined variable is read-only.
void rb_define_virtual_variable(const char *name,
VALUE (*getter)(), VALUE (*setter)())
Defines a virtual variable, whose behavior is defined by a pair of C
functions. The getter function is called when the variable is
-referenced. The setter function is called when the variable is set to a
-value. The prototype for getter/setter functions are:
+referred. The setter function is called when the value is set to the
+variable. The prototype for getter/setter functions are:
VALUE getter(ID id)
void setter(VALUE val, ID id)
@@ -1011,7 +1011,7 @@ Terminates the interpreter immediately. This function should be
called under the situation caused by the bug in the interpreter. No
exception handling nor ensure execution will be done.
-** Initialize and Start the Interpreter
+** Initialize and Starts the Interpreter
The embedding API functions are below (not needed for extension libraries):
@@ -1031,32 +1031,6 @@ Starts execution of the interpreter.
Specifies the name of the script ($0).
-** Hooks for the Interpreter Events
-
- void rb_add_event_hook(rb_event_hook_func_t func, rb_event_t events)
-
-Adds a hook function for the specified interpreter events.
-events should be Or'ed value of:
-
- RUBY_EVENT_LINE
- RUBY_EVENT_CLASS
- RUBY_EVENT_END
- RUBY_EVENT_CALL
- RUBY_EVENT_RETURN
- RUBY_EVENT_C_CALL
- RUBY_EVENT_C_RETURN
- RUBY_EVENT_RAISE
- RUBY_EVENT_ALL
-
-The definition of rb_event_hook_func_t is below:
-
- typedef void (*rb_event_hook_func_t)(rb_event_t event, NODE *node,
- VALUE self, ID id, VALUE klass)
-
- int rb_remove_event_hook(rb_event_hook_func_t func)
-
-Removes the specified hook function.
-
Appendix C. Functions Available in extconf.rb
These functions are available in extconf.rb:
@@ -1148,7 +1122,7 @@ Returns an array of the added directories ([include_dir, lib_dir]).
pkg_config(pkg)
-Obtains the information for pkg by pkg-config command. The actual
+Obtains the information of pkg by pkg-config command. The actual
command name can be overriden by --with-pkg-config command line
option.
diff --git a/README.EXT.ja b/README.EXT.ja
index 20c5a362a6..30c4d520ba 100644
--- a/README.EXT.ja
+++ b/README.EXT.ja
@@ -129,11 +129,10 @@ obsolete ¤È¤Ê¤ê¡¢Âå¤ï¤ê¤Ë StringValue() ¤È StringValuePtr()
ruby.h¤Ç¤Ï¹½Â¤ÂΤإ­¥ã¥¹¥È¤¹¤ë¥Þ¥¯¥í¤â¡ÖRXXXXX()¡×(Á´ÉôÂçʸ
»ú¤Ë¤·¤¿¤â¤Î)¤È¤¤¤¦Ì¾Á°¤ÇÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹(Îã: RSTRING())¡¥
-¹½Â¤ÂΤ«¤é¥Ç¡¼¥¿¤ò¼è¤ê½Ð¤¹¥Þ¥¯¥í¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£Ê¸»úÎó
-str¤ÎŤµ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING_LEN(str)¡×¤È¤·¡¤Ê¸»úÎóstr¤ò
-char*¤È¤·¤ÆÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING_PTR(str)¡×¤È¤·¤Þ¤¹¡¥ÇÛÎó¤Î
-¾ì¹ç¤Ë¤Ï¡¤¤½¤ì¤¾¤ì¡ÖRARRAY_LEN(ary)¡×¡¤¡ÖRARRAY_PTR(ary)¡×¤È
-¤Ê¤ê¤Þ¤¹¡¥
+Î㤨¤Ð¡¤Ê¸»úÎóstr¤ÎŤµ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING(str)->len¡×¤È
+¤·¡¤Ê¸»úÎóstr¤òchar*¤È¤·¤ÆÆÀ¤ë¤¿¤á¤Ë¤Ï¡ÖRSTRING(str)->ptr¡×
+¤È¤·¤Þ¤¹¡¥ÇÛÎó¤Î¾ì¹ç¤Ë¤Ï¡¤¤½¤ì¤¾¤ì¡ÖRARRAY(ary)->len¡×¡¤
+¡ÖRARRAY(ary)->ptr¡×¤È¤Ê¤ê¤Þ¤¹¡¥
Ruby¤Î¹½Â¤ÂΤòľÀÜ¥¢¥¯¥»¥¹¤¹¤ë»þ¤Ëµ¤¤ò¤Ä¤±¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³
¤È¤Ï¡¤ÇÛÎó¤äʸ»úÎó¤Î¹½Â¤ÂΤÎÃæ¿È¤Ï»²¾È¤¹¤ë¤À¤±¤Ç¡¤Ä¾ÀÜÊѹ¹¤·
@@ -381,7 +380,8 @@ C¤«¤éʸ»úÎó¤ò·Ðͳ¤»¤º¤ËRuby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤â¤Ç¤­¤Þ
¤¹¡¥¤½¤ÎÁ°¤Ë¡¤Ruby¥¤¥ó¥¿¥×¥ê¥¿Æâ¤Ç¥á¥½¥Ã¥É¤äÊÑ¿ô̾¤ò»ØÄꤹ¤ë
»þ¤Ë»È¤ï¤ì¤Æ¤¤¤ëID¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡¥
-ID¤È¤ÏÊÑ¿ô̾¡¤¥á¥½¥Ã¥É̾¤òɽ¤¹À°¿ô¤Ç¤¹¡¥Ruby¤ÎÃæ¤Ç¤Ï
+ID¤È¤ÏÊÑ¿ô̾¡¤¥á¥½¥Ã¥É̾¤òɽ¤¹À°¿ô¤Ç¤¹¡¥Ruby¤Ç¤ÏID¤ËÂбþ¤¹¤ë
+¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ¥·¥ó¥Ü¥ë(Symbol)¤¬¤¢¤ê¡¤
:¼±ÊÌ»Ò
@@ -394,6 +394,14 @@ ID¤È¤ÏÊÑ¿ô̾¡¤¥á¥½¥Ã¥É̾¤òɽ¤¹À°¿ô¤Ç¤¹¡¥Ruby¤ÎÃæ¤Ç¤Ï
rb_to_id(VALUE symbol)
+ID¤«¤é¥·¥ó¥Ü¥ë¤òÆÀ¤ë¤¿¤á¤Ë¤Ï°Ê²¼¤Î¥Þ¥¯¥í¤ò»È¤¤¤Þ¤¹¡¥
+
+ VALUE ID2SYM(ID id)
+
+¥·¥ó¥Ü¥ë¤«¤éID¤òÆÀ¤ë¤¿¤á¤Ë¤Ï°Ê²¼¤Î¥Þ¥¯¥í¤ò»È¤¤¤Þ¤¹¡¥
+
+ ID SYM2ID(VALUE symbol)
+
2.2.3 C¤«¤éRuby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹
C¤«¤éʸ»úÎó¤ò·Ðͳ¤»¤º¤ËRuby¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Ë¤Ï°Ê²¼
@@ -1137,32 +1145,6 @@ void ruby_script(char *name)
Ruby¤Î¥¹¥¯¥ê¥×¥È̾($0)¤òÀßÄꤹ¤ë¡¥
-** ¥¤¥ó¥¿¥×¥ê¥¿¤Î¥¤¥Ù¥ó¥È¤Î¥Õ¥Ã¥¯
-
- void rb_add_event_hook(rb_event_hook_func_t func, rb_event_t events)
-
-»ØÄꤵ¤ì¤¿¥¤¥ó¥¿¥×¥ê¥¿¤Î¥¤¥Ù¥ó¥È¤ËÂФ¹¤ë¥Õ¥Ã¥¯´Ø¿ô¤òÄɲä·¤Þ¤¹¡¥
-events¤Ï°Ê²¼¤ÎÃͤÎor¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó:
-
- RUBY_EVENT_LINE
- RUBY_EVENT_CLASS
- RUBY_EVENT_END
- RUBY_EVENT_CALL
- RUBY_EVENT_RETURN
- RUBY_EVENT_C_CALL
- RUBY_EVENT_C_RETURN
- RUBY_EVENT_RAISE
- RUBY_EVENT_ALL
-
-rb_event_hook_func_t¤ÎÄêµÁ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹:
-
- typedef void (*rb_event_hook_func_t)(rb_event_t event, NODE *node,
- VALUE self, ID id, VALUE klass)
-
- int rb_remove_event_hook(rb_event_hook_func_t func)
-
-»ØÄꤵ¤ì¤¿¥Õ¥Ã¥¯´Ø¿ô¤òºï½ü¤·¤Þ¤¹¡¥
-
Appendix C. extconf.rb¤Ç»È¤¨¤ë´Ø¿ô¤¿¤Á
diff --git a/README.ja b/README.ja
index fc502dd440..df8cfc03f4 100644
--- a/README.ja
+++ b/README.ja
@@ -26,18 +26,25 @@ Ruby¤Ï¥Æ¥­¥¹¥È½èÍý´Ø·¸¤ÎǽÎϤʤɤËÍ¥¤ì¡¤Perl¤ÈƱ¤¸¤¯¤é¤¤¶¯ÎÏ
* Æþ¼êË¡
-** ftp¤Ç
+** FTP¤Ç
°Ê²¼¤Î¾ì½ê¤Ë¤ª¤¤¤Æ¤¢¤ê¤Þ¤¹¡¥
ftp://ftp.ruby-lang.org/pub/ruby/
-** CVS¤Ç
+** Subversion¤Ç
- $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src login
- (Logging in to anonymous@cvs.ruby-lang.org)
- CVS password: anonymous
- $ cvs -z4 -d :pserver:anonymous@cvs.ruby-lang.org:src checkout ruby
+ËÜ¥Ö¥é¥ó¥Á¤ÎRuby¤ÎºÇ¿·¤Î¥½¡¼¥¹¥³¡¼¥É¤Ï¼¡¤Î¥³¥Þ¥ó¥É¤Ç¼èÆÀ¤Ç¤­¤Þ¤¹¡¥
+
+ $ svn co http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8_6/
+
+³«È¯Àèü¤Î¥½¡¼¥¹¥³¡¼¥É¤Ï¼¡¤Î¥³¥Þ¥ó¥É¤Ç¼èÆÀ¤Ç¤­¤Þ¤¹¡¥
+
+ $ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby
+
+¾¤Ë³«È¯Ãæ¤Î¥Ö¥é¥ó¥Á¤Î°ìÍ÷¤Ï¼¡¤Î¥³¥Þ¥ó¥É¤Ç¸«¤é¤ì¤Þ¤¹¡¥
+
+ $ svn ls http://svn.ruby-lang.org/repos/ruby/branches/
* ¥Û¡¼¥à¥Ú¡¼¥¸
diff --git a/ToDo b/ToDo
index 7e5ef523a8..b55e399edf 100644
--- a/ToDo
+++ b/ToDo
@@ -2,10 +2,6 @@ Language Spec.
- Class#allocate - basicNew
- class Foo::Bar<Baz .. end, module Boo::Bar .. end
-- raise exception by `` error
-- a +1 to be a+1, not a(+1).
-- clarify evaluation order of operator argument (=~, .., ...)
-- :symbol => value hash in the form of {symbol: value, ...} ??
* operator !! for rescue. ???
* objectify characters
* ../... outside condition invokes operator method too.
@@ -18,6 +14,7 @@ Language Spec.
* def Class#method .. end ??
* def Foo::Bar::baz() .. end ??
* I18N (or M17N) script/string/regexp
+* Fixnum 0 as false ????
* discourage use of symbol variables (e.g. $/, etc.) in manual
* discourage use of Perlish features by giving warnings.
* non confusing in-block local variable (is it possible?)
@@ -25,9 +22,12 @@ Language Spec.
+ variables appears within block may have independent values.
* Regexp: make /o thread safe.
* decide whether begin with rescue or ensure make do..while loop.
+* a +1 to be a+1, not a(+1).
* unify == and eql? again
* to_i returns nil if str contains no digit.
+* raise exception by `` error
* jar like combined library package. -> RubyGems?
+* resumable Exception via Exception#resume.
* method combination, e.g. before, after, around, etc.
* .. or something like defadvice in Emacs.
* property - for methods, or for objects in general.
@@ -35,6 +35,8 @@ Language Spec.
* selector namespace - something like generic-flet in CLOS, to help RubyBehavior
* private instance variable (as in Python?) @_foo in class Foo => @_Foo_foo
* warn/error "bare word" method, like "foo", you should type "foo()"
+* clarify evaluation order of operator argument (=~, .., ...)
+* :symbol => value hash in the form of {symbol: value, ...} ??
Hacking Interpreter
@@ -81,7 +83,7 @@ Standard Libraries
- use Mersenne Twister RNG for random.
- deprecate Array#indexes, and Array#indices.
- remove dependency on MAXPATHLEN.
-- String#scanf(?)
+* String#scanf(?)
* Object#fmt(?)
* Time::strptime
* Integer[num], Float[num]; Fixnum[num]?
@@ -115,7 +117,7 @@ Extension Libraries
Ruby Libraries
-- urllib.rb, nttplib.rb, etc.
+* urllib.rb, nttplib.rb, etc.
* format like perl's
Tools
diff --git a/array.c b/array.c
index 18d8f84580..a67e9233d1 100644
--- a/array.c
+++ b/array.c
@@ -2,8 +2,8 @@
array.c -
- $Author$
- $Date$
+ $Author: akr $
+ $Date: 2006/06/24 14:53:36 $
created at: Fri Aug 6 09:46:12 JST 1993
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -15,16 +15,16 @@
#include "ruby.h"
#include "util.h"
#include "st.h"
-#include "node.h"
VALUE rb_cArray;
-
static ID id_cmp;
#define ARY_DEFAULT_SIZE 16
void
-rb_mem_clear(register VALUE *mem, register long size)
+rb_mem_clear(mem, size)
+ register VALUE *mem;
+ register long size;
{
while (size--) {
*mem++ = Qnil;
@@ -32,34 +32,21 @@ rb_mem_clear(register VALUE *mem, register long size)
}
static inline void
-memfill(register VALUE *mem, register long size, register VALUE val)
+memfill(mem, size, val)
+ register VALUE *mem;
+ register long size;
+ register VALUE val;
{
while (size--) {
*mem++ = val;
}
}
-#define ARY_TMPLOCK FL_USER1
-#define ARY_SHARED_P(a) FL_TEST(a, ELTS_SHARED)
-
-#define ARY_SET_LEN(ary, n) do { \
- RARRAY(ary)->len = (n);\
-} while (0)
-
-#define ARY_CAPA(ary) RARRAY(ary)->aux.capa
-#define RESIZE_CAPA(ary,capacity) do {\
- REALLOC_N(RARRAY(ary)->ptr, VALUE, (capacity));\
- RARRAY(ary)->aux.capa = (capacity);\
-} while (0)
-
-static VALUE *
-rb_ary_ptr(VALUE ary)
-{
- return RARRAY_PTR(ary);
-}
+#define ARY_TMPLOCK FL_USER1
static inline void
-rb_ary_modify_check(VALUE ary)
+rb_ary_modify_check(ary)
+ VALUE ary;
{
if (OBJ_FROZEN(ary)) rb_error_frozen("array");
if (FL_TEST(ary, ARY_TMPLOCK))
@@ -69,22 +56,24 @@ rb_ary_modify_check(VALUE ary)
}
static void
-rb_ary_modify(VALUE ary)
+rb_ary_modify(ary)
+ VALUE ary;
{
VALUE *ptr;
rb_ary_modify_check(ary);
- if (ARY_SHARED_P(ary)) {
- ptr = ALLOC_N(VALUE, RARRAY_LEN(ary));
+ if (FL_TEST(ary, ELTS_SHARED)) {
+ ptr = ALLOC_N(VALUE, RARRAY(ary)->len);
FL_UNSET(ary, ELTS_SHARED);
- RARRAY(ary)->aux.capa = RARRAY_LEN(ary);
- MEMCPY(ptr, RARRAY_PTR(ary), VALUE, RARRAY_LEN(ary));
+ RARRAY(ary)->aux.capa = RARRAY(ary)->len;
+ MEMCPY(ptr, RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
RARRAY(ary)->ptr = ptr;
}
}
VALUE
-rb_ary_freeze(VALUE ary)
+rb_ary_freeze(ary)
+ VALUE ary;
{
return rb_obj_freeze(ary);
}
@@ -98,15 +87,18 @@ rb_ary_freeze(VALUE ary)
*/
static VALUE
-rb_ary_frozen_p(VALUE ary)
+rb_ary_frozen_p(ary)
+ VALUE ary;
{
if (OBJ_FROZEN(ary)) return Qtrue;
if (FL_TEST(ary, ARY_TMPLOCK)) return Qtrue;
return Qfalse;
}
+static VALUE ary_alloc _((VALUE));
static VALUE
-ary_alloc(VALUE klass)
+ary_alloc(klass)
+ VALUE klass;
{
NEWOBJ(ary, struct RArray);
OBJSETUP(ary, klass, T_ARRAY);
@@ -119,9 +111,11 @@ ary_alloc(VALUE klass)
}
static VALUE
-ary_new(VALUE klass, long len)
+ary_new(klass, len)
+ VALUE klass;
+ long len;
{
- VALUE ary;
+ VALUE ary = ary_alloc(klass);
if (len < 0) {
rb_raise(rb_eArgError, "negative array size (or size too big)");
@@ -129,7 +123,6 @@ ary_new(VALUE klass, long len)
if (len > 0 && len * sizeof(VALUE) <= len) {
rb_raise(rb_eArgError, "array size too big");
}
- ary = ary_alloc(klass);
if (len == 0) len++;
RARRAY(ary)->ptr = ALLOC_N(VALUE, len);
RARRAY(ary)->aux.capa = len;
@@ -138,22 +131,35 @@ ary_new(VALUE klass, long len)
}
VALUE
-rb_ary_new2(long len)
+rb_ary_new2(len)
+ long len;
{
return ary_new(rb_cArray, len);
}
VALUE
-rb_ary_new(void)
+rb_ary_new()
{
return rb_ary_new2(ARY_DEFAULT_SIZE);
}
+#ifdef HAVE_STDARG_PROTOTYPES
#include <stdarg.h>
+#define va_init_list(a,b) va_start(a,b)
+#else
+#include <varargs.h>
+#define va_init_list(a,b) va_start(a)
+#endif
VALUE
+#ifdef HAVE_STDARG_PROTOTYPES
rb_ary_new3(long n, ...)
+#else
+rb_ary_new3(n, va_alist)
+ long n;
+ va_dcl
+#endif
{
va_list ar;
VALUE ary;
@@ -161,9 +167,9 @@ rb_ary_new3(long n, ...)
ary = rb_ary_new2(n);
- va_start(ar, n);
+ va_init_list(ar, n);
for (i=0; i<n; i++) {
- RARRAY_PTR(ary)[i] = va_arg(ar, VALUE);
+ RARRAY(ary)->ptr[i] = va_arg(ar, VALUE);
}
va_end(ar);
@@ -172,72 +178,52 @@ rb_ary_new3(long n, ...)
}
VALUE
-rb_ary_new4(long n, const VALUE *elts)
+rb_ary_new4(n, elts)
+ long n;
+ const VALUE *elts;
{
VALUE ary;
ary = rb_ary_new2(n);
if (n > 0 && elts) {
- MEMCPY(RARRAY_PTR(ary), elts, VALUE, n);
- RARRAY(ary)->len = n;
+ MEMCPY(RARRAY(ary)->ptr, elts, VALUE, n);
}
- return ary;
-}
+ /* This assignment to len will be moved to the above "if" block in Ruby 1.9 */
+ RARRAY(ary)->len = n;
-void
-rb_ary_free(VALUE ary)
-{
- if (!ARY_SHARED_P(ary)) {
- xfree(RARRAY(ary)->ptr);
- }
+ return ary;
}
-static VALUE
-ary_make_shared(VALUE ary)
+VALUE
+rb_assoc_new(car, cdr)
+ VALUE car, cdr;
{
- if (ARY_SHARED_P(ary)) {
- return RARRAY(ary)->aux.shared;
- }
- else {
- NEWOBJ(shared, struct RArray);
- OBJSETUP(shared, 0, T_ARRAY);
+ VALUE ary;
- shared->len = RARRAY(ary)->len;
- shared->ptr = RARRAY(ary)->ptr;
- shared->aux.capa = RARRAY(ary)->aux.capa;
- RARRAY(ary)->aux.shared = (VALUE)shared;
- FL_SET(ary, ELTS_SHARED);
- OBJ_FREEZE(shared);
- return (VALUE)shared;
- }
-}
+ ary = rb_ary_new2(2);
+ RARRAY(ary)->ptr[0] = car;
+ RARRAY(ary)->ptr[1] = cdr;
+ RARRAY(ary)->len = 2;
-VALUE
-rb_assoc_new(VALUE car, VALUE cdr)
-{
- return rb_ary_new3(2, car, cdr);
+ return ary;
}
static VALUE
-to_ary(VALUE ary)
+to_ary(ary)
+ VALUE ary;
{
return rb_convert_type(ary, T_ARRAY, "Array", "to_ary");
}
-static VALUE
-to_a(VALUE ary)
-{
- return rb_convert_type(ary, T_ARRAY, "Array", "to_a");
-}
-
VALUE
-rb_check_array_type(VALUE ary)
+rb_check_array_type(ary)
+ VALUE ary;
{
return rb_check_convert_type(ary, T_ARRAY, "Array", "to_ary");
}
-static VALUE rb_ary_replace(VALUE, VALUE);
+static VALUE rb_ary_replace _((VALUE, VALUE));
/*
* call-seq:
@@ -278,16 +264,16 @@ static VALUE rb_ary_replace(VALUE, VALUE);
*/
static VALUE
-rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
+rb_ary_initialize(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
long len;
VALUE size, val;
rb_ary_modify(ary);
if (rb_scan_args(argc, argv, "02", &size, &val) == 0) {
- if (RARRAY_PTR(ary) && !ARY_SHARED_P(ary)) {
- free(RARRAY(ary)->ptr);
- }
RARRAY(ary)->len = 0;
if (rb_block_given_p()) {
rb_warning("given block not used");
@@ -310,8 +296,10 @@ rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
if (len > 0 && len * (long)sizeof(VALUE) <= len) {
rb_raise(rb_eArgError, "array size too big");
}
- rb_ary_modify(ary);
- RESIZE_CAPA(ary, len);
+ if (len > RARRAY(ary)->aux.capa) {
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, len);
+ RARRAY(ary)->aux.capa = len;
+ }
if (rb_block_given_p()) {
long i;
@@ -324,9 +312,10 @@ rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
}
}
else {
- memfill(RARRAY_PTR(ary), len, val);
+ memfill(RARRAY(ary)->ptr, len, val);
RARRAY(ary)->len = len;
}
+
return ary;
}
@@ -340,95 +329,59 @@ rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
*/
static VALUE
-rb_ary_s_create(int argc, VALUE *argv, VALUE klass)
+rb_ary_s_create(argc, argv, klass)
+ int argc;
+ VALUE *argv;
+ VALUE klass;
{
VALUE ary = ary_alloc(klass);
- if (argc < 0) {
- rb_raise(rb_eArgError, "negative array size");
+ if (argc > 0) {
+ RARRAY(ary)->ptr = ALLOC_N(VALUE, argc);
+ MEMCPY(RARRAY(ary)->ptr, argv, VALUE, argc);
}
- RARRAY(ary)->ptr = ALLOC_N(VALUE, argc);
- RARRAY(ary)->aux.capa = argc;
- MEMCPY(RARRAY_PTR(ary), argv, VALUE, argc);
- RARRAY(ary)->len = argc;
+ RARRAY(ary)->len = RARRAY(ary)->aux.capa = argc;
return ary;
}
void
-rb_ary_store(VALUE ary, long idx, VALUE val)
+rb_ary_store(ary, idx, val)
+ VALUE ary;
+ long idx;
+ VALUE val;
{
if (idx < 0) {
- idx += RARRAY_LEN(ary);
+ idx += RARRAY(ary)->len;
if (idx < 0) {
rb_raise(rb_eIndexError, "index %ld out of array",
- idx - RARRAY_LEN(ary));
+ idx - RARRAY(ary)->len);
}
}
rb_ary_modify(ary);
- if (idx >= ARY_CAPA(ary)) {
- long new_capa = ARY_CAPA(ary) / 2;
+ if (idx >= RARRAY(ary)->aux.capa) {
+ long new_capa = RARRAY(ary)->aux.capa / 2;
if (new_capa < ARY_DEFAULT_SIZE) {
new_capa = ARY_DEFAULT_SIZE;
}
- if (new_capa + idx < new_capa) {
- rb_raise(rb_eArgError, "index too big");
- }
new_capa += idx;
if (new_capa * (long)sizeof(VALUE) <= new_capa) {
rb_raise(rb_eArgError, "index too big");
}
- RESIZE_CAPA(ary, new_capa);
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, new_capa);
+ RARRAY(ary)->aux.capa = new_capa;
}
- if (idx > RARRAY_LEN(ary)) {
- rb_mem_clear(RARRAY_PTR(ary) + RARRAY_LEN(ary),
- idx-RARRAY_LEN(ary) + 1);
+ if (idx > RARRAY(ary)->len) {
+ rb_mem_clear(RARRAY(ary)->ptr + RARRAY(ary)->len,
+ idx-RARRAY(ary)->len + 1);
}
- if (idx >= RARRAY_LEN(ary)) {
+ if (idx >= RARRAY(ary)->len) {
RARRAY(ary)->len = idx + 1;
}
- RARRAY_PTR(ary)[idx] = val;
-}
-
-static VALUE
-ary_shared_array(VALUE klass, VALUE ary)
-{
- VALUE val = ary_alloc(klass);
-
- ary_make_shared(ary);
- RARRAY(val)->ptr = RARRAY(ary)->ptr;
- RARRAY(val)->len = RARRAY(ary)->len;
- RARRAY(val)->aux.shared = RARRAY(ary)->aux.shared;
- FL_SET(val, ELTS_SHARED);
- return val;
-}
-
-static VALUE
-ary_shared_first(int argc, VALUE *argv, VALUE ary, int last)
-{
- VALUE nv, result;
- long n;
- long offset = 0;
-
- rb_scan_args(argc, argv, "1", &nv);
- n = NUM2LONG(nv);
- if (n > RARRAY_LEN(ary)) {
- n = RARRAY_LEN(ary);
- }
- else if (n < 0) {
- rb_raise(rb_eArgError, "negative array size");
- }
- if (last) {
- offset = RARRAY_LEN(ary) - n;
- }
- result = ary_shared_array(rb_cArray, ary);
- RARRAY(result)->ptr += offset;
- RARRAY(result)->len = n;
-
- return result;
+ RARRAY(ary)->ptr[idx] = val;
}
/*
@@ -445,9 +398,11 @@ ary_shared_first(int argc, VALUE *argv, VALUE ary, int last)
*/
VALUE
-rb_ary_push(VALUE ary, VALUE item)
+rb_ary_push(ary, item)
+ VALUE ary;
+ VALUE item;
{
- rb_ary_store(ary, RARRAY_LEN(ary), item);
+ rb_ary_store(ary, RARRAY(ary)->len, item);
return ary;
}
@@ -465,7 +420,10 @@ rb_ary_push(VALUE ary, VALUE item)
*/
static VALUE
-rb_ary_push_m(int argc, VALUE *argv, VALUE ary)
+rb_ary_push_m(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
while (argc--) {
rb_ary_push(ary, *argv++);
@@ -473,23 +431,6 @@ rb_ary_push_m(int argc, VALUE *argv, VALUE ary)
return ary;
}
-VALUE
-rb_ary_pop(VALUE ary)
-{
- long n;
- rb_ary_modify_check(ary);
- if (RARRAY_LEN(ary) == 0) return Qnil;
- if (!ARY_SHARED_P(ary) &&
- RARRAY_LEN(ary) * 3 < ARY_CAPA(ary) &&
- ARY_CAPA(ary) > ARY_DEFAULT_SIZE)
- {
- RESIZE_CAPA(ary, RARRAY_LEN(ary) * 2);
- }
- n = RARRAY_LEN(ary)-1;
- RARRAY(ary)->len = n;
- return RARRAY_PTR(ary)[n];
-}
-
/*
* call-seq:
* array.pop -> obj or nil
@@ -497,48 +438,45 @@ rb_ary_pop(VALUE ary)
* Removes the last element from <i>self</i> and returns it, or
* <code>nil</code> if the array is empty.
*
- * a = [ "a", "b", "c", "d" ]
- * a.pop #=> "d"
- * a.pop(2) #=> ["b", "c"]
- * a #=> ["a"]
+ * a = [ "a", "m", "z" ]
+ * a.pop #=> "z"
+ * a #=> ["a", "m"]
*/
-static VALUE
-rb_ary_pop_m(int argc, VALUE *argv, VALUE ary)
+VALUE
+rb_ary_pop(ary)
+ VALUE ary;
{
- VALUE result;
-
- if (argc == 0) {
- return rb_ary_pop(ary);
- }
-
rb_ary_modify_check(ary);
- result = ary_shared_first(argc, argv, ary, Qtrue);
- RARRAY(ary)->len -= RARRAY_LEN(result);
- return result;
+ if (RARRAY(ary)->len == 0) return Qnil;
+ if (!FL_TEST(ary, ELTS_SHARED) &&
+ RARRAY(ary)->len * 2 < RARRAY(ary)->aux.capa &&
+ RARRAY(ary)->aux.capa > ARY_DEFAULT_SIZE) {
+ RARRAY(ary)->aux.capa = RARRAY(ary)->len * 2;
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->aux.capa);
+ }
+ return RARRAY(ary)->ptr[--RARRAY(ary)->len];
}
-VALUE
-rb_ary_shift(VALUE ary)
+static VALUE
+ary_make_shared(ary)
+ VALUE ary;
{
- VALUE top;
+ if (!FL_TEST(ary, ELTS_SHARED)) {
+ NEWOBJ(shared, struct RArray);
+ OBJSETUP(shared, rb_cArray, T_ARRAY);
- rb_ary_modify_check(ary);
- if (RARRAY_LEN(ary) == 0) return Qnil;
- top = RARRAY_PTR(ary)[0];
- if (!ARY_SHARED_P(ary)) {
- if (RARRAY_LEN(ary) < ARY_DEFAULT_SIZE) {
- MEMMOVE(RARRAY_PTR(ary), RARRAY_PTR(ary)+1, VALUE, RARRAY_LEN(ary)-1);
- RARRAY(ary)->len--;
- return top;
- }
- RARRAY_PTR(ary)[0] = Qnil;
- ary_make_shared(ary);
+ shared->len = RARRAY(ary)->len;
+ shared->ptr = RARRAY(ary)->ptr;
+ shared->aux.capa = RARRAY(ary)->aux.capa;
+ RARRAY(ary)->aux.shared = (VALUE)shared;
+ FL_SET(ary, ELTS_SHARED);
+ OBJ_FREEZE(shared);
+ return (VALUE)shared;
+ }
+ else {
+ return RARRAY(ary)->aux.shared;
}
- RARRAY(ary)->ptr++; /* shift ptr */
- RARRAY(ary)->len--;
-
- return top;
}
/*
@@ -550,37 +488,47 @@ rb_ary_shift(VALUE ary)
* is empty.
*
* args = [ "-m", "-q", "filename" ]
- * args.shift #=> "-m"
- * args #=> ["-q", "filename"]
- *
- * args = [ "-m", "-q", "filename" ]
- * args.shift(2) #=> ["-m", "-q"]
- * args #=> ["filename"]
+ * args.shift #=> "-m"
+ * args #=> ["-q", "filename"]
*/
-static VALUE
-rb_ary_shift_m(int argc, VALUE *argv, VALUE ary)
+VALUE
+rb_ary_shift(ary)
+ VALUE ary;
{
- VALUE result;
- long n;
-
- if (argc == 0) {
- return rb_ary_shift(ary);
- }
+ VALUE top;
rb_ary_modify_check(ary);
- result = ary_shared_first(argc, argv, ary, Qfalse);
- n = RARRAY_LEN(result);
- if (ARY_SHARED_P(ary)) {
- RARRAY(ary)->ptr += n;
- RARRAY(ary)->len -= n;
- }
- else {
- MEMMOVE(RARRAY_PTR(ary), RARRAY_PTR(ary)+n, VALUE, RARRAY_LEN(ary)-n);
- RARRAY(ary)->len -= n;
+ if (RARRAY(ary)->len == 0) return Qnil;
+ top = RARRAY(ary)->ptr[0];
+ ary_make_shared(ary);
+ RARRAY(ary)->ptr++; /* shift ptr */
+ RARRAY(ary)->len--;
+
+ return top;
+}
+
+VALUE
+rb_ary_unshift(ary, item)
+ VALUE ary, item;
+{
+ rb_ary_modify(ary);
+ if (RARRAY(ary)->len == RARRAY(ary)->aux.capa) {
+ long capa_inc = RARRAY(ary)->aux.capa / 2;
+ if (capa_inc < ARY_DEFAULT_SIZE) {
+ capa_inc = ARY_DEFAULT_SIZE;
+ }
+ RARRAY(ary)->aux.capa += capa_inc;
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->aux.capa);
}
- return result;
+ /* sliding items */
+ MEMMOVE(RARRAY(ary)->ptr + 1, RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
+
+ RARRAY(ary)->len++;
+ RARRAY(ary)->ptr[0] = item;
+
+ return ary;
}
/*
@@ -596,61 +544,62 @@ rb_ary_shift_m(int argc, VALUE *argv, VALUE ary)
*/
static VALUE
-rb_ary_unshift_m(int argc, VALUE *argv, VALUE ary)
+rb_ary_unshift_m(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
long len = RARRAY(ary)->len;
if (argc == 0) return ary;
- rb_ary_modify(ary);
- if (RARRAY(ary)->aux.capa <= RARRAY_LEN(ary)+argc) {
- RESIZE_CAPA(ary, RARRAY(ary)->aux.capa + ARY_DEFAULT_SIZE);
- }
+
+ /* make rooms by setting the last item */
+ rb_ary_store(ary, len + argc - 1, Qnil);
/* sliding items */
MEMMOVE(RARRAY(ary)->ptr + argc, RARRAY(ary)->ptr, VALUE, len);
MEMCPY(RARRAY(ary)->ptr, argv, VALUE, argc);
- RARRAY(ary)->len += argc;
return ary;
}
-VALUE
-rb_ary_unshift(VALUE ary, VALUE item)
-{
- return rb_ary_unshift_m(1,&item,ary);
-}
-
/* faster version - use this if you don't need to treat negative offset */
static inline VALUE
-rb_ary_elt(VALUE ary, long offset)
+rb_ary_elt(ary, offset)
+ VALUE ary;
+ long offset;
{
- if (RARRAY_LEN(ary) == 0) return Qnil;
- if (offset < 0 || RARRAY_LEN(ary) <= offset) {
+ if (RARRAY(ary)->len == 0) return Qnil;
+ if (offset < 0 || RARRAY(ary)->len <= offset) {
return Qnil;
}
- return RARRAY_PTR(ary)[offset];
+ return RARRAY(ary)->ptr[offset];
}
VALUE
-rb_ary_entry(VALUE ary, long offset)
+rb_ary_entry(ary, offset)
+ VALUE ary;
+ long offset;
{
if (offset < 0) {
- offset += RARRAY_LEN(ary);
+ offset += RARRAY(ary)->len;
}
return rb_ary_elt(ary, offset);
}
static VALUE
-rb_ary_subseq(VALUE ary, long beg, long len)
+rb_ary_subseq(ary, beg, len)
+ VALUE ary;
+ long beg, len;
{
VALUE klass, ary2, shared;
VALUE *ptr;
- if (beg > RARRAY_LEN(ary)) return Qnil;
+ if (beg > RARRAY(ary)->len) return Qnil;
if (beg < 0 || len < 0) return Qnil;
- if (beg + len > RARRAY_LEN(ary)) {
- len = RARRAY_LEN(ary) - beg;
+ if (beg + len > RARRAY(ary)->len) {
+ len = RARRAY(ary)->len - beg;
if (len < 0)
len = 0;
}
@@ -658,7 +607,7 @@ rb_ary_subseq(VALUE ary, long beg, long len)
if (len == 0) return ary_new(klass, 0);
shared = ary_make_shared(ary);
- ptr = RARRAY_PTR(ary);
+ ptr = RARRAY(ary)->ptr;
ary2 = ary_alloc(klass);
RARRAY(ary2)->ptr = ptr + beg;
RARRAY(ary2)->len = len;
@@ -701,16 +650,22 @@ rb_ary_subseq(VALUE ary, long beg, long len)
*/
VALUE
-rb_ary_aref(int argc, VALUE *argv, VALUE ary)
+rb_ary_aref(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
VALUE arg;
long beg, len;
if (argc == 2) {
+ if (SYMBOL_P(argv[0])) {
+ rb_raise(rb_eTypeError, "Symbol as array index");
+ }
beg = NUM2LONG(argv[0]);
len = NUM2LONG(argv[1]);
if (beg < 0) {
- beg += RARRAY_LEN(ary);
+ beg += RARRAY(ary)->len;
}
return rb_ary_subseq(ary, beg, len);
}
@@ -722,8 +677,11 @@ rb_ary_aref(int argc, VALUE *argv, VALUE ary)
if (FIXNUM_P(arg)) {
return rb_ary_entry(ary, FIX2LONG(arg));
}
+ if (SYMBOL_P(arg)) {
+ rb_raise(rb_eTypeError, "Symbol as array index");
+ }
/* check if idx is Range */
- switch (rb_range_beg_len(arg, &beg, &len, RARRAY_LEN(ary), 0)) {
+ switch (rb_range_beg_len(arg, &beg, &len, RARRAY(ary)->len, 0)) {
case Qfalse:
break;
case Qnil:
@@ -750,34 +708,49 @@ rb_ary_aref(int argc, VALUE *argv, VALUE ary)
*/
static VALUE
-rb_ary_at(VALUE ary, VALUE pos)
+rb_ary_at(ary, pos)
+ VALUE ary, pos;
{
return rb_ary_entry(ary, NUM2LONG(pos));
}
/*
* call-seq:
- * array.first -> obj or nil
- * array.first(n) -> an_array
+ * array.first -> obj or nil
+ * array.first(n) -> an_array
*
* Returns the first element, or the first +n+ elements, of the array.
* If the array is empty, the first form returns <code>nil</code>, and the
* second form returns an empty array.
- *
+ *
* a = [ "q", "r", "s", "t" ]
- * a.first #=> "q"
- * a.first(2) #=> ["q", "r"]
+ * a.first #=> "q"
+ * a.first(1) #=> ["q"]
+ * a.first(3) #=> ["q", "r", "s"]
*/
static VALUE
-rb_ary_first(int argc, VALUE *argv, VALUE ary)
+rb_ary_first(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
if (argc == 0) {
- if (RARRAY_LEN(ary) == 0) return Qnil;
- return RARRAY_PTR(ary)[0];
+ if (RARRAY(ary)->len == 0) return Qnil;
+ return RARRAY(ary)->ptr[0];
}
else {
- return ary_shared_first(argc, argv, ary, Qfalse);
+ VALUE nv, result;
+ long n, i;
+
+ rb_scan_args(argc, argv, "01", &nv);
+ n = NUM2LONG(nv);
+ if (n > RARRAY(ary)->len) n = RARRAY(ary)->len;
+ result = rb_ary_new2(n);
+ for (i=0; i<n; i++) {
+ rb_ary_push(result, RARRAY(ary)->ptr[i]);
+ }
+ return result;
}
}
@@ -789,20 +762,31 @@ rb_ary_first(int argc, VALUE *argv, VALUE ary)
* Returns the last element(s) of <i>self</i>. If the array is empty,
* the first form returns <code>nil</code>.
*
- * a = [ "w", "x", "y", "z" ]
- * a.last #=> "z"
- * a.last(2) #=> ["y", "z"]
+ * [ "w", "x", "y", "z" ].last #=> "z"
*/
static VALUE
-rb_ary_last(int argc, VALUE *argv, VALUE ary)
+rb_ary_last(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
if (argc == 0) {
- if (RARRAY_LEN(ary) == 0) return Qnil;
- return RARRAY_PTR(ary)[RARRAY_LEN(ary)-1];
+ if (RARRAY(ary)->len == 0) return Qnil;
+ return RARRAY(ary)->ptr[RARRAY(ary)->len-1];
}
else {
- return ary_shared_first(argc, argv, ary, Qtrue);
+ VALUE nv, result;
+ long n, i;
+
+ rb_scan_args(argc, argv, "01", &nv);
+ n = NUM2LONG(nv);
+ if (n > RARRAY(ary)->len) n = RARRAY(ary)->len;
+ result = rb_ary_new2(n);
+ for (i=RARRAY(ary)->len-n; n--; i++) {
+ rb_ary_push(result, RARRAY(ary)->ptr[i]);
+ }
+ return result;
}
}
@@ -827,7 +811,10 @@ rb_ary_last(int argc, VALUE *argv, VALUE ary)
*/
static VALUE
-rb_ary_fetch(int argc, VALUE *argv, VALUE ary)
+rb_ary_fetch(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
VALUE pos, ifnone;
long block_given;
@@ -841,53 +828,41 @@ rb_ary_fetch(int argc, VALUE *argv, VALUE ary)
idx = NUM2LONG(pos);
if (idx < 0) {
- idx += RARRAY_LEN(ary);
+ idx += RARRAY(ary)->len;
}
- if (idx < 0 || RARRAY_LEN(ary) <= idx) {
+ if (idx < 0 || RARRAY(ary)->len <= idx) {
if (block_given) return rb_yield(pos);
if (argc == 1) {
rb_raise(rb_eIndexError, "index %ld out of array", idx);
}
return ifnone;
}
- return RARRAY_PTR(ary)[idx];
+ return RARRAY(ary)->ptr[idx];
}
/*
* call-seq:
- * array.index(obj) -> int or nil
- * array.index {|item| block} -> int or nil
+ * array.index(obj) -> int or nil
*
- * Returns the index of the first object in <i>self</i> such that is
- * <code>==</code> to <i>obj</i>. If a block is given instead of an
- * argument, returns first object for which <em>block</em> is true.
- * Returns <code>nil</code> if no match is found.
+ * Returns the index of the first object in <i>self</i> such that is
+ * <code>==</code> to <i>obj</i>. Returns <code>nil</code> if
+ * no match is found.
*
* a = [ "a", "b", "c" ]
- * a.index("b") #=> 1
- * a.index("z") #=> nil
- * a.index{|x|x=="b"} #=> 1
+ * a.index("b") #=> 1
+ * a.index("z") #=> nil
*/
static VALUE
-rb_ary_index(int argc, VALUE *argv, VALUE ary)
-{
+rb_ary_index(ary, val)
+ VALUE ary;
VALUE val;
+{
long i;
- if (rb_scan_args(argc, argv, "01", &val) == 0) {
- RETURN_ENUMERATOR(ary, 0, 0);
- for (i=0; i<RARRAY_LEN(ary); i++) {
- if (RTEST(rb_yield(RARRAY_PTR(ary)[i]))) {
- return LONG2NUM(i);
- }
- }
- }
- else {
- for (i=0; i<RARRAY_LEN(ary); i++) {
- if (rb_equal(RARRAY_PTR(ary)[i], val))
- return LONG2NUM(i);
- }
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ if (rb_equal(RARRAY(ary)->ptr[i], val))
+ return LONG2NUM(i);
}
return Qnil;
}
@@ -896,112 +871,133 @@ rb_ary_index(int argc, VALUE *argv, VALUE ary)
* call-seq:
* array.rindex(obj) -> int or nil
*
- * Returns the index of the last object in <i>array</i>
- * <code>==</code> to <i>obj</i>. If a block is given instead of an
- * argument, returns first object for which <em>block</em> is
- * true. Returns <code>nil</code> if no match is found.
+ * Returns the index of the last object in <i>array</i>
+ * <code>==</code> to <i>obj</i>. Returns <code>nil</code> if
+ * no match is found.
*
* a = [ "a", "b", "b", "b", "c" ]
- * a.rindex("b") #=> 3
- * a.rindex("z") #=> nil
- * a.rindex{|x|x=="b"} #=> 3
+ * a.rindex("b") #=> 3
+ * a.rindex("z") #=> nil
*/
static VALUE
-rb_ary_rindex(int argc, VALUE *argv, VALUE ary)
-{
+rb_ary_rindex(ary, val)
+ VALUE ary;
VALUE val;
- long i = RARRAY_LEN(ary);
-
- if (rb_scan_args(argc, argv, "01", &val) == 0) {
- while (i--) {
- RETURN_ENUMERATOR(ary, 0, 0);
- if (RTEST(rb_yield(RARRAY_PTR(ary)[i])))
- return LONG2NUM(i);
- if (i > RARRAY_LEN(ary)) {
- i = RARRAY_LEN(ary);
- }
- }
- }
- else {
- while (i--) {
- if (rb_equal(RARRAY_PTR(ary)[i], val))
- return LONG2NUM(i);
- if (i > RARRAY_LEN(ary)) {
- i = RARRAY_LEN(ary);
- }
+{
+ long i = RARRAY(ary)->len;
+
+ while (i--) {
+ if (i > RARRAY(ary)->len) {
+ i = RARRAY(ary)->len;
+ continue;
}
+ if (rb_equal(RARRAY(ary)->ptr[i], val))
+ return LONG2NUM(i);
}
return Qnil;
}
+/*
+ * call-seq:
+ * array.indexes( i1, i2, ... iN ) -> an_array
+ * array.indices( i1, i2, ... iN ) -> an_array
+ *
+ * Deprecated; use <code>Array#values_at</code>.
+ */
+
+static VALUE
+rb_ary_indexes(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
+{
+ VALUE new_ary;
+ long i;
+
+ rb_warn("Array#%s is deprecated; use Array#values_at", rb_id2name(rb_frame_last_func()));
+ new_ary = rb_ary_new2(argc);
+ for (i=0; i<argc; i++) {
+ rb_ary_push(new_ary, rb_ary_aref(1, argv+i, ary));
+ }
+
+ return new_ary;
+}
+
VALUE
-rb_ary_to_ary(VALUE obj)
+rb_ary_to_ary(obj)
+ VALUE obj;
{
if (TYPE(obj) == T_ARRAY) {
return obj;
}
if (rb_respond_to(obj, rb_intern("to_ary"))) {
- return to_ary(obj);
+ return rb_convert_type(obj, T_ARRAY, "Array", "to_ary");
}
return rb_ary_new3(1, obj);
}
static void
-rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)
+rb_ary_splice(ary, beg, len, rpl)
+ VALUE ary;
+ long beg, len;
+ VALUE rpl;
{
long rlen;
if (len < 0) rb_raise(rb_eIndexError, "negative length (%ld)", len);
if (beg < 0) {
- beg += RARRAY_LEN(ary);
+ beg += RARRAY(ary)->len;
if (beg < 0) {
- beg -= RARRAY_LEN(ary);
+ beg -= RARRAY(ary)->len;
rb_raise(rb_eIndexError, "index %ld out of array", beg);
}
}
- if (beg + len > RARRAY_LEN(ary)) {
- len = RARRAY_LEN(ary) - beg;
+ if (beg + len > RARRAY(ary)->len) {
+ len = RARRAY(ary)->len - beg;
}
- if (rpl == Qundef) {
+ if (NIL_P(rpl)) {
rlen = 0;
}
else {
rpl = rb_ary_to_ary(rpl);
- rlen = RARRAY_LEN(rpl);
+ rlen = RARRAY(rpl)->len;
}
rb_ary_modify(ary);
- if (beg >= RARRAY_LEN(ary)) {
+
+ if (beg >= RARRAY(ary)->len) {
len = beg + rlen;
- if (len >= ARY_CAPA(ary)) {
- RESIZE_CAPA(ary, len);
+ if (len >= RARRAY(ary)->aux.capa) {
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, len);
+ RARRAY(ary)->aux.capa = len;
}
- rb_mem_clear(RARRAY_PTR(ary) + RARRAY_LEN(ary), beg - RARRAY_LEN(ary));
+ rb_mem_clear(RARRAY(ary)->ptr + RARRAY(ary)->len, beg - RARRAY(ary)->len);
if (rlen > 0) {
- MEMCPY(RARRAY_PTR(ary) + beg, RARRAY_PTR(rpl), VALUE, rlen);
+ MEMCPY(RARRAY(ary)->ptr + beg, RARRAY(rpl)->ptr, VALUE, rlen);
}
RARRAY(ary)->len = len;
}
else {
long alen;
- if (beg + len > RARRAY_LEN(ary)) {
- len = RARRAY_LEN(ary) - beg;
+ if (beg + len > RARRAY(ary)->len) {
+ len = RARRAY(ary)->len - beg;
}
- alen = RARRAY_LEN(ary) + rlen - len;
- if (alen >= ARY_CAPA(ary)) {
- RESIZE_CAPA(ary, alen);
+ alen = RARRAY(ary)->len + rlen - len;
+ if (alen >= RARRAY(ary)->aux.capa) {
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, alen);
+ RARRAY(ary)->aux.capa = alen;
}
if (len != rlen) {
- MEMMOVE(RARRAY_PTR(ary) + beg + rlen, RARRAY_PTR(ary) + beg + len,
- VALUE, RARRAY_LEN(ary) - (beg + len));
+ MEMMOVE(RARRAY(ary)->ptr + beg + rlen, RARRAY(ary)->ptr + beg + len,
+ VALUE, RARRAY(ary)->len - (beg + len));
RARRAY(ary)->len = alen;
}
if (rlen > 0) {
- MEMMOVE(RARRAY_PTR(ary) + beg, RARRAY_PTR(rpl), VALUE, rlen);
+ MEMMOVE(RARRAY(ary)->ptr + beg, RARRAY(rpl)->ptr, VALUE, rlen);
}
}
}
@@ -1019,8 +1015,9 @@ rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)
* the current capacity of the array, the array grows
* automatically. A negative indices will count backward
* from the end of the array. Inserts elements if _length_ is
- * zero. An +IndexError+ is raised if a negative index points
- * past the beginning of the array. See also
+ * zero. If +nil+ is used in the second and third form,
+ * deletes elements from _self_. An +IndexError+ is raised if a
+ * negative index points past the beginning of the array. See also
* <code>Array#push</code>, and <code>Array#unshift</code>.
*
* a = Array.new
@@ -1030,16 +1027,24 @@ rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)
* a[0, 2] = "?" #=> ["?", 2, nil, "4"]
* a[0..2] = "A" #=> ["A", "4"]
* a[-1] = "Z" #=> ["A", "Z"]
- * a[1..-1] = nil #=> ["A", nil]
- * a[1..-1] = [] #=> ["A"]
+ * a[1..-1] = nil #=> ["A"]
*/
static VALUE
-rb_ary_aset(int argc, VALUE *argv, VALUE ary)
+rb_ary_aset(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
long offset, beg, len;
if (argc == 3) {
+ if (SYMBOL_P(argv[0])) {
+ rb_raise(rb_eTypeError, "Symbol as array index");
+ }
+ if (SYMBOL_P(argv[1])) {
+ rb_raise(rb_eTypeError, "Symbol as subarray length");
+ }
rb_ary_splice(ary, NUM2LONG(argv[0]), NUM2LONG(argv[1]), argv[2]);
return argv[2];
}
@@ -1050,7 +1055,10 @@ rb_ary_aset(int argc, VALUE *argv, VALUE ary)
offset = FIX2LONG(argv[0]);
goto fixnum;
}
- if (rb_range_beg_len(argv[0], &beg, &len, RARRAY_LEN(ary), 1)) {
+ if (SYMBOL_P(argv[0])) {
+ rb_raise(rb_eTypeError, "Symbol as array index");
+ }
+ if (rb_range_beg_len(argv[0], &beg, &len, RARRAY(ary)->len, 1)) {
/* check if idx is Range */
rb_ary_splice(ary, beg, len, argv[1]);
return argv[1];
@@ -1075,7 +1083,10 @@ fixnum:
*/
static VALUE
-rb_ary_insert(int argc, VALUE *argv, VALUE ary)
+rb_ary_insert(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
long pos;
@@ -1085,7 +1096,7 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary)
}
pos = NUM2LONG(argv[0]);
if (pos == -1) {
- pos = RARRAY_LEN(ary);
+ pos = RARRAY(ary)->len;
}
if (pos < 0) {
pos++;
@@ -1110,13 +1121,13 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary)
*/
VALUE
-rb_ary_each(VALUE ary)
+rb_ary_each(ary)
+ VALUE ary;
{
long i;
- RETURN_ENUMERATOR(ary, 0, 0);
- for (i=0; i<RARRAY_LEN(ary); i++) {
- rb_yield(RARRAY_PTR(ary)[i]);
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ rb_yield(RARRAY(ary)->ptr[i]);
}
return ary;
}
@@ -1137,12 +1148,12 @@ rb_ary_each(VALUE ary)
*/
static VALUE
-rb_ary_each_index(VALUE ary)
+rb_ary_each_index(ary)
+ VALUE ary;
{
long i;
- RETURN_ENUMERATOR(ary, 0, 0);
- for (i=0; i<RARRAY_LEN(ary); i++) {
+ for (i=0; i<RARRAY(ary)->len; i++) {
rb_yield(LONG2NUM(i));
}
return ary;
@@ -1164,15 +1175,15 @@ rb_ary_each_index(VALUE ary)
*/
static VALUE
-rb_ary_reverse_each(VALUE ary)
+rb_ary_reverse_each(ary)
+ VALUE ary;
{
- long len = RARRAY_LEN(ary);
+ long len = RARRAY(ary)->len;
- RETURN_ENUMERATOR(ary, 0, 0);
while (len--) {
- rb_yield(RARRAY_PTR(ary)[len]);
- if (RARRAY_LEN(ary) < len) {
- len = RARRAY_LEN(ary);
+ rb_yield(RARRAY(ary)->ptr[len]);
+ if (RARRAY(ary)->len < len) {
+ len = RARRAY(ary)->len;
}
}
return ary;
@@ -1188,10 +1199,10 @@ rb_ary_reverse_each(VALUE ary)
*/
static VALUE
-rb_ary_length(VALUE ary)
+rb_ary_length(ary)
+ VALUE ary;
{
- long len = RARRAY_LEN(ary);
- return LONG2NUM(len);
+ return LONG2NUM(RARRAY(ary)->len);
}
/*
@@ -1204,68 +1215,71 @@ rb_ary_length(VALUE ary)
*/
static VALUE
-rb_ary_empty_p(VALUE ary)
+rb_ary_empty_p(ary)
+ VALUE ary;
{
- if (RARRAY_LEN(ary) == 0)
+ if (RARRAY(ary)->len == 0)
return Qtrue;
return Qfalse;
}
VALUE
-rb_ary_dup(VALUE ary)
+rb_ary_dup(ary)
+ VALUE ary;
{
- VALUE dup = rb_ary_new2(RARRAY_LEN(ary));
-
- MEMCPY(RARRAY_PTR(dup), RARRAY_PTR(ary), VALUE, RARRAY_LEN(ary));
- RARRAY(dup)->len = RARRAY_LEN(ary);
- OBJ_INFECT(dup, ary);
+ VALUE dup = rb_ary_new2(RARRAY(ary)->len);
+ DUPSETUP(dup, ary);
+ MEMCPY(RARRAY(dup)->ptr, RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
+ RARRAY(dup)->len = RARRAY(ary)->len;
return dup;
}
extern VALUE rb_output_fs;
static VALUE
-recursive_join(VALUE ary, VALUE argp, int recur)
+inspect_join(ary, arg)
+ VALUE ary;
+ VALUE *arg;
{
- VALUE *arg = (VALUE *)argp;
- if (recur) {
- return rb_str_new2("[...]");
- }
return rb_ary_join(arg[0], arg[1]);
}
VALUE
-rb_ary_join(VALUE ary, VALUE sep)
+rb_ary_join(ary, sep)
+ VALUE ary, sep;
{
long len = 1, i;
int taint = Qfalse;
VALUE result, tmp;
- if (RARRAY_LEN(ary) == 0) return rb_str_new(0, 0);
+ if (RARRAY(ary)->len == 0) return rb_str_new(0, 0);
if (OBJ_TAINTED(ary) || OBJ_TAINTED(sep)) taint = Qtrue;
- for (i=0; i<RARRAY_LEN(ary); i++) {
- tmp = rb_check_string_type(RARRAY_PTR(ary)[i]);
- len += NIL_P(tmp) ? 10 : RSTRING_LEN(tmp);
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ tmp = rb_check_string_type(RARRAY(ary)->ptr[i]);
+ len += NIL_P(tmp) ? 10 : RSTRING(tmp)->len;
}
if (!NIL_P(sep)) {
StringValue(sep);
- len += RSTRING_LEN(sep) * (RARRAY_LEN(ary) - 1);
+ len += RSTRING(sep)->len * (RARRAY(ary)->len - 1);
}
result = rb_str_buf_new(len);
- for (i=0; i<RARRAY_LEN(ary); i++) {
- tmp = RARRAY_PTR(ary)[i];
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ tmp = RARRAY(ary)->ptr[i];
switch (TYPE(tmp)) {
case T_STRING:
break;
case T_ARRAY:
- {
+ if (rb_inspecting_p(tmp)) {
+ tmp = rb_str_new2("[...]");
+ }
+ else {
VALUE args[2];
args[0] = tmp;
args[1] = sep;
- tmp = rb_exec_recursive(recursive_join, ary, (VALUE)args);
+ tmp = rb_protect_inspect(inspect_join, ary, (VALUE)args);
}
break;
default:
@@ -1293,7 +1307,10 @@ rb_ary_join(VALUE ary, VALUE sep)
*/
static VALUE
-rb_ary_join_m(int argc, VALUE *argv, VALUE ary)
+rb_ary_join_m(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
VALUE sep;
@@ -1303,17 +1320,118 @@ rb_ary_join_m(int argc, VALUE *argv, VALUE ary)
return rb_ary_join(ary, sep);
}
+/*
+ * call-seq:
+ * array.to_s -> string
+ *
+ * Returns _self_<code>.join</code>.
+ *
+ * [ "a", "e", "i", "o" ].to_s #=> "aeio"
+ *
+ */
+
+VALUE
+rb_ary_to_s(ary)
+ VALUE ary;
+{
+ if (RARRAY(ary)->len == 0) return rb_str_new(0, 0);
+
+ return rb_ary_join(ary, rb_output_fs);
+}
+
+static ID inspect_key;
+
+struct inspect_arg {
+ VALUE (*func)();
+ VALUE arg1, arg2;
+};
+
+static VALUE
+inspect_call(arg)
+ struct inspect_arg *arg;
+{
+ return (*arg->func)(arg->arg1, arg->arg2);
+}
+
+static VALUE
+get_inspect_tbl(create)
+ int create;
+{
+ VALUE inspect_tbl = rb_thread_local_aref(rb_thread_current(), inspect_key);
+
+ if (NIL_P(inspect_tbl)) {
+ if (create) {
+ tbl_init:
+ inspect_tbl = rb_ary_new();
+ rb_thread_local_aset(rb_thread_current(), inspect_key, inspect_tbl);
+ }
+ }
+ else if (TYPE(inspect_tbl) != T_ARRAY) {
+ rb_warn("invalid inspect_tbl value");
+ if (create) goto tbl_init;
+ rb_thread_local_aset(rb_thread_current(), inspect_key, Qnil);
+ return Qnil;
+ }
+ return inspect_tbl;
+}
+
static VALUE
-inspect_ary(VALUE ary, VALUE dummy, int recur)
+inspect_ensure(obj)
+ VALUE obj;
+{
+ VALUE inspect_tbl;
+
+ inspect_tbl = get_inspect_tbl(Qfalse);
+ if (!NIL_P(inspect_tbl)) {
+ rb_ary_pop(inspect_tbl);
+ }
+ return 0;
+}
+
+VALUE
+rb_protect_inspect(func, obj, arg)
+ VALUE (*func)(ANYARGS);
+ VALUE obj, arg;
+{
+ struct inspect_arg iarg;
+ VALUE inspect_tbl;
+ VALUE id;
+
+ inspect_tbl = get_inspect_tbl(Qtrue);
+ id = rb_obj_id(obj);
+ if (rb_ary_includes(inspect_tbl, id)) {
+ return (*func)(obj, arg);
+ }
+ rb_ary_push(inspect_tbl, id);
+ iarg.func = func;
+ iarg.arg1 = obj;
+ iarg.arg2 = arg;
+
+ return rb_ensure(inspect_call, (VALUE)&iarg, inspect_ensure, obj);
+}
+
+VALUE
+rb_inspecting_p(obj)
+ VALUE obj;
+{
+ VALUE inspect_tbl;
+
+ inspect_tbl = get_inspect_tbl(Qfalse);
+ if (NIL_P(inspect_tbl)) return Qfalse;
+ return rb_ary_includes(inspect_tbl, rb_obj_id(obj));
+}
+
+static VALUE
+inspect_ary(ary)
+ VALUE ary;
{
int tainted = OBJ_TAINTED(ary);
long i;
VALUE s, str;
- if (recur) return rb_tainted_str_new2("[...]");
str = rb_str_buf_new2("[");
- for (i=0; i<RARRAY_LEN(ary); i++) {
- s = rb_inspect(RARRAY_PTR(ary)[i]);
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ s = rb_inspect(RARRAY(ary)->ptr[i]);
if (OBJ_TAINTED(s)) tainted = Qtrue;
if (i > 0) rb_str_buf_cat2(str, ", ");
rb_str_buf_append(str, s);
@@ -1325,23 +1443,18 @@ inspect_ary(VALUE ary, VALUE dummy, int recur)
/*
* call-seq:
- * array.to_s -> string
* array.inspect -> string
*
* Create a printable version of <i>array</i>.
*/
static VALUE
-rb_ary_inspect(VALUE ary)
-{
- if (RARRAY_LEN(ary) == 0) return rb_str_new2("[]");
- return rb_exec_recursive(inspect_ary, ary, 0);
-}
-
-VALUE
-rb_ary_to_s(VALUE ary)
+rb_ary_inspect(ary)
+ VALUE ary;
{
- return rb_ary_inspect(ary);
+ if (RARRAY(ary)->len == 0) return rb_str_new2("[]");
+ if (rb_inspecting_p(ary)) return rb_str_new2("[...]");
+ return rb_protect_inspect(inspect_ary, ary, 0);
}
/*
@@ -1353,10 +1466,11 @@ rb_ary_to_s(VALUE ary)
*/
static VALUE
-rb_ary_to_a(VALUE ary)
+rb_ary_to_a(ary)
+ VALUE ary;
{
if (rb_obj_class(ary) != rb_cArray) {
- VALUE dup = rb_ary_new2(RARRAY_LEN(ary));
+ VALUE dup = rb_ary_new2(RARRAY(ary)->len);
rb_ary_replace(dup, ary);
return dup;
}
@@ -1371,21 +1485,23 @@ rb_ary_to_a(VALUE ary)
*/
static VALUE
-rb_ary_to_ary_m(VALUE ary)
+rb_ary_to_ary_m(ary)
+ VALUE ary;
{
return ary;
}
VALUE
-rb_ary_reverse(VALUE ary)
+rb_ary_reverse(ary)
+ VALUE ary;
{
VALUE *p1, *p2;
VALUE tmp;
rb_ary_modify(ary);
- if (RARRAY_LEN(ary) > 1) {
- p1 = RARRAY_PTR(ary);
- p2 = p1 + RARRAY_LEN(ary) - 1; /* points last item */
+ if (RARRAY(ary)->len > 1) {
+ p1 = RARRAY(ary)->ptr;
+ p2 = p1 + RARRAY(ary)->len - 1; /* points last item */
while (p1 < p2) {
tmp = *p1;
@@ -1408,7 +1524,8 @@ rb_ary_reverse(VALUE ary)
*/
static VALUE
-rb_ary_reverse_bang(VALUE ary)
+rb_ary_reverse_bang(ary)
+ VALUE ary;
{
return rb_ary_reverse(ary);
}
@@ -1424,7 +1541,8 @@ rb_ary_reverse_bang(VALUE ary)
*/
static VALUE
-rb_ary_reverse_m(VALUE ary)
+rb_ary_reverse_m(ary)
+ VALUE ary;
{
return rb_ary_reverse(rb_ary_dup(ary));
}
@@ -1436,30 +1554,34 @@ struct ary_sort_data {
};
static void
-ary_sort_check(struct ary_sort_data *data)
+ary_sort_check(data)
+ struct ary_sort_data *data;
{
- if (RARRAY_PTR(data->ary) != data->ptr || RARRAY_LEN(data->ary) != data->len) {
- rb_raise(rb_eRuntimeError, "array modified during sort");
+ if (RARRAY(data->ary)->ptr != data->ptr || RARRAY(data->ary)->len != data->len) {
+ rb_raise(rb_eArgError, "array modified during sort");
}
}
static int
-sort_1(const void *ap, const void *bp, void *data)
+sort_1(a, b, data)
+ VALUE *a, *b;
+ struct ary_sort_data *data;
{
- VALUE a = *(const VALUE *)ap, b = *(const VALUE *)bp;
- VALUE retval = rb_yield_values(2, a, b);
+ VALUE retval = rb_yield_values(2, *a, *b);
int n;
- n = rb_cmpint(retval, a, b);
- ary_sort_check((struct ary_sort_data *)data);
+ n = rb_cmpint(retval, *a, *b);
+ ary_sort_check(data);
return n;
}
static int
-sort_2(const void *ap, const void *bp, void *data)
+sort_2(ap, bp, data)
+ VALUE *ap, *bp;
+ struct ary_sort_data *data;
{
VALUE retval;
- VALUE a = *(const VALUE *)ap, b = *(const VALUE *)bp;
+ VALUE a = *ap, b = *bp;
int n;
if (FIXNUM_P(a) && FIXNUM_P(b)) {
@@ -1473,25 +1595,27 @@ sort_2(const void *ap, const void *bp, void *data)
retval = rb_funcall(a, id_cmp, 1, b);
n = rb_cmpint(retval, a, b);
- ary_sort_check((struct ary_sort_data *)data);
+ ary_sort_check(data);
return n;
}
static VALUE
-sort_internal(VALUE ary)
+sort_internal(ary)
+ VALUE ary;
{
struct ary_sort_data data;
data.ary = ary;
- data.ptr = RARRAY_PTR(ary); data.len = RARRAY_LEN(ary);
- ruby_qsort(RARRAY_PTR(ary), RARRAY_LEN(ary), sizeof(VALUE),
- rb_block_given_p()?sort_1:sort_2, &data);
+ data.ptr = RARRAY(ary)->ptr; data.len = RARRAY(ary)->len;
+ qsort(RARRAY(ary)->ptr, RARRAY(ary)->len, sizeof(VALUE),
+ rb_block_given_p()?sort_1:sort_2, &data);
return ary;
}
static VALUE
-sort_unlock(VALUE ary)
+sort_unlock(ary)
+ VALUE ary;
{
FL_UNSET(ary, ARY_TMPLOCK);
return ary;
@@ -1514,10 +1638,11 @@ sort_unlock(VALUE ary)
*/
VALUE
-rb_ary_sort_bang(VALUE ary)
+rb_ary_sort_bang(ary)
+ VALUE ary;
{
rb_ary_modify(ary);
- if (RARRAY_LEN(ary) > 1) {
+ if (RARRAY(ary)->len > 1) {
FL_SET(ary, ARY_TMPLOCK); /* prohibit modification during sort */
rb_ensure(sort_internal, ary, sort_unlock, ary);
}
@@ -1541,7 +1666,8 @@ rb_ary_sort_bang(VALUE ary)
*/
VALUE
-rb_ary_sort(VALUE ary)
+rb_ary_sort(ary)
+ VALUE ary;
{
ary = rb_ary_dup(ary);
rb_ary_sort_bang(ary);
@@ -1563,15 +1689,19 @@ rb_ary_sort(VALUE ary)
*/
static VALUE
-rb_ary_collect(VALUE ary)
+rb_ary_collect(ary)
+ VALUE ary;
{
long i;
VALUE collect;
- RETURN_ENUMERATOR(ary, 0, 0);
- collect = rb_ary_new2(RARRAY_LEN(ary));
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- rb_ary_push(collect, rb_yield(RARRAY_PTR(ary)[i]));
+ if (!rb_block_given_p()) {
+ return rb_ary_new4(RARRAY(ary)->len, RARRAY(ary)->ptr);
+ }
+
+ collect = rb_ary_new2(RARRAY(ary)->len);
+ for (i = 0; i < RARRAY(ary)->len; i++) {
+ rb_ary_push(collect, rb_yield(RARRAY(ary)->ptr[i]));
}
return collect;
}
@@ -1591,20 +1721,25 @@ rb_ary_collect(VALUE ary)
*/
static VALUE
-rb_ary_collect_bang(VALUE ary)
+rb_ary_collect_bang(ary)
+ VALUE ary;
{
long i;
- RETURN_ENUMERATOR(ary, 0, 0);
rb_ary_modify(ary);
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- rb_ary_store(ary, i, rb_yield(RARRAY_PTR(ary)[i]));
+ for (i = 0; i < RARRAY(ary)->len; i++) {
+ rb_ary_store(ary, i, rb_yield(RARRAY(ary)->ptr[i]));
}
return ary;
}
VALUE
-rb_get_values_at(VALUE obj, long olen, int argc, VALUE *argv, VALUE (*func) (VALUE, long))
+rb_values_at(obj, olen, argc, argv, func)
+ VALUE obj;
+ long olen;
+ int argc;
+ VALUE *argv;
+ VALUE (*func) _((VALUE,long));
{
VALUE result = rb_ary_new2(argc);
long beg, len, i, j;
@@ -1648,9 +1783,12 @@ rb_get_values_at(VALUE obj, long olen, int argc, VALUE *argv, VALUE (*func) (VAL
*/
static VALUE
-rb_ary_values_at(int argc, VALUE *argv, VALUE ary)
+rb_ary_values_at(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
- return rb_get_values_at(ary, RARRAY_LEN(ary), argc, argv, rb_ary_entry);
+ return rb_values_at(ary, RARRAY(ary)->len, argc, argv, rb_ary_entry);
}
/*
@@ -1666,15 +1804,15 @@ rb_ary_values_at(int argc, VALUE *argv, VALUE ary)
*/
static VALUE
-rb_ary_select(VALUE ary)
+rb_ary_select(ary)
+ VALUE ary;
{
VALUE result;
long i;
- RETURN_ENUMERATOR(ary, 0, 0);
- result = rb_ary_new2(RARRAY_LEN(ary));
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- if (RTEST(rb_yield(RARRAY_PTR(ary)[i]))) {
+ result = rb_ary_new2(RARRAY(ary)->len);
+ for (i = 0; i < RARRAY(ary)->len; i++) {
+ if (RTEST(rb_yield(RARRAY(ary)->ptr[i]))) {
rb_ary_push(result, rb_ary_elt(ary, i));
}
}
@@ -1699,12 +1837,14 @@ rb_ary_select(VALUE ary)
*/
VALUE
-rb_ary_delete(VALUE ary, VALUE item)
+rb_ary_delete(ary, item)
+ VALUE ary;
+ VALUE item;
{
long i1, i2;
- for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
- VALUE e = RARRAY_PTR(ary)[i1];
+ for (i1 = i2 = 0; i1 < RARRAY(ary)->len; i1++) {
+ VALUE e = RARRAY(ary)->ptr[i1];
if (rb_equal(e, item)) continue;
if (i1 != i2) {
@@ -1712,7 +1852,7 @@ rb_ary_delete(VALUE ary, VALUE item)
}
i2++;
}
- if (RARRAY_LEN(ary) == i2) {
+ if (RARRAY(ary)->len == i2) {
if (rb_block_given_p()) {
return rb_yield(item);
}
@@ -1720,11 +1860,12 @@ rb_ary_delete(VALUE ary, VALUE item)
}
rb_ary_modify(ary);
- if (RARRAY_LEN(ary) > i2) {
+ if (RARRAY(ary)->len > i2) {
RARRAY(ary)->len = i2;
- if (i2 * 2 < ARY_CAPA(ary) &&
- ARY_CAPA(ary) > ARY_DEFAULT_SIZE) {
- RESIZE_CAPA(ary, i2*2);
+ if (i2 * 2 < RARRAY(ary)->aux.capa &&
+ RARRAY(ary)->aux.capa > ARY_DEFAULT_SIZE) {
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, i2 * 2);
+ RARRAY(ary)->aux.capa = i2 * 2;
}
}
@@ -1732,9 +1873,11 @@ rb_ary_delete(VALUE ary, VALUE item)
}
VALUE
-rb_ary_delete_at(VALUE ary, long pos)
+rb_ary_delete_at(ary, pos)
+ VALUE ary;
+ long pos;
{
- long i, len = RARRAY_LEN(ary);
+ long i, len = RARRAY(ary)->len;
VALUE del;
if (pos >= len) return Qnil;
@@ -1744,10 +1887,11 @@ rb_ary_delete_at(VALUE ary, long pos)
}
rb_ary_modify(ary);
- del = RARRAY_PTR(ary)[pos];
- MEMMOVE(RARRAY_PTR(ary)+pos, RARRAY_PTR(ary)+pos+1, VALUE,
- RARRAY_LEN(ary)-pos-1);
- RARRAY(ary)->len--;
+ del = RARRAY(ary)->ptr[pos];
+ for (i = pos + 1; i < len; i++, pos++) {
+ RARRAY(ary)->ptr[pos] = RARRAY(ary)->ptr[i];
+ }
+ RARRAY(ary)->len = pos;
return del;
}
@@ -1767,7 +1911,8 @@ rb_ary_delete_at(VALUE ary, long pos)
*/
static VALUE
-rb_ary_delete_at_m(VALUE ary, VALUE pos)
+rb_ary_delete_at_m(ary, pos)
+ VALUE ary, pos;
{
return rb_ary_delete_at(ary, NUM2LONG(pos));
}
@@ -1798,7 +1943,10 @@ rb_ary_delete_at_m(VALUE ary, VALUE pos)
*/
static VALUE
-rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary)
+rb_ary_slice_bang(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
VALUE arg1, arg2;
long pos, len;
@@ -1808,14 +1956,14 @@ rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary)
len = NUM2LONG(arg2);
delete_pos_len:
if (pos < 0) {
- pos = RARRAY_LEN(ary) + pos;
+ pos = RARRAY(ary)->len + pos;
}
arg2 = rb_ary_subseq(ary, pos, len);
- rb_ary_splice(ary, pos, len, Qundef); /* Qnil/rb_ary_new2(0) */
+ rb_ary_splice(ary, pos, len, Qnil); /* Qnil/rb_ary_new2(0) */
return arg2;
}
- if (!FIXNUM_P(arg1) && rb_range_beg_len(arg1, &pos, &len, RARRAY_LEN(ary), 1)) {
+ if (!FIXNUM_P(arg1) && rb_range_beg_len(arg1, &pos, &len, RARRAY(ary)->len, 1)) {
goto delete_pos_len;
}
@@ -1833,22 +1981,22 @@ rb_ary_slice_bang(int argc, VALUE *argv, VALUE ary)
*/
static VALUE
-rb_ary_reject_bang(VALUE ary)
+rb_ary_reject_bang(ary)
+ VALUE ary;
{
long i1, i2;
- RETURN_ENUMERATOR(ary, 0, 0);
rb_ary_modify(ary);
- for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
- VALUE v = RARRAY_PTR(ary)[i1];
+ for (i1 = i2 = 0; i1 < RARRAY(ary)->len; i1++) {
+ VALUE v = RARRAY(ary)->ptr[i1];
if (RTEST(rb_yield(v))) continue;
if (i1 != i2) {
rb_ary_store(ary, i2, v);
}
i2++;
}
- if (RARRAY_LEN(ary) == i2) return Qnil;
- if (i2 < RARRAY_LEN(ary))
+ if (RARRAY(ary)->len == i2) return Qnil;
+ if (i2 < RARRAY(ary)->len)
RARRAY(ary)->len = i2;
return ary;
@@ -1863,9 +2011,9 @@ rb_ary_reject_bang(VALUE ary)
*/
static VALUE
-rb_ary_reject(VALUE ary)
+rb_ary_reject(ary)
+ VALUE ary;
{
- RETURN_ENUMERATOR(ary, 0, 0);
ary = rb_ary_dup(ary);
rb_ary_reject_bang(ary);
return ary;
@@ -1883,7 +2031,8 @@ rb_ary_reject(VALUE ary)
*/
static VALUE
-rb_ary_delete_if(VALUE ary)
+rb_ary_delete_if(ary)
+ VALUE ary;
{
rb_ary_reject_bang(ary);
return ary;
@@ -1912,17 +2061,20 @@ rb_ary_delete_if(VALUE ary)
*/
static VALUE
-rb_ary_zip(int argc, VALUE *argv, VALUE ary)
+rb_ary_zip(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
int i, j;
long len;
VALUE result;
for (i=0; i<argc; i++) {
- argv[i] = to_a(argv[i]);
+ argv[i] = to_ary(argv[i]);
}
if (rb_block_given_p()) {
- for (i=0; i<RARRAY_LEN(ary); i++) {
+ for (i=0; i<RARRAY(ary)->len; i++) {
VALUE tmp = rb_ary_new2(argc+1);
rb_ary_push(tmp, rb_ary_elt(ary, i));
@@ -1933,7 +2085,7 @@ rb_ary_zip(int argc, VALUE *argv, VALUE ary)
}
return Qnil;
}
- len = RARRAY_LEN(ary);
+ len = RARRAY(ary)->len;
result = rb_ary_new2(len);
for (i=0; i<len; i++) {
VALUE tmp = rb_ary_new2(argc+1);
@@ -1959,25 +2111,26 @@ rb_ary_zip(int argc, VALUE *argv, VALUE ary)
*/
static VALUE
-rb_ary_transpose(VALUE ary)
+rb_ary_transpose(ary)
+ VALUE ary;
{
long elen = -1, alen, i, j;
VALUE tmp, result = 0;
- alen = RARRAY_LEN(ary);
+ alen = RARRAY(ary)->len;
if (alen == 0) return rb_ary_dup(ary);
for (i=0; i<alen; i++) {
tmp = to_ary(rb_ary_elt(ary, i));
if (elen < 0) { /* first element */
- elen = RARRAY_LEN(tmp);
+ elen = RARRAY(tmp)->len;
result = rb_ary_new2(elen);
for (j=0; j<elen; j++) {
rb_ary_store(result, j, rb_ary_new2(alen));
}
}
- else if (elen != RARRAY_LEN(tmp)) {
- rb_raise(rb_eIndexError, "element size differs (%ld should be %ld)",
- RARRAY_LEN(tmp), elen);
+ else if (elen != RARRAY(tmp)->len) {
+ rb_raise(rb_eIndexError, "element size differs (%d should be %d)",
+ RARRAY(tmp)->len, elen);
}
for (j=0; j<elen; j++) {
rb_ary_store(rb_ary_elt(result, j), i, rb_ary_elt(tmp, j));
@@ -1999,19 +2152,19 @@ rb_ary_transpose(VALUE ary)
*/
static VALUE
-rb_ary_replace(VALUE copy, VALUE orig)
+rb_ary_replace(copy, orig)
+ VALUE copy, orig;
{
VALUE shared;
- VALUE *ptr;
rb_ary_modify(copy);
orig = to_ary(orig);
if (copy == orig) return copy;
shared = ary_make_shared(orig);
- ptr = RARRAY(copy)->ptr;
- xfree(ptr);
- RARRAY(copy)->ptr = RARRAY(shared)->ptr;
- RARRAY(copy)->len = RARRAY(shared)->len;
+ if (RARRAY(copy)->ptr && !FL_TEST(copy, ELTS_SHARED))
+ free(RARRAY(copy)->ptr);
+ RARRAY(copy)->ptr = RARRAY(orig)->ptr;
+ RARRAY(copy)->len = RARRAY(orig)->len;
RARRAY(copy)->aux.shared = shared;
FL_SET(copy, ELTS_SHARED);
@@ -2029,12 +2182,14 @@ rb_ary_replace(VALUE copy, VALUE orig)
*/
VALUE
-rb_ary_clear(VALUE ary)
+rb_ary_clear(ary)
+ VALUE ary;
{
rb_ary_modify(ary);
RARRAY(ary)->len = 0;
- if (ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) {
- RESIZE_CAPA(ary, ARY_DEFAULT_SIZE * 2);
+ if (ARY_DEFAULT_SIZE * 2 < RARRAY(ary)->aux.capa) {
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, ARY_DEFAULT_SIZE * 2);
+ RARRAY(ary)->aux.capa = ARY_DEFAULT_SIZE * 2;
}
return ary;
}
@@ -2064,7 +2219,10 @@ rb_ary_clear(VALUE ary)
*/
static VALUE
-rb_ary_fill(int argc, VALUE *argv, VALUE ary)
+rb_ary_fill(argc, argv, ary)
+ int argc;
+ VALUE *argv;
+ VALUE ary;
{
VALUE item, arg1, arg2;
long beg = 0, end = 0, len = 0;
@@ -2082,29 +2240,30 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)
switch (argc) {
case 1:
beg = 0;
- len = RARRAY_LEN(ary);
+ len = RARRAY(ary)->len;
break;
case 2:
- if (rb_range_beg_len(arg1, &beg, &len, RARRAY_LEN(ary), 1)) {
+ if (rb_range_beg_len(arg1, &beg, &len, RARRAY(ary)->len, 1)) {
break;
}
/* fall through */
case 3:
beg = NIL_P(arg1) ? 0 : NUM2LONG(arg1);
if (beg < 0) {
- beg = RARRAY_LEN(ary) + beg;
+ beg = RARRAY(ary)->len + beg;
if (beg < 0) beg = 0;
}
- len = NIL_P(arg2) ? RARRAY_LEN(ary) - beg : NUM2LONG(arg2);
+ len = NIL_P(arg2) ? RARRAY(ary)->len - beg : NUM2LONG(arg2);
break;
}
rb_ary_modify(ary);
end = beg + len;
- if (end > RARRAY_LEN(ary)) {
- if (end >= ARY_CAPA(ary)) {
- RESIZE_CAPA(ary, end);
+ if (end > RARRAY(ary)->len) {
+ if (end >= RARRAY(ary)->aux.capa) {
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, end);
+ RARRAY(ary)->aux.capa = end;
}
- rb_mem_clear(RARRAY_PTR(ary) + RARRAY_LEN(ary), end - RARRAY_LEN(ary));
+ rb_mem_clear(RARRAY(ary)->ptr + RARRAY(ary)->len, end - RARRAY(ary)->len);
RARRAY(ary)->len = end;
}
@@ -2114,12 +2273,12 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)
for (i=beg; i<end; i++) {
v = rb_yield(LONG2NUM(i));
- if (i>=RARRAY_LEN(ary)) break;
- RARRAY_PTR(ary)[i] = v;
+ if (i>=RARRAY(ary)->len) break;
+ RARRAY(ary)->ptr[i] = v;
}
}
else {
- p = RARRAY_PTR(ary) + beg;
+ p = RARRAY(ary)->ptr + beg;
pend = p + len;
while (p < pend) {
*p++ = item;
@@ -2139,16 +2298,17 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)
*/
VALUE
-rb_ary_plus(VALUE x, VALUE y)
+rb_ary_plus(x, y)
+ VALUE x, y;
{
VALUE z;
long len;
y = to_ary(y);
- len = RARRAY_LEN(x) + RARRAY_LEN(y);
+ len = RARRAY(x)->len + RARRAY(y)->len;
z = rb_ary_new2(len);
- MEMCPY(RARRAY_PTR(z), RARRAY_PTR(x), VALUE, RARRAY_LEN(x));
- MEMCPY(RARRAY_PTR(z) + RARRAY_LEN(x), RARRAY_PTR(y), VALUE, RARRAY_LEN(y));
+ MEMCPY(RARRAY(z)->ptr, RARRAY(x)->ptr, VALUE, RARRAY(x)->len);
+ MEMCPY(RARRAY(z)->ptr + RARRAY(x)->len, RARRAY(y)->ptr, VALUE, RARRAY(y)->len);
RARRAY(z)->len = len;
return z;
}
@@ -2164,11 +2324,12 @@ rb_ary_plus(VALUE x, VALUE y)
VALUE
-rb_ary_concat(VALUE x, VALUE y)
+rb_ary_concat(x, y)
+ VALUE x, y;
{
y = to_ary(y);
- if (RARRAY_LEN(y) > 0) {
- rb_ary_splice(x, RARRAY_LEN(x), 0, y);
+ if (RARRAY(y)->len > 0) {
+ rb_ary_splice(x, RARRAY(x)->len, 0, y);
}
return x;
}
@@ -2190,7 +2351,8 @@ rb_ary_concat(VALUE x, VALUE y)
*/
static VALUE
-rb_ary_times(VALUE ary, VALUE times)
+rb_ary_times(ary, times)
+ VALUE ary, times;
{
VALUE ary2, tmp;
long i, len;
@@ -2205,16 +2367,16 @@ rb_ary_times(VALUE ary, VALUE times)
if (len < 0) {
rb_raise(rb_eArgError, "negative argument");
}
- if (LONG_MAX/len < RARRAY_LEN(ary)) {
+ if (LONG_MAX/len < RARRAY(ary)->len) {
rb_raise(rb_eArgError, "argument too big");
}
- len *= RARRAY_LEN(ary);
+ len *= RARRAY(ary)->len;
ary2 = ary_new(rb_obj_class(ary), len);
RARRAY(ary2)->len = len;
- for (i=0; i<len; i+=RARRAY_LEN(ary)) {
- MEMCPY(RARRAY_PTR(ary2)+i, RARRAY_PTR(ary), VALUE, RARRAY_LEN(ary));
+ for (i=0; i<len; i+=RARRAY(ary)->len) {
+ MEMCPY(RARRAY(ary2)->ptr+i, RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
}
OBJ_INFECT(ary2, ary);
@@ -2242,16 +2404,17 @@ rb_ary_times(VALUE ary, VALUE times)
*/
VALUE
-rb_ary_assoc(VALUE ary, VALUE key)
+rb_ary_assoc(ary, key)
+ VALUE ary, key;
{
long i;
VALUE v;
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- v = RARRAY_PTR(ary)[i];
+ for (i = 0; i < RARRAY(ary)->len; ++i) {
+ v = RARRAY(ary)->ptr[i];
if (TYPE(v) == T_ARRAY &&
- RARRAY_LEN(v) > 0 &&
- rb_equal(RARRAY_PTR(v)[0], key))
+ RARRAY(v)->len > 0 &&
+ rb_equal(RARRAY(v)->ptr[0], key))
return v;
}
return Qnil;
@@ -2272,16 +2435,17 @@ rb_ary_assoc(VALUE ary, VALUE key)
*/
VALUE
-rb_ary_rassoc(VALUE ary, VALUE value)
+rb_ary_rassoc(ary, value)
+ VALUE ary, value;
{
long i;
VALUE v;
- for (i = 0; i < RARRAY_LEN(ary); ++i) {
- v = RARRAY_PTR(ary)[i];
+ for (i = 0; i < RARRAY(ary)->len; ++i) {
+ v = RARRAY(ary)->ptr[i];
if (TYPE(v) == T_ARRAY &&
- RARRAY_LEN(v) > 1 &&
- rb_equal(RARRAY_PTR(v)[1], value))
+ RARRAY(v)->len > 1 &&
+ rb_equal(RARRAY(v)->ptr[1], value))
return v;
}
return Qnil;
@@ -2302,7 +2466,8 @@ rb_ary_rassoc(VALUE ary, VALUE value)
*/
static VALUE
-rb_ary_equal(VALUE ary1, VALUE ary2)
+rb_ary_equal(ary1, ary2)
+ VALUE ary1, ary2;
{
long i;
@@ -2313,8 +2478,8 @@ rb_ary_equal(VALUE ary1, VALUE ary2)
}
return rb_equal(ary2, ary1);
}
- if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return Qfalse;
- for (i=0; i<RARRAY_LEN(ary1); i++) {
+ if (RARRAY(ary1)->len != RARRAY(ary2)->len) return Qfalse;
+ for (i=0; i<RARRAY(ary1)->len; i++) {
if (!rb_equal(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
return Qfalse;
}
@@ -2330,38 +2495,21 @@ rb_ary_equal(VALUE ary1, VALUE ary2)
*/
static VALUE
-rb_ary_eql(VALUE ary1, VALUE ary2)
+rb_ary_eql(ary1, ary2)
+ VALUE ary1, ary2;
{
long i;
if (ary1 == ary2) return Qtrue;
if (TYPE(ary2) != T_ARRAY) return Qfalse;
- if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return Qfalse;
- for (i=0; i<RARRAY_LEN(ary1); i++) {
+ if (RARRAY(ary1)->len != RARRAY(ary2)->len) return Qfalse;
+ for (i=0; i<RARRAY(ary1)->len; i++) {
if (!rb_eql(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
return Qfalse;
}
return Qtrue;
}
-static VALUE
-recursive_hash(VALUE ary, VALUE dummy, int recur)
-{
- long i, h;
- VALUE n;
-
- if (recur) {
- return LONG2FIX(0);
- }
- h = RARRAY_LEN(ary);
- for (i=0; i<RARRAY_LEN(ary); i++) {
- h = (h << 1) | (h<0 ? 1 : 0);
- n = rb_hash(RARRAY_PTR(ary)[i]);
- h ^= NUM2LONG(n);
- }
- return LONG2FIX(h);
-}
-
/*
* call-seq:
* array.hash -> fixnum
@@ -2371,9 +2519,19 @@ recursive_hash(VALUE ary, VALUE dummy, int recur)
*/
static VALUE
-rb_ary_hash(VALUE ary)
+rb_ary_hash(ary)
+ VALUE ary;
{
- return rb_exec_recursive(recursive_hash, ary, 0);
+ long i, h;
+ VALUE n;
+
+ h = RARRAY(ary)->len;
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ h = (h << 1) | (h<0 ? 1 : 0);
+ n = rb_hash(RARRAY(ary)->ptr[i]);
+ h ^= NUM2LONG(n);
+ }
+ return LONG2FIX(h);
}
/*
@@ -2390,12 +2548,14 @@ rb_ary_hash(VALUE ary)
*/
VALUE
-rb_ary_includes(VALUE ary, VALUE item)
+rb_ary_includes(ary, item)
+ VALUE ary;
+ VALUE item;
{
long i;
- for (i=0; i<RARRAY_LEN(ary); i++) {
- if (rb_equal(RARRAY_PTR(ary)[i], item)) {
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ if (rb_equal(RARRAY(ary)->ptr[i], item)) {
return Qtrue;
}
}
@@ -2424,14 +2584,15 @@ rb_ary_includes(VALUE ary, VALUE item)
*/
VALUE
-rb_ary_cmp(VALUE ary1, VALUE ary2)
+rb_ary_cmp(ary1, ary2)
+ VALUE ary1, ary2;
{
long i, len;
ary2 = to_ary(ary2);
- len = RARRAY_LEN(ary1);
- if (len > RARRAY_LEN(ary2)) {
- len = RARRAY_LEN(ary2);
+ len = RARRAY(ary1)->len;
+ if (len > RARRAY(ary2)->len) {
+ len = RARRAY(ary2)->len;
}
for (i=0; i<len; i++) {
VALUE v = rb_funcall(rb_ary_elt(ary1, i), id_cmp, 1, rb_ary_elt(ary2, i));
@@ -2439,24 +2600,25 @@ rb_ary_cmp(VALUE ary1, VALUE ary2)
return v;
}
}
- len = RARRAY_LEN(ary1) - RARRAY_LEN(ary2);
+ len = RARRAY(ary1)->len - RARRAY(ary2)->len;
if (len == 0) return INT2FIX(0);
if (len > 0) return INT2FIX(1);
return INT2FIX(-1);
}
static VALUE
-ary_make_hash(VALUE ary1, VALUE ary2)
+ary_make_hash(ary1, ary2)
+ VALUE ary1, ary2;
{
VALUE hash = rb_hash_new();
long i;
- for (i=0; i<RARRAY_LEN(ary1); i++) {
- rb_hash_aset(hash, RARRAY_PTR(ary1)[i], Qtrue);
+ for (i=0; i<RARRAY(ary1)->len; i++) {
+ rb_hash_aset(hash, RARRAY(ary1)->ptr[i], Qtrue);
}
if (ary2) {
- for (i=0; i<RARRAY_LEN(ary2); i++) {
- rb_hash_aset(hash, RARRAY_PTR(ary2)[i], Qtrue);
+ for (i=0; i<RARRAY(ary2)->len; i++) {
+ rb_hash_aset(hash, RARRAY(ary2)->ptr[i], Qtrue);
}
}
return hash;
@@ -2475,7 +2637,8 @@ ary_make_hash(VALUE ary1, VALUE ary2)
*/
static VALUE
-rb_ary_diff(VALUE ary1, VALUE ary2)
+rb_ary_diff(ary1, ary2)
+ VALUE ary1, ary2;
{
VALUE ary3;
volatile VALUE hash;
@@ -2484,8 +2647,8 @@ rb_ary_diff(VALUE ary1, VALUE ary2)
hash = ary_make_hash(to_ary(ary2), 0);
ary3 = rb_ary_new();
- for (i=0; i<RARRAY_LEN(ary1); i++) {
- if (st_lookup(RHASH(hash)->tbl, RARRAY_PTR(ary1)[i], 0)) continue;
+ for (i=0; i<RARRAY(ary1)->len; i++) {
+ if (st_lookup(RHASH(hash)->tbl, RARRAY(ary1)->ptr[i], 0)) continue;
rb_ary_push(ary3, rb_ary_elt(ary1, i));
}
return ary3;
@@ -2503,17 +2666,18 @@ rb_ary_diff(VALUE ary1, VALUE ary2)
static VALUE
-rb_ary_and(VALUE ary1, VALUE ary2)
+rb_ary_and(ary1, ary2)
+ VALUE ary1, ary2;
{
VALUE hash, ary3, v, vv;
long i;
ary2 = to_ary(ary2);
- ary3 = rb_ary_new2(RARRAY_LEN(ary1) < RARRAY_LEN(ary2) ?
- RARRAY_LEN(ary1) : RARRAY_LEN(ary2));
+ ary3 = rb_ary_new2(RARRAY(ary1)->len < RARRAY(ary2)->len ?
+ RARRAY(ary1)->len : RARRAY(ary2)->len);
hash = ary_make_hash(ary2, 0);
- for (i=0; i<RARRAY_LEN(ary1); i++) {
+ for (i=0; i<RARRAY(ary1)->len; i++) {
v = vv = rb_ary_elt(ary1, i);
if (st_delete(RHASH(hash)->tbl, (st_data_t*)&vv, 0)) {
rb_ary_push(ary3, v);
@@ -2535,23 +2699,24 @@ rb_ary_and(VALUE ary1, VALUE ary2)
*/
static VALUE
-rb_ary_or(VALUE ary1, VALUE ary2)
+rb_ary_or(ary1, ary2)
+ VALUE ary1, ary2;
{
VALUE hash, ary3;
VALUE v, vv;
long i;
ary2 = to_ary(ary2);
- ary3 = rb_ary_new2(RARRAY_LEN(ary1)+RARRAY_LEN(ary2));
+ ary3 = rb_ary_new2(RARRAY(ary1)->len+RARRAY(ary2)->len);
hash = ary_make_hash(ary1, ary2);
- for (i=0; i<RARRAY_LEN(ary1); i++) {
+ for (i=0; i<RARRAY(ary1)->len; i++) {
v = vv = rb_ary_elt(ary1, i);
if (st_delete(RHASH(hash)->tbl, (st_data_t*)&vv, 0)) {
rb_ary_push(ary3, v);
}
}
- for (i=0; i<RARRAY_LEN(ary2); i++) {
+ for (i=0; i<RARRAY(ary2)->len; i++) {
v = vv = rb_ary_elt(ary2, i);
if (st_delete(RHASH(hash)->tbl, (st_data_t*)&vv, 0)) {
rb_ary_push(ary3, v);
@@ -2575,17 +2740,18 @@ rb_ary_or(VALUE ary1, VALUE ary2)
*/
static VALUE
-rb_ary_uniq_bang(VALUE ary)
+rb_ary_uniq_bang(ary)
+ VALUE ary;
{
VALUE hash, v, vv;
long i, j;
hash = ary_make_hash(ary, 0);
- if (RARRAY_LEN(ary) == RHASH(hash)->tbl->num_entries) {
+ if (RARRAY(ary)->len == RHASH(hash)->tbl->num_entries) {
return Qnil;
}
- for (i=j=0; i<RARRAY_LEN(ary); i++) {
+ for (i=j=0; i<RARRAY(ary)->len; i++) {
v = vv = rb_ary_elt(ary, i);
if (st_delete(RHASH(hash)->tbl, (st_data_t*)&vv, 0)) {
rb_ary_store(ary, j++, v);
@@ -2607,7 +2773,8 @@ rb_ary_uniq_bang(VALUE ary)
*/
static VALUE
-rb_ary_uniq(VALUE ary)
+rb_ary_uniq(ary)
+ VALUE ary;
{
ary = rb_ary_dup(ary);
rb_ary_uniq_bang(ary);
@@ -2626,25 +2793,24 @@ rb_ary_uniq(VALUE ary)
*/
static VALUE
-rb_ary_compact_bang(VALUE ary)
+rb_ary_compact_bang(ary)
+ VALUE ary;
{
VALUE *p, *t, *end;
- long n;
rb_ary_modify(ary);
- p = t = RARRAY_PTR(ary);
- end = p + RARRAY_LEN(ary);
+ p = t = RARRAY(ary)->ptr;
+ end = p + RARRAY(ary)->len;
while (t < end) {
if (NIL_P(*t)) t++;
else *p++ = *t++;
}
- if (RARRAY_LEN(ary) == (p - RARRAY_PTR(ary))) {
+ if (RARRAY(ary)->len == (p - RARRAY(ary)->ptr)) {
return Qnil;
}
- n = p - RARRAY_PTR(ary);
- RESIZE_CAPA(ary, n);
- RARRAY(ary)->len = n;
+ RARRAY(ary)->len = RARRAY(ary)->aux.capa = (p - RARRAY(ary)->ptr);
+ REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
return ary;
}
@@ -2660,7 +2826,8 @@ rb_ary_compact_bang(VALUE ary)
*/
static VALUE
-rb_ary_compact(VALUE ary)
+rb_ary_compact(ary)
+ VALUE ary;
{
ary = rb_ary_dup(ary);
rb_ary_compact_bang(ary);
@@ -2670,68 +2837,55 @@ rb_ary_compact(VALUE ary)
/*
* call-seq:
* array.nitems -> int
- * array.nitems { |item| block } -> int
*
* Returns the number of non-<code>nil</code> elements in _self_.
- * If a block is given, the elements yielding a true value are
- * counted.
- *
* May be zero.
*
* [ 1, nil, 3, nil, 5 ].nitems #=> 3
- * [5,6,7,8,9].nitems { |x| x % 2 != 0 } #=> 3
*/
static VALUE
-rb_ary_nitems(VALUE ary)
+rb_ary_nitems(ary)
+ VALUE ary;
{
long n = 0;
-
- if (rb_block_given_p()) {
- long i;
+ VALUE *p, *pend;
- for (i=0; i<RARRAY_LEN(ary); i++) {
- VALUE v = RARRAY_PTR(ary)[i];
- if (RTEST(rb_yield(v))) n++;
- }
- }
- else {
- VALUE *p = RARRAY_PTR(ary);
- VALUE *pend = p + RARRAY_LEN(ary);
+ p = RARRAY(ary)->ptr;
+ pend = p + RARRAY(ary)->len;
- while (p < pend) {
- if (!NIL_P(*p)) n++;
- p++;
- }
+ while (p < pend) {
+ if (!NIL_P(*p)) n++;
+ p++;
}
return LONG2NUM(n);
}
static long
-flatten(VALUE ary, long idx, VALUE ary2, VALUE memo, int level)
+flatten(ary, idx, ary2, memo)
+ VALUE ary;
+ long idx;
+ VALUE ary2, memo;
{
VALUE id;
long i = idx;
- long n, lim = idx + RARRAY_LEN(ary2);
+ long n, lim = idx + RARRAY(ary2)->len;
- level--;
id = rb_obj_id(ary2);
if (rb_ary_includes(memo, id)) {
rb_raise(rb_eArgError, "tried to flatten recursive array");
}
rb_ary_push(memo, id);
rb_ary_splice(ary, idx, 1, ary2);
- if (level != 0) {
- while (i < lim) {
- VALUE tmp;
-
- tmp = rb_check_array_type(rb_ary_elt(ary, i));
- if (!NIL_P(tmp)) {
- n = flatten(ary, i, tmp, memo, level);
- i += n; lim += n;
- }
- i++;
+ while (i < lim) {
+ VALUE tmp;
+
+ tmp = rb_check_array_type(rb_ary_elt(ary, i));
+ if (!NIL_P(tmp)) {
+ n = flatten(ary, i, tmp, memo);
+ i += n; lim += n;
}
+ i++;
}
rb_ary_pop(memo);
@@ -2740,36 +2894,28 @@ flatten(VALUE ary, long idx, VALUE ary2, VALUE memo, int level)
/*
* call-seq:
- * array.flatten! -> array or nil
- * array.flatten!(level) -> array or nil
+ * array.flatten! -> array or nil
*
* Flattens _self_ in place.
* Returns <code>nil</code> if no modifications were made (i.e.,
- * <i>array</i> contains no subarrays.) If the optional <i>level</i>
- * argument determins the level of recursion to flatten.
+ * <i>array</i> contains no subarrays.)
*
* a = [ 1, 2, [3, [4, 5] ] ]
- * a.flatten! #=> [1, 2, 3, 4, 5]
- * a.flatten! #=> nil
- * a #=> [1, 2, 3, 4, 5]
- * a = [ 1, 2, [3, [4, 5] ] ]
- * a.flatten!(1) #=> [1, 2, 3, [4, 5]]
+ * a.flatten! #=> [1, 2, 3, 4, 5]
+ * a.flatten! #=> nil
+ * a #=> [1, 2, 3, 4, 5]
*/
static VALUE
-rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
+rb_ary_flatten_bang(ary)
+ VALUE ary;
{
long i = 0;
int mod = 0;
- int level = -1;
VALUE memo = Qnil;
- VALUE lv;
- rb_scan_args(argc, argv, "01", &lv);
- if (!NIL_P(lv)) level = FIX2INT(lv);
- if (level == 0) return ary;
- while (i<RARRAY_LEN(ary)) {
- VALUE ary2 = RARRAY_PTR(ary)[i];
+ while (i<RARRAY(ary)->len) {
+ VALUE ary2 = RARRAY(ary)->ptr[i];
VALUE tmp;
tmp = rb_check_array_type(ary2);
@@ -2777,7 +2923,7 @@ rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
if (NIL_P(memo)) {
memo = rb_ary_new();
}
- i += flatten(ary, i, tmp, memo, level);
+ i += flatten(ary, i, tmp, memo);
mod = 1;
}
i++;
@@ -2789,67 +2935,23 @@ rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
* array.flatten -> an_array
- * array.flatten(level) -> an_array
*
* Returns a new array that is a one-dimensional flattening of this
* array (recursively). That is, for every element that is an array,
- * extract its elements into the new array. If the optional
- * <i>level</i> argument determins the level of recursion to flatten.
+ * extract its elements into the new array.
*
* s = [ 1, 2, 3 ] #=> [1, 2, 3]
* t = [ 4, 5, 6, [7, 8] ] #=> [4, 5, 6, [7, 8]]
* a = [ s, t, 9, 10 ] #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
* a.flatten #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10
- * a = [ 1, 2, [3, [4, 5] ] ]
- * a.flatten(1) #=> [1, 2, 3, [4, 5]]
*/
static VALUE
-rb_ary_flatten(int argc, VALUE *argv, VALUE ary)
-{
- ary = rb_ary_dup(ary);
- rb_ary_flatten_bang(argc, argv, ary);
- return ary;
-}
-
-/*
- * call-seq:
- * array.shuffle! -> array or
- *
- * Shuffles elements in _self_ in place.
- */
-
-
-static VALUE
-rb_ary_shuffle_bang(VALUE ary)
-{
- long i = RARRAY_LEN(ary);
-
- while (i) {
- long j = genrand_real()*i;
- VALUE tmp = RARRAY_PTR(ary)[--i];
- RARRAY_PTR(ary)[i] = RARRAY_PTR(ary)[j];
- RARRAY_PTR(ary)[j] = tmp;
- }
- return ary;
-}
-
-
-/*
- * call-seq:
- * array.shuffle -> an_array
- *
- * Returns a new array with elements of this array shuffled.
- *
- * a = [ 1, 2, 3 ] #=> [1, 2, 3]
- * a.shuffle #=> [2, 3, 1]
- */
-
-static VALUE
-rb_ary_shuffle(VALUE ary)
+rb_ary_flatten(ary)
+ VALUE ary;
{
ary = rb_ary_dup(ary);
- rb_ary_shuffle_bang(ary);
+ rb_ary_flatten_bang(ary);
return ary;
}
@@ -2862,7 +2964,7 @@ rb_ary_shuffle(VALUE ary)
*/
void
-Init_Array(void)
+Init_Array()
{
rb_cArray = rb_define_class("Array", rb_cObject);
rb_include_module(rb_cArray, rb_mEnumerable);
@@ -2872,10 +2974,9 @@ Init_Array(void)
rb_define_method(rb_cArray, "initialize", rb_ary_initialize, -1);
rb_define_method(rb_cArray, "initialize_copy", rb_ary_replace, 1);
- rb_define_method(rb_cArray, "to_s", rb_ary_inspect, 0);
+ rb_define_method(rb_cArray, "to_s", rb_ary_to_s, 0);
rb_define_method(rb_cArray, "inspect", rb_ary_inspect, 0);
rb_define_method(rb_cArray, "to_a", rb_ary_to_a, 0);
- rb_define_method(rb_cArray, "to_splat", rb_ary_to_a, 0);
rb_define_method(rb_cArray, "to_ary", rb_ary_to_ary_m, 0);
rb_define_method(rb_cArray, "frozen?", rb_ary_frozen_p, 0);
@@ -2892,8 +2993,8 @@ Init_Array(void)
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_m, -1);
- rb_define_method(rb_cArray, "pop", rb_ary_pop_m, -1);
- rb_define_method(rb_cArray, "shift", rb_ary_shift_m, -1);
+ rb_define_method(rb_cArray, "pop", rb_ary_pop, 0);
+ rb_define_method(rb_cArray, "shift", rb_ary_shift, 0);
rb_define_method(rb_cArray, "unshift", rb_ary_unshift_m, -1);
rb_define_method(rb_cArray, "insert", rb_ary_insert, -1);
rb_define_method(rb_cArray, "each", rb_ary_each, 0);
@@ -2902,8 +3003,10 @@ Init_Array(void)
rb_define_method(rb_cArray, "length", rb_ary_length, 0);
rb_define_alias(rb_cArray, "size", "length");
rb_define_method(rb_cArray, "empty?", rb_ary_empty_p, 0);
- rb_define_method(rb_cArray, "index", rb_ary_index, -1);
- rb_define_method(rb_cArray, "rindex", rb_ary_rindex, -1);
+ rb_define_method(rb_cArray, "index", rb_ary_index, 1);
+ rb_define_method(rb_cArray, "rindex", rb_ary_rindex, 1);
+ rb_define_method(rb_cArray, "indexes", rb_ary_indexes, -1);
+ rb_define_method(rb_cArray, "indices", rb_ary_indexes, -1);
rb_define_method(rb_cArray, "join", rb_ary_join_m, -1);
rb_define_method(rb_cArray, "reverse", rb_ary_reverse_m, 0);
rb_define_method(rb_cArray, "reverse!", rb_ary_reverse_bang, 0);
@@ -2945,11 +3048,10 @@ Init_Array(void)
rb_define_method(rb_cArray, "uniq!", rb_ary_uniq_bang, 0);
rb_define_method(rb_cArray, "compact", rb_ary_compact, 0);
rb_define_method(rb_cArray, "compact!", rb_ary_compact_bang, 0);
- rb_define_method(rb_cArray, "flatten", rb_ary_flatten, -1);
- rb_define_method(rb_cArray, "flatten!", rb_ary_flatten_bang, -1);
+ rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
+ rb_define_method(rb_cArray, "flatten!", rb_ary_flatten_bang, 0);
rb_define_method(rb_cArray, "nitems", rb_ary_nitems, 0);
- rb_define_method(rb_cArray, "shuffle!", rb_ary_shuffle_bang, 0);
- rb_define_method(rb_cArray, "shuffle", rb_ary_shuffle, 0);
id_cmp = rb_intern("<=>");
+ inspect_key = rb_intern("__inspect_key__");
}
diff --git a/ascii.c b/ascii.c
deleted file mode 100644
index 64be21d7ff..0000000000
--- a/ascii.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/**********************************************************************
- ascii.c - Oniguruma (regular expression library)
-**********************************************************************/
-/*-
- * Copyright (c) 2002-2004 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "regenc.h"
-
-static int
-ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype)
-{
- if (code < 128)
- return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);
- else
- return FALSE;
-}
-
-OnigEncodingType OnigEncodingASCII = {
- onigenc_single_byte_mbc_enc_len,
- "US-ASCII", /* name */
- 1, /* max byte length */
- 1, /* min byte length */
- ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE,
- {
- (OnigCodePoint )'\\' /* esc */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
- },
- onigenc_is_mbc_newline_0x0a,
- onigenc_single_byte_mbc_to_code,
- onigenc_single_byte_code_to_mbclen,
- onigenc_single_byte_code_to_mbc,
- onigenc_ascii_mbc_to_normalize,
- onigenc_ascii_is_mbc_ambiguous,
- onigenc_ascii_get_all_pair_ambig_codes,
- onigenc_nothing_get_all_comp_ambig_codes,
- ascii_is_code_ctype,
- onigenc_not_support_get_ctype_code_range,
- onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match
-};
diff --git a/bcc32/Makefile.sub b/bcc32/Makefile.sub
index baff3e3947..07c6bc9975 100644
--- a/bcc32/Makefile.sub
+++ b/bcc32/Makefile.sub
@@ -49,8 +49,7 @@ CPP = cpp32
RC = brcc32
!endif
!ifndef YACC
-YACC = bison
-YFLAGS = -o y.tab.c
+YACC = byacc
!endif
!ifndef AR
AR = tlib
@@ -95,7 +94,7 @@ exec_prefix = $(prefix)
libdir = $(exec_prefix)/lib
!endif
!if !defined(datadir)
-datadir = $(prefix)/share
+datadir = /share
!endif
!ifndef EXTOUT
EXTOUT = .ext
@@ -110,16 +109,13 @@ TESTUI = console
TESTS =
!endif
!ifndef RDOCTARGET
-RDOCTARGET = install-doc
+RDOCTARGET = install-nodoc
!endif
OUTFLAG = -o
!ifndef CFLAGS
CFLAGS = -q -tWR -tWC $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG) -w- -wsus -wcpt -wdup -wext -wrng -wrpt -wzdi
!endif
-!ifndef CXXFLAGS
-CXXFLAGS = $(CFLAGS)
-!endif
!ifndef LDFLAGS
LDFLAGS = -S:$(STACK)
!endif
@@ -139,7 +135,7 @@ MISSING = acosh.obj crypt.obj erf.obj win32.obj
STACK = 0x2000000
!endif
-XCFLAGS = -DRUBY_EXPORT -I. -I$(srcdir) -I$(srcdir)missing
+XCFLAGS = -DRUBY_EXPORT -I. -I$(srcdir) -I$(srcdir)/missing
ARFLAGS = /a
LD = ilink32 -q -Gn
@@ -157,8 +153,8 @@ EXEEXT = .exe
PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
RUBYDEF = $(RUBY_SO_NAME).def
-MINIRUBY = .\miniruby$(EXEEXT) $(MINIRUBYOPT)
-RUNRUBY = .\ruby$(EXEEXT) "$(srcdir)runruby.rb" --extout="$(EXTOUT)" --
+MINIRUBY = .\miniruby$(EXEEXT)
+RUNRUBY = .\ruby$(EXEEXT) "$(srcdir)/runruby.rb" --extout="$(EXTOUT)" --
ORGLIBPATH = $(LIB)
@@ -173,13 +169,11 @@ PREP = miniruby$(EXEEXT)
OBJEXT = obj
-INSTALLED_LIST= .installed.list
-
WINMAINOBJ = winmain.$(OBJEXT)
MINIOBJS = dmydln.$(OBJEXT)
-.path.c = .;$(srcdir);$(srcdir)win32;$(srcdir)missing
-.path.h = .;$(srcdir);$(srcdir)win32;$(srcdir)missing
+.path.c = .;$(srcdir);$(srcdir)/win32;$(srcdir)/missing
+.path.h = .;$(srcdir);$(srcdir)/win32;$(srcdir)/missing
.path.y = $(srcdir)
.path. = $(srcdir)
@@ -187,14 +181,14 @@ MINIOBJS = dmydln.$(OBJEXT)
$(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) -c $(<:/=\)
.rc.res:
- $(RC) $(RFLAGS) -I. -I$(<D). $(iconinc) -I$(srcdir)win32 $(RFLAGS) -fo$@ $(<:/=\)
+ $(RC) $(RFLAGS) -I. -I$(<D). $(iconinc) -I$(srcdir)/win32 $(RFLAGS) -fo$@ $(<:/=\)
.y.c:
$(YACC) $(YFLAGS) $(<:\=/)
sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $(@F)
@del y.tab.c
-all: $(srcdir)bcc32/Makefile.sub $(srcdir)common.mk
+all: $(srcdir)/bcc32/Makefile.sub $(srcdir)/common.mk
ruby: $(PROGRAM)
rubyw: $(WPROGRAM)
@@ -209,21 +203,20 @@ config: config.status
config.status: $(CONFIG_H)
-$(CONFIG_H): $(MKFILES) $(srcdir)bcc32/Makefile.sub
- @$(srcdir:/=\)win32\ifchange.bat config.h &&|
+$(CONFIG_H): $(MKFILES) $(srcdir)/bcc32/Makefile.sub
+ @$(srcdir:/=\)\win32\ifchange.bat config.h &&|
\#define HAVE_SYS_TYPES_H 1
\#define HAVE_SYS_STAT_H 1
\#define HAVE_STDLIB_H 1
\#define HAVE_STRING_H 1
\#define HAVE_MEMORY_H 1
-\#define HAVE_LONG_LONG 1
\#define HAVE_OFF_T 1
\#define SIZEOF_INT 4
\#define SIZEOF_SHORT 2
\#define SIZEOF_LONG 4
\#define SIZEOF_LONG_LONG 0
\#define SIZEOF___INT64 8
-\#define SIZEOF_OFF_T 8
+\#define SIZEOF_OFF_T 4
\#define SIZEOF_VOIDP 4
\#define SIZEOF_FLOAT 4
\#define SIZEOF_DOUBLE 8
@@ -258,8 +251,6 @@ $(CONFIG_H): $(MKFILES) $(srcdir)bcc32/Makefile.sub
\#define HAVE_STRTOD 1
\#define HAVE_STRTOL 1
\#define HAVE_STRTOUL 1
-\#define HAVE_SNPRINTF 1
-\#define HAVE_VSNPRINTF 1
\#define HAVE_ISNAN 1
\#define HAVE_FINITE 1
\#define HAVE_HYPOT 1
@@ -267,9 +258,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)bcc32/Makefile.sub
\#define HAVE_WAITPID 1
\#define HAVE_FSYNC 1
\#define HAVE_GETCWD 1
-\#define HAVE_TRUNCATE 1
-\#define HAVE_FSEEKO 1
-\#define HAVE_FTELLO 1
+\#define HAVE_CHSIZE 1
\#define HAVE_TIMES 1
\#define HAVE_FCNTL 1
\#define HAVE_LINK 1
@@ -295,7 +284,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)bcc32/Makefile.sub
|
@exit > $@
-config.status: $(MKFILES) $(srcdir)bcc32/Makefile.sub $(srcdir)common.mk
+config.status: $(MKFILES) $(srcdir)/bcc32/Makefile.sub $(srcdir)/common.mk
@echo Creating $@
@type > $@ &&|
# Generated automatically by Makefile.sub.
@@ -309,7 +298,7 @@ s,@FFLAGS@,$(FFLAGS),;t t
s,@LDFLAGS@,,;t t
s,@LIBS@,$(LIBS),;t t
s,@exec_prefix@,$${prefix},;t t
-s,@prefix@,$(prefix),;t t
+s,@prefix@,,;t t
s,@program_transform_name@,s,,,,;t t
s,@bindir@,$${exec_prefix}/bin,;t t
s,@sbindir@,$${exec_prefix}/sbin,;t t
@@ -340,8 +329,6 @@ s,@target_vendor@,pc,;t t
s,@target_os@,$(OS),;t t
s,@CC@,$(CC),;t t
s,@CPP@,cpp32,;t t
-s,@CXX@,$$(CC),;t t
-s,@LD@,$(LD),;t t
s,@YACC@,$(YACC),;t t
s,@RANLIB@,,;t t
s,@AR@,$(AR),;t t
@@ -349,6 +336,9 @@ s,@ARFLAGS@,$(ARFLAGS) ,;t t
s,@LN_S@,$(LN_S),;t t
s,@SET_MAKE@,$(SET_MAKE),;t t
s,@CP@,copy > nul,;t t
+s,@INSTALL@,copy > nul,;t t
+s,@INSTALL_PROG@,$$(INSTALL),;t t
+s,@INSTALL_DATA@,$$(INSTALL),;t t
s,@LIBOBJS@, acosh.obj crypt.obj erf.obj win32.obj,;t t
s,@ALLOCA@,$(ALLOCA),;t t
s,@DEFAULT_KCODE@,$(DEFAULT_KCODE),;t t
@@ -399,7 +389,7 @@ s,@COMPILE_CXX@,$$(CXX) $$(INCFLAGS) $$(CXXFLAGS) $$(CPPFLAGS) -P -c $$(<:/=\),;
s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: {$$(topdir)}.%s{}.%s: {$$(hdrdir)}.%s{}.%s: .%s.%s:,;t t
s,@RULE_SUBST@,{.;$$(VPATH)}%s,;t t
s,@COMMON_LIBS@,m advapi32 avicap32 avifil32 cap comctl32 comdlg32 dlcapi gdi32 glu32 imagehlp imm32 inetmib1 kernel32 loadperf lsapi32 lz32 mapi32 mgmtapi mpr msacm32 msvfw32 nddeapi netapi32 ole32 oleaut32 oledlg olepro32 opengl32 pdh pkpd32 rasapi32 rasdlg rassapi rpcrt4 setupapi shell32 shfolder snmpapi sporder tapi32 url user32 vdmdbg version win32spl winmm wintrust wsock32,;t t
-s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN,;t t
+s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN;t t
s,@COMMON_HEADERS@,winsock2.h windows.h,;t t
s,@TRY_LINK@,$$(CC) -oconftest $$(INCFLAGS) -I$$(hdrdir) $$(CPPFLAGS) $$(CFLAGS) $$(LIBPATH) $$(LDFLAGS) $$(src) $$(LOCAL_LIBS) $$(LIBS),;t t
s,@EXPORT_PREFIX@,_,;t t
@@ -431,33 +421,23 @@ $(LIBRUBY_A): $(OBJS) $(DMYEXT)
$(LIBRUBY_SO): $(LIBRUBY_A) $(DLDOBJS) $(RUBYDEF) $(RUBY_SO_NAME).res
@echo $(DLDOBJS)
- @$(PRE_LIBRUBY_UPDATE)
$(LIBRUBY_LDSHARED) $(LIBRUBY_DLDFLAGS) $(DLDOBJS:/=\),$(LIBRUBY_SO),nul,$(LIBRUBY_A) $(LIBS),$(RUBYDEF),$(RUBY_SO_NAME).res
$(LIBRUBY): $(LIBRUBY_SO)
$(RUBYDEF): $(LIBRUBY_A) $(PREP)
- $(MINIRUBY) $(srcdir)bcc32/mkexports.rb -output=$@ -base=$(RUBY_SO_NAME) $(LIBRUBY_A)
+ $(MINIRUBY) $(srcdir)/bcc32/mkexports.rb -output=$@ -base=$(RUBY_SO_NAME) $(LIBRUBY_A)
$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
- @$(MINIRUBY) $(srcdir)win32/resource.rb \
+ @$(MINIRUBY) $(srcdir)/win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) \
-rubyw_name=$(RUBYW_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) \
- . $(icondirs) $(srcdir)win32
-
-post-install-bin::
- @$(NULLCMD)
-post-install-lib::
- @$(NULLCMD)
-post-install-ext-comm::
- @$(NULLCMD)
-post-install-ext-arch::
- @$(NULLCMD)
-post-install-man::
- @$(NULLCMD)
-post-install-doc::
- @$(NULLCMD)
+ . $(icondirs) $(srcdir)/win32
+
+post-install-ext::
+ $(MINIRUBY) -I$(srcdir)lib -rrbconfig -rfileutils \
+ -e "FileUtils.rm_f(Dir[ARGV[0]+Config::CONFIG['archdir']+'/**/*.tds'])" "$(DESTDIR:\=/)"
clean-local::
@$(RM) ext\extinit.c ext\extinit.$(OBJEXT) *.tds *.il? $(RUBY_SO_NAME).lib
@@ -472,7 +452,6 @@ ext/extinit.obj: ext/extinit.c $(SETUP)
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -o$@ -c ext/extinit.c
main.$(OBJEXT): win32.h
-ascii.$(OBJEXT): win32.h
array.$(OBJEXT): win32.h
bignum.$(OBJEXT): win32.h
class.$(OBJEXT): win32.h
@@ -481,7 +460,6 @@ dir.$(OBJEXT): dir.h win32.h
dln.$(OBJEXT): win32.h
enum.$(OBJEXT): win32.h
error.$(OBJEXT): win32.h
-euc_jp.$(OBJEXT): win32.h
eval.$(OBJEXT): win32.h
file.$(OBJEXT): win32.h
gc.$(OBJEXT): win32.h
@@ -499,21 +477,14 @@ prec.$(OBJEXT): win32.h
random.$(OBJEXT): win32.h
range.$(OBJEXT): win32.h
re.$(OBJEXT): win32.h
-regcomp.$(OBJEXT): win32.h
-regenc.$(OBJEXT): win32.h
-regerror.$(OBJEXT): win32.h
-regexec.$(OBJEXT): win32.h
-reggnu.$(OBJEXT): win32.h
-regparse.$(OBJEXT): win32.h
+regex.$(OBJEXT): win32.h
ruby.$(OBJEXT): win32.h
signal.$(OBJEXT): win32.h
-sjis.$(OBJEXT): win32.h
sprintf.$(OBJEXT): win32.h
st.$(OBJEXT): win32.h
string.$(OBJEXT): win32.h
struct.$(OBJEXT): win32.h
time.$(OBJEXT): win32.h
-utf8.$(OBJEXT): win32.h
util.$(OBJEXT): win32.h
variable.$(OBJEXT): win32.h
version.$(OBJEXT): win32.h
diff --git a/bcc32/README.bcc32 b/bcc32/README.bcc32
index fb19906c75..c27a1261f1 100644
--- a/bcc32/README.bcc32
+++ b/bcc32/README.bcc32
@@ -16,7 +16,7 @@
* ilink32
(3) If you want to build from CVS source, following commands are required.
- * bison ((<URL:http://gnuwin32.sourceforge.net/packages/bison.htm>))
+ * byacc ((<URL:http://gnuwin32.sourceforge.net/packages/byacc.htm>))
* sed ((<URL:http://gnuwin32.sourceforge.net/packages/sed.htm>))
(4) We strongly recommend to build ruby on C++Builder, to link following files.
@@ -30,12 +30,7 @@
== How to compile and install
(1) Execute bcc32\configure.bat on your build directory.
- ex. c:\src\ruby> bcc32\configure.bat
- You can specify the target platform as an argument.
- For example, run `((%configure i686-bccwin32%))'
- You can also specify the install directory.
- For example, run `((%configure --prefix=<install_directory>%))'
- Default of the install directory is /usr .
+ ex. c:\ruby-1.6.7>bcc32\configure.bat
(2) Change ((|RUBY_INSTALL_NAME|)) and ((|RUBY_SO_NAME|)) in (({Makefile}))
if you want to change the name of the executable files.
@@ -46,7 +41,7 @@
(4) Run `((%make test%))'
-(5) Run `((%make install%))'
+(5) Run `((%make DESTDIR=<install_directory> install%))'
This command will create following directories and install files onto them.
* <install_directory>\bin
@@ -59,7 +54,7 @@
* <install_directory>\lib\ruby\site_ruby\<MAJOR>.<MINOR>\<PLATFORM>
* <install_directory>\man\man1
If Ruby's version is `x.y.z', the ((|<MAJOR>|)) is `x' and the ((|<MINOR>|)) is `y'.
- The default ((|<PLATFORM>|)) is `(({i386-bccwin32}))'.
+ The ((|<PLATFORM>|)) is usually `(({i586-bccwin32}))'.
(6) Requires dynamic RTL (cc3250.dll on C++Builder5) and borlndmm.dll (If built with
usebormm.lib) to use installed binary. These files are ordinary in bcc32's bin
@@ -95,10 +90,10 @@ in Japanese, but you can download at least.
C:
cd \ruby
- bcc32\configure --prefix=/usr/local
+ bcc32\configure
make
make test
- make install
+ make DESTDIR=/usr/local install
* Build on the relative directory from the ruby source directory and CPU type
i386.
@@ -113,10 +108,10 @@ in Japanese, but you can download at least.
cd \ruby
mkdir bccwin32
cd bccwin32
- ..\bcc32\configure --prefix=/usr/local
+ ..\bcc32\configure target i386-bccwin32
make
make test
- make install
+ make DESTDIR=/usr/local install
* Build on the different drive.
@@ -127,10 +122,10 @@ in Japanese, but you can download at least.
D:
cd D:\build\ruby
- C:\src\ruby\bcc32\configure --prefix=C:/usr/local
+ C:\src\ruby\bcc32\configure
make
make test
- make install
+ make DESTDIR=C:/usr/local install
== Bugs
diff --git a/bcc32/configure.bat b/bcc32/configure.bat
index 6e3056ff38..123a3f23c8 100644..100755
--- a/bcc32/configure.bat
+++ b/bcc32/configure.bat
@@ -69,7 +69,7 @@ goto :loop
shift
goto :loop
:extout
- echo>> ~tmp~.mak -D"EXTOUT=%2" \
+ echo>> ~tmp~.mak "EXTOUT=%2" \
shift
shift
goto :loop
@@ -78,15 +78,15 @@ goto :loop
echo --help display this help
echo --srcdir=DIR find the sources in DIR [configure dir or `..']
echo Installation directories:
- echo --prefix=PREFIX install files in PREFIX [/usr]
+ echo --prefix=PREFIX install files in PREFIX (ignored currently)
echo System types:
echo --target=TARGET configure for TARGET [i386-bccwin32]
echo Optional Package:
echo --with-static-linked-ext link external modules statically
- echo --disable-install-doc do not install rdoc indexes during install
+ echo --enable-install-doc install rdoc indexes during install
del ~tmp~.mak
goto :exit
:end
-echo>> ~tmp~.mak -Dbcc32dir="$(@D)"
+echo>> ~tmp~.mak bcc32dir="$(@D)"
make -s -f ~tmp~.mak
:exit
diff --git a/bcc32/mkexports.rb b/bcc32/mkexports.rb
index 1b498f8515..e34b441e2f 100644
--- a/bcc32/mkexports.rb
+++ b/bcc32/mkexports.rb
@@ -1,24 +1,25 @@
#!./miniruby -s
-$:.unshift(File.expand_path("../..", __FILE__))
-require 'win32/mkexports'
-
-class Exports::Bcc < Exports
- Forwards = /^rb_w32_(\w+)/
-
- def forwarding(internal, export)
- internal[/\A_?/]+export
+SYM = {}
+STDIN.reopen(open("nul"))
+ARGV.each do |obj|
+ IO.foreach("|tdump -q -oiPUBDEF -oiPUBD32 #{obj.tr('/', '\\')}") do |l|
+ next unless /(?:PUBDEF|PUBD32)/ =~ l
+ SYM[$1] = true if /'(.*?)'/ =~ l
end
+end
- def each_export(objs)
- objs.each do |obj|
- opt = /\.(?:so|dll)\z/i =~ obj ? "-ee" : "-oiPUBDEF -oiPUBD32"
- IO.foreach("|tdump -q #{opt} #{obj.tr('/', '\\')} < nul") do |l|
- next unless /(?:PUBDEF|PUBD32|EXPORT)/ =~ l
- yield $1 if /'(.*?)'/ =~ l
- end
- end
- yield "_strcasecmp", "_stricmp"
- yield "_strncasecmp", "_strnicmp"
- end
+exports = []
+if $name
+ exports << "Name " + $name
+elsif $library
+ exports << "Library " + $library
+end
+exports << "Description " + $description.dump if $description
+exports << "EXPORTS" << SYM.keys.sort
+
+if $output
+ open($output, 'w') {|f| f.puts exports.join("\n")}
+else
+ puts exports.join("\n")
end
diff --git a/bcc32/setup.mak b/bcc32/setup.mak
index 8f73b4f9f7..efc15c3ea7 100644
--- a/bcc32/setup.mak
+++ b/bcc32/setup.mak
@@ -1,15 +1,15 @@
# -*- makefile -*-
!if "$(srcdir)" != ""
-bcc32dir = $(srcdir)bcc32/
+bcc32dir = $(srcdir)/bcc32
!elseif "$(bcc32dir)" == "bcc32/"
-srcdir = ./
+srcdir = .
!elseif "$(bcc32dir:/bcc32/=)/bcc32/" == "$(bcc32dir)"
-srcdir = $(bcc32dir:/bcc32/=/)
+srcdir = $(bcc32dir:/bcc32/=)
!else
-srcdir = $(bcc32dir)../
+srcdir = $(bcc32dir)/..
!endif
-!if "$(prefix)" == ""
+!ifndef prefix
prefix = /usr
!endif
OS = bccwin32
@@ -62,7 +62,7 @@ if exist usebormm.tds echo MEMLIB = usebormm.lib
@usebormm.bat >> $(MAKEFILE)
@del usebormm.*
- @cpp32 -I$(srcdir) -P- -DRUBY_EXTERN="//" -o$(MAKEFILE) > nul &&|
+ @cpp32 -I$(srcdir) -DRUBY_EXTERN="//" -P- -o$(MAKEFILE) > nul &&|
\#include "version.h"
MAJOR = RUBY_VERSION_MAJOR
MINOR = RUBY_VERSION_MINOR
@@ -122,12 +122,12 @@ $(BANG)endif
\# RUBY_INSTALL_NAME = ruby
\# RUBY_SO_NAME = $$(RT)-$$(RUBY_INSTALL_NAME)$$(MAJOR)$$(MINOR)
\# CFLAGS = -q $$(DEBUGFLAGS) $$(OPTFLAGS) $$(PROCESSOR_FLAG) -w- -wsus -wcpt -wdup -wext -wrng -wrpt -wzdi
-\# CPPFLAGS = -I. -I$$(srcdir) -I$$(srcdir)missing -DLIBRUBY_SO=\"$$(LIBRUBY_SO)\"
+\# CPPFLAGS = -I. -I$$(srcdir) -I$$(srcdir)/missing -DLIBRUBY_SO=\"$$(LIBRUBY_SO)\"
\# STACK = 0x2000000
\# LDFLAGS = -S:$$(STACK)
\# RFLAGS = $$(iconinc)
\# EXTLIBS = cw32.lib import32.lib user32.lib kernel32.lib
-$(BANG)include $$(srcdir)bcc32/Makefile.sub
+$(BANG)include $$(srcdir)/bcc32/Makefile.sub
|
@$(srcdir:/=\)\win32\rm.bat config.h config.status
@echo type "`$(MAKE)'" to make ruby for $(OS).
diff --git a/bignum.c b/bignum.c
index f0c3a0f63a..0ff4b4e19f 100644
--- a/bignum.c
+++ b/bignum.c
@@ -2,8 +2,8 @@
bignum.c -
- $Author$
- $Date$
+ $Author: shyouhei $
+ $Date: 2006/12/06 10:14:12 $
created at: Fri Jun 10 00:48:55 JST 1994
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -39,7 +39,10 @@ VALUE rb_cBignum;
#define BIGZEROP(x) (RBIGNUM(x)->len == 0 || (RBIGNUM(x)->len == 1 && BDIGITS(x)[0] == 0))
static VALUE
-bignew_1(VALUE klass, long len, int sign)
+bignew_1(klass, len, sign)
+ VALUE klass;
+ long len;
+ int sign;
{
NEWOBJ(big, struct RBignum);
OBJSETUP(big, klass, T_BIGNUM);
@@ -53,7 +56,8 @@ bignew_1(VALUE klass, long len, int sign)
#define bignew(len,sign) bignew_1(rb_cBignum,len,sign)
VALUE
-rb_big_clone(VALUE x)
+rb_big_clone(x)
+ VALUE x;
{
VALUE z = bignew_1(CLASS_OF(x), RBIGNUM(x)->len, RBIGNUM(x)->sign);
@@ -63,12 +67,14 @@ rb_big_clone(VALUE x)
/* modify a bignum by 2's complement */
static void
-get2comp(VALUE x)
+get2comp(x)
+ VALUE x;
{
long i = RBIGNUM(x)->len;
BDIGIT *ds = BDIGITS(x);
BDIGIT_DBL num;
+ if (!i) return;
while (i--) ds[i] = ~ds[i];
i = 0; num = 1;
do {
@@ -79,31 +85,33 @@ get2comp(VALUE x)
if (num != 0) {
REALLOC_N(RBIGNUM(x)->digits, BDIGIT, ++RBIGNUM(x)->len);
ds = BDIGITS(x);
- ds[RBIGNUM(x)->len-1] = 1;
+ ds[RBIGNUM(x)->len-1] = RBIGNUM(x)->sign ? ~0 : 1;
}
}
void
-rb_big_2comp(VALUE x) /* get 2's complement */
+rb_big_2comp(x) /* get 2's complement */
+ VALUE x;
{
get2comp(x);
}
static VALUE
-bignorm(VALUE x)
+bignorm(x)
+ VALUE x;
{
if (FIXNUM_P(x)) {
- return x;
+ return x;
}
else if (TYPE(x) == T_BIGNUM) {
long len = RBIGNUM(x)->len;
BDIGIT *ds = BDIGITS(x);
- while (len-- && !ds[len]) ;
+ while (--len && !ds[len]) ;
RBIGNUM(x)->len = ++len;
if (len*SIZEOF_BDIGITS <= sizeof(VALUE)) {
- SIGNED_VALUE num = 0;
+ long num = 0;
while (len--) {
num = BIGUP(num) + ds[len];
}
@@ -119,13 +127,15 @@ bignorm(VALUE x)
}
VALUE
-rb_big_norm(VALUE x)
+rb_big_norm(x)
+ VALUE x;
{
return bignorm(x);
}
VALUE
-rb_uint2big(VALUE n)
+rb_uint2big(n)
+ unsigned long n;
{
BDIGIT_DBL num = n;
long i = 0;
@@ -146,7 +156,8 @@ rb_uint2big(VALUE n)
}
VALUE
-rb_int2big(SIGNED_VALUE n)
+rb_int2big(n)
+ long n;
{
long neg = 0;
VALUE big;
@@ -163,14 +174,16 @@ rb_int2big(SIGNED_VALUE n)
}
VALUE
-rb_uint2inum(VALUE n)
+rb_uint2inum(n)
+ unsigned long n;
{
if (POSFIXABLE(n)) return LONG2FIX(n);
return rb_uint2big(n);
}
VALUE
-rb_int2inum(SIGNED_VALUE n)
+rb_int2inum(n)
+ long n;
{
if (FIXABLE(n)) return LONG2FIX(n);
return rb_int2big(n);
@@ -179,7 +192,9 @@ rb_int2inum(SIGNED_VALUE n)
#ifdef HAVE_LONG_LONG
void
-rb_quad_pack(char *buf, VALUE val)
+rb_quad_pack(buf, val)
+ char *buf;
+ VALUE val;
{
LONG_LONG q;
@@ -191,9 +206,8 @@ rb_quad_pack(char *buf, VALUE val)
long len = RBIGNUM(val)->len;
BDIGIT *ds;
- if (len > SIZEOF_LONG_LONG/SIZEOF_BDIGITS) {
- len = SIZEOF_LONG_LONG/SIZEOF_BDIGITS;
- }
+ if (len > SIZEOF_LONG_LONG/SIZEOF_BDIGITS)
+ rb_raise(rb_eRangeError, "bignum too big to convert into `quad int'");
ds = BDIGITS(val);
q = 0;
while (len--) {
@@ -206,7 +220,9 @@ rb_quad_pack(char *buf, VALUE val)
}
VALUE
-rb_quad_unpack(const char *buf, int sign)
+rb_quad_unpack(buf, sign)
+ const char *buf;
+ int sign;
{
unsigned LONG_LONG q;
long neg = 0;
@@ -249,7 +265,9 @@ rb_quad_unpack(const char *buf, int sign)
#define QUAD_SIZE 8
void
-rb_quad_pack(char *buf, VALUE val)
+rb_quad_pack(buf, val)
+ char *buf;
+ VALUE val;
{
long len;
@@ -275,7 +293,9 @@ rb_quad_pack(char *buf, VALUE val)
#define BNEG(b) (RSHIFT(((BDIGIT*)b)[QUAD_SIZE/SIZEOF_BDIGITS-1],BITSPERDIG-1) != 0)
VALUE
-rb_quad_unpack(const char *buf, int sign)
+rb_quad_unpack(buf, sign)
+ const char *buf;
+ int sign;
{
VALUE big = bignew(QUAD_SIZE/SIZEOF_BDIGITS, 1);
@@ -297,7 +317,10 @@ rb_quad_unpack(const char *buf, int sign)
#endif
VALUE
-rb_cstr_to_inum(const char *str, int base, int badcheck)
+rb_cstr_to_inum(str, base, badcheck)
+ const char *str;
+ int base;
+ int badcheck;
{
const char *s = str;
char *end;
@@ -309,11 +332,23 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
VALUE z;
BDIGIT *zds;
+#define conv_digit(c) \
+ (!ISASCII(c) ? -1 : \
+ isdigit(c) ? ((c) - '0') : \
+ islower(c) ? ((c) - 'a' + 10) : \
+ isupper(c) ? ((c) - 'A' + 10) : \
+ -1)
+
if (!str) {
if (badcheck) goto bad;
return INT2FIX(0);
}
- while (ISSPACE(*str)) str++;
+ if (badcheck) {
+ while (ISSPACE(*str)) str++;
+ }
+ else {
+ while (ISSPACE(*str) || *str == '_') str++;
+ }
if (str[0] == '+') {
str++;
@@ -396,14 +431,20 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
}
if (*str == '0') { /* squeeze preceeding 0s */
while (*++str == '0');
- --str;
+ if (!*str) --str;
+ }
+ c = *str;
+ c = conv_digit(c);
+ if (c < 0 || c >= base) {
+ if (badcheck) goto bad;
+ return INT2FIX(0);
}
len *= strlen(str)*sizeof(char);
if (len <= (sizeof(VALUE)*CHAR_BIT)) {
- unsigned long val = strtoul(str, &end, base);
+ unsigned long val = strtoul((char*)str, &end, base);
- if (str < end && *end == '_') goto bigparse;
+ if (*end == '_') goto bigparse;
if (badcheck) {
if (end == str) goto bad; /* no number */
while (*end && ISSPACE(*end)) end++;
@@ -430,7 +471,7 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
z = bignew(len, sign);
zds = BDIGITS(z);
for (i=len;i--;) zds[i]=0;
- while (c = *str++) {
+ while ((c = *str++) != 0) {
if (c == '_') {
if (badcheck) {
if (nondigit) goto bad;
@@ -438,19 +479,7 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
}
continue;
}
- else if (!ISASCII(c)) {
- break;
- }
- else if (isdigit(c)) {
- c -= '0';
- }
- else if (islower(c)) {
- c -= 'a' - 10;
- }
- else if (isupper(c)) {
- c -= 'A' - 10;
- }
- else {
+ else if ((c = conv_digit(c)) < 0) {
break;
}
if (c >= base) break;
@@ -484,7 +513,10 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
}
VALUE
-rb_str_to_inum(VALUE str, int base, int badcheck)
+rb_str_to_inum(str, base, badcheck)
+ VALUE str;
+ int base;
+ int badcheck;
{
char *s;
long len;
@@ -494,10 +526,10 @@ rb_str_to_inum(VALUE str, int base, int badcheck)
s = StringValueCStr(str);
}
else {
- s = RSTRING_PTR(str);
+ s = RSTRING(str)->ptr;
}
if (s) {
- len = RSTRING_LEN(str);
+ len = RSTRING(str)->len;
if (s[len]) { /* no sentinel somehow */
char *p = ALLOCA_N(char, len+1);
@@ -511,8 +543,9 @@ rb_str_to_inum(VALUE str, int base, int badcheck)
#if HAVE_LONG_LONG
-static VALUE
-rb_ull2big(unsigned LONG_LONG n)
+VALUE
+rb_ull2big(n)
+ unsigned LONG_LONG n;
{
BDIGIT_DBL num = n;
long i = 0;
@@ -532,8 +565,9 @@ rb_ull2big(unsigned LONG_LONG n)
return big;
}
-static VALUE
-rb_ll2big(LONG_LONG n)
+VALUE
+rb_ll2big(n)
+ LONG_LONG n;
{
long neg = 0;
VALUE big;
@@ -550,14 +584,16 @@ rb_ll2big(LONG_LONG n)
}
VALUE
-rb_ull2inum(unsigned LONG_LONG n)
+rb_ull2inum(n)
+ unsigned LONG_LONG n;
{
if (POSFIXABLE(n)) return LONG2FIX(n);
return rb_ull2big(n);
}
VALUE
-rb_ll2inum(LONG_LONG n)
+rb_ll2inum(n)
+ LONG_LONG n;
{
if (FIXABLE(n)) return LONG2FIX(n);
return rb_ll2big(n);
@@ -566,39 +602,45 @@ rb_ll2inum(LONG_LONG n)
#endif /* HAVE_LONG_LONG */
VALUE
-rb_cstr2inum(const char *str, int base)
+rb_cstr2inum(str, base)
+ const char *str;
+ int base;
{
return rb_cstr_to_inum(str, base, base==0);
}
VALUE
-rb_str2inum(VALUE str, int base)
+rb_str2inum(str, base)
+ VALUE str;
+ int base;
{
return rb_str_to_inum(str, base, base==0);
}
const char ruby_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz";
VALUE
-rb_big2str0(VALUE x, int base, int trim)
+rb_big2str(x, base)
+ VALUE x;
+ int base;
{
volatile VALUE t;
BDIGIT *ds;
long i, j, hbase;
VALUE ss;
- char *s;
+ char *s, c;
if (FIXNUM_P(x)) {
return rb_fix2str(x, base);
}
+ i = RBIGNUM(x)->len;
if (BIGZEROP(x)) {
return rb_str_new2("0");
}
- i = RBIGNUM(x)->len;
j = SIZEOF_BDIGITS*CHAR_BIT*i;
switch (base) {
case 2: break;
case 3:
- j = j * 53L / 84 + 1;
+ j = j * 647L / 1024;
break;
case 4: case 5: case 6: case 7:
j /= 2;
@@ -607,7 +649,7 @@ rb_big2str0(VALUE x, int base, int trim)
j /= 3;
break;
case 10: case 11: case 12: case 13: case 14: case 15:
- j = j * 28L / 93 + 1;
+ j = j * 241L / 800;
break;
case 16: case 17: case 18: case 19: case 20: case 21:
case 22: case 23: case 24: case 25: case 26: case 27:
@@ -621,7 +663,7 @@ rb_big2str0(VALUE x, int base, int trim)
rb_raise(rb_eArgError, "illegal radix %d", base);
break;
}
- j++; /* space for sign */
+ j += 2;
hbase = base * base;
#if SIZEOF_BDIGITS > 2
@@ -630,11 +672,11 @@ rb_big2str0(VALUE x, int base, int trim)
t = rb_big_clone(x);
ds = BDIGITS(t);
- ss = rb_str_new(0, j+1);
- s = RSTRING_PTR(ss);
+ ss = rb_str_new(0, j);
+ s = RSTRING(ss)->ptr;
s[0] = RBIGNUM(x)->sign ? '+' : '-';
- while (i && j > 1) {
+ while (i && j) {
long k = i;
BDIGIT_DBL num = 0;
@@ -643,35 +685,23 @@ rb_big2str0(VALUE x, int base, int trim)
ds[k] = (BDIGIT)(num / hbase);
num %= hbase;
}
- if (trim && ds[i-1] == 0) i--;
+ if (ds[i-1] == 0) i--;
k = SIZEOF_BDIGITS;
while (k--) {
- s[--j] = ruby_digitmap[num % base];
+ c = (char)(num % base);
+ s[--j] = ruby_digitmap[(int)c];
num /= base;
- if (!trim && j < 1) break;
- if (trim && i == 0 && num == 0) break;
+ if (i == 0 && num == 0) break;
}
}
- if (trim) {while (s[j] == '0') j++;}
- i = RSTRING_LEN(ss) - j;
- if (RBIGNUM(x)->sign) {
- memmove(s, s+j, i);
- i--;
- }
- else {
- memmove(s+1, s+j, i);
- }
- rb_str_set_len(ss, i);
+ while (s[j] == '0') j++;
+ RSTRING(ss)->len -= RBIGNUM(x)->sign?j:j-1;
+ memmove(RBIGNUM(x)->sign?s:s+1, s+j, RSTRING(ss)->len);
+ s[RSTRING(ss)->len] = '\0';
return ss;
}
-VALUE
-rb_big2str(VALUE x, int base)
-{
- return rb_big2str0(x, base, Qtrue);
-}
-
/*
* call-seq:
* big.to_s(base=10) => string
@@ -687,7 +717,10 @@ rb_big2str(VALUE x, int base)
*/
static VALUE
-rb_big_to_s(int argc, VALUE *argv, VALUE x)
+rb_big_to_s(argc, argv, x)
+ int argc;
+ VALUE *argv;
+ VALUE x;
{
VALUE b;
int base;
@@ -698,18 +731,17 @@ rb_big_to_s(int argc, VALUE *argv, VALUE x)
return rb_big2str(x, base);
}
-static VALUE
-big2ulong(VALUE x, const char *type, int check)
+static unsigned long
+big2ulong(x, type)
+ VALUE x;
+ char *type;
{
long len = RBIGNUM(x)->len;
BDIGIT_DBL num;
BDIGIT *ds;
- if (len > SIZEOF_VALUE/SIZEOF_BDIGITS) {
- if (check)
- rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type);
- len = SIZEOF_VALUE/SIZEOF_BDIGITS;
- }
+ if (len > SIZEOF_LONG/SIZEOF_BDIGITS)
+ rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type);
ds = BDIGITS(x);
num = 0;
while (len--) {
@@ -719,23 +751,25 @@ big2ulong(VALUE x, const char *type, int check)
return num;
}
-VALUE
-rb_big2ulong_pack(VALUE x)
-{
- VALUE num = big2ulong(x, "unsigned long", Qfalse);
+unsigned long
+rb_big2ulong_pack(x)
+ VALUE x;
+{
+ unsigned long num = big2ulong(x, "unsigned long");
if (!RBIGNUM(x)->sign) {
return -num;
}
return num;
-}
+}
-VALUE
-rb_big2ulong(VALUE x)
+unsigned long
+rb_big2ulong(x)
+ VALUE x;
{
- VALUE num = big2ulong(x, "unsigned long", Qtrue);
+ unsigned long num = big2ulong(x, "unsigned long");
if (!RBIGNUM(x)->sign) {
- if ((SIGNED_VALUE)num < 0) {
+ if ((long)num < 0) {
rb_raise(rb_eRangeError, "bignum out of range of unsigned long");
}
return -num;
@@ -743,23 +777,25 @@ rb_big2ulong(VALUE x)
return num;
}
-SIGNED_VALUE
-rb_big2long(VALUE x)
+long
+rb_big2long(x)
+ VALUE x;
{
- VALUE num = big2ulong(x, "long", Qtrue);
+ unsigned long num = big2ulong(x, "long");
- if ((SIGNED_VALUE)num < 0 &&
- (RBIGNUM(x)->sign || (SIGNED_VALUE)num != LONG_MIN)) {
+ if ((long)num < 0 && (RBIGNUM(x)->sign || (long)num != LONG_MIN)) {
rb_raise(rb_eRangeError, "bignum too big to convert into `long'");
}
- if (!RBIGNUM(x)->sign) return -(SIGNED_VALUE)num;
+ if (!RBIGNUM(x)->sign) return -(long)num;
return num;
}
#if HAVE_LONG_LONG
static unsigned LONG_LONG
-big2ull(VALUE x, const char *type)
+big2ull(x, type)
+ VALUE x;
+ char *type;
{
long len = RBIGNUM(x)->len;
BDIGIT_DBL num;
@@ -777,7 +813,8 @@ big2ull(VALUE x, const char *type)
}
unsigned LONG_LONG
-rb_big2ull(VALUE x)
+rb_big2ull(x)
+ VALUE x;
{
unsigned LONG_LONG num = big2ull(x, "unsigned long long");
@@ -786,7 +823,8 @@ rb_big2ull(VALUE x)
}
LONG_LONG
-rb_big2ll(VALUE x)
+rb_big2ll(x)
+ VALUE x;
{
unsigned LONG_LONG num = big2ull(x, "long long");
@@ -801,7 +839,8 @@ rb_big2ll(VALUE x)
#endif /* HAVE_LONG_LONG */
static VALUE
-dbl2big(double d)
+dbl2big(d)
+ double d;
{
long i = 0;
BDIGIT c;
@@ -833,13 +872,15 @@ dbl2big(double d)
}
VALUE
-rb_dbl2big(double d)
+rb_dbl2big(d)
+ double d;
{
return bignorm(dbl2big(d));
}
double
-rb_big2dbl(VALUE x)
+rb_big2dbl(x)
+ VALUE x;
{
double d = 0.0;
long i = RBIGNUM(x)->len;
@@ -866,7 +907,8 @@ rb_big2dbl(VALUE x)
*/
static VALUE
-rb_big_to_f(VALUE x)
+rb_big_to_f(x)
+ VALUE x;
{
return rb_float_new(rb_big2dbl(x));
}
@@ -881,8 +923,9 @@ rb_big_to_f(VALUE x)
*
*/
-VALUE
-rb_big_cmp(VALUE x, VALUE y)
+static VALUE
+rb_big_cmp(x, y)
+ VALUE x, y;
{
long xlen = RBIGNUM(x)->len;
@@ -926,8 +969,9 @@ rb_big_cmp(VALUE x, VALUE y)
* 68719476736 == 68719476736.0 #=> true
*/
-VALUE
-rb_big_eq(VALUE x, VALUE y)
+static VALUE
+rb_big_eq(x, y)
+ VALUE x, y;
{
switch (TYPE(y)) {
case T_FIXNUM:
@@ -965,7 +1009,8 @@ rb_big_eq(VALUE x, VALUE y)
*/
static VALUE
-rb_big_eql(VALUE x, VALUE y)
+rb_big_eql(x, y)
+ VALUE x, y;
{
if (TYPE(y) != T_BIGNUM) return Qfalse;
if (RBIGNUM(x)->sign != RBIGNUM(y)->sign) return Qfalse;
@@ -982,7 +1027,8 @@ rb_big_eql(VALUE x, VALUE y)
*/
static VALUE
-rb_big_uminus(VALUE x)
+rb_big_uminus(x)
+ VALUE x;
{
VALUE z = rb_big_clone(x);
@@ -1004,18 +1050,18 @@ rb_big_uminus(VALUE x)
*/
static VALUE
-rb_big_neg(VALUE x)
+rb_big_neg(x)
+ VALUE x;
{
VALUE z = rb_big_clone(x);
- BDIGIT *ds;
long i;
+ BDIGIT *ds;
if (!RBIGNUM(x)->sign) get2comp(z);
ds = BDIGITS(z);
i = RBIGNUM(x)->len;
- while (i--) {
- ds[i] = ~ds[i];
- }
+ if (!i) return INT2FIX(~0);
+ while (i--) ds[i] = ~ds[i];
RBIGNUM(z)->sign = !RBIGNUM(z)->sign;
if (RBIGNUM(x)->sign) get2comp(z);
@@ -1023,7 +1069,8 @@ rb_big_neg(VALUE x)
}
static VALUE
-bigsub(VALUE x, VALUE y)
+bigsub(x, y)
+ VALUE x, y;
{
VALUE z = 0;
BDIGIT *zds;
@@ -1069,7 +1116,9 @@ bigsub(VALUE x, VALUE y)
}
static VALUE
-bigadd(VALUE x, VALUE y, int sign)
+bigadd(x, y, sign)
+ VALUE x, y;
+ int sign;
{
VALUE z;
BDIGIT_DBL num;
@@ -1119,7 +1168,8 @@ bigadd(VALUE x, VALUE y, int sign)
*/
VALUE
-rb_big_plus(VALUE x, VALUE y)
+rb_big_plus(x, y)
+ VALUE x, y;
{
switch (TYPE(y)) {
case T_FIXNUM:
@@ -1144,7 +1194,8 @@ rb_big_plus(VALUE x, VALUE y)
*/
VALUE
-rb_big_minus(VALUE x, VALUE y)
+rb_big_minus(x, y)
+ VALUE x, y;
{
switch (TYPE(y)) {
case T_FIXNUM:
@@ -1161,14 +1212,23 @@ rb_big_minus(VALUE x, VALUE y)
}
}
-static VALUE
-rb_big_mul0(VALUE x, VALUE y)
+/*
+ * call-seq:
+ * big * other => Numeric
+ *
+ * Multiplies big and other, returning the result.
+ */
+
+VALUE
+rb_big_mul(x, y)
+ VALUE x, y;
{
long i, j;
BDIGIT_DBL n = 0;
VALUE z;
BDIGIT *zds;
+ if (FIXNUM_P(x)) x = rb_int2big(FIX2LONG(x));
switch (TYPE(y)) {
case T_FIXNUM:
y = rb_int2big(FIX2LONG(y));
@@ -1202,24 +1262,14 @@ rb_big_mul0(VALUE x, VALUE y)
zds[i + j] = n;
}
}
- return z;
-}
-
-/*
- * call-seq:
- * big * other => Numeric
- *
- * Multiplies big and other, returning the result.
- */
-VALUE
-rb_big_mul(VALUE x, VALUE y)
-{
- return bignorm(rb_big_mul0(x, y));
+ return bignorm(z);
}
static void
-bigdivrem(VALUE x, VALUE y, VALUE *divp, VALUE *modp)
+bigdivrem(x, y, divp, modp)
+ VALUE x, y;
+ VALUE *divp, *modp;
{
long nx = RBIGNUM(x)->len, ny = RBIGNUM(y)->len;
long i, j;
@@ -1249,7 +1299,7 @@ bigdivrem(VALUE x, VALUE y, VALUE *divp, VALUE *modp)
}
RBIGNUM(z)->sign = RBIGNUM(x)->sign==RBIGNUM(y)->sign;
if (modp) {
- *modp = rb_uint2big((VALUE)t2);
+ *modp = rb_uint2big((unsigned long)t2);
RBIGNUM(*modp)->sign = RBIGNUM(x)->sign;
}
if (divp) *divp = z;
@@ -1262,8 +1312,8 @@ bigdivrem(VALUE x, VALUE y, VALUE *divp, VALUE *modp)
dd = 0;
q = yds[ny-1];
- while ((q & (1UL<<(BITSPERDIG-1))) == 0) {
- q <<= 1UL;
+ while ((q & (1<<(BITSPERDIG-1))) == 0) {
+ q <<= 1;
dd++;
}
if (dd) {
@@ -1347,7 +1397,9 @@ bigdivrem(VALUE x, VALUE y, VALUE *divp, VALUE *modp)
}
static void
-bigdivmod(VALUE x, VALUE y, VALUE *divp, VALUE *modp)
+bigdivmod(x, y, divp, modp)
+ VALUE x, y;
+ VALUE *divp, *modp;
{
VALUE mod;
@@ -1370,8 +1422,9 @@ bigdivmod(VALUE x, VALUE y, VALUE *divp, VALUE *modp)
* Divides big by other, returning the result.
*/
-VALUE
-rb_big_div(VALUE x, VALUE y)
+static VALUE
+rb_big_div(x, y)
+ VALUE x, y;
{
VALUE z;
@@ -1403,8 +1456,9 @@ rb_big_div(VALUE x, VALUE y)
* information.
*/
-VALUE
-rb_big_modulo(VALUE x, VALUE y)
+static VALUE
+rb_big_modulo(x, y)
+ VALUE x, y;
{
VALUE z;
@@ -1434,7 +1488,8 @@ rb_big_modulo(VALUE x, VALUE y)
* -1234567890987654321.remainder(13731.24) #=> -9906.22531493148
*/
static VALUE
-rb_big_remainder(VALUE x, VALUE y)
+rb_big_remainder(x, y)
+ VALUE x, y;
{
VALUE z;
@@ -1462,7 +1517,8 @@ rb_big_remainder(VALUE x, VALUE y)
*
*/
VALUE
-rb_big_divmod(VALUE x, VALUE y)
+rb_big_divmod(x, y)
+ VALUE x, y;
{
VALUE div, mod;
@@ -1495,7 +1551,8 @@ rb_big_divmod(VALUE x, VALUE y)
*/
static VALUE
-rb_big_quo(VALUE x, VALUE y)
+rb_big_quo(x, y)
+ VALUE x, y;
{
double dx = rb_big2dbl(x);
double dy;
@@ -1533,7 +1590,8 @@ rb_big_quo(VALUE x, VALUE y)
*/
VALUE
-rb_big_pow(VALUE x, VALUE y)
+rb_big_pow(x, y)
+ VALUE x, y;
{
double d;
long yy;
@@ -1564,11 +1622,9 @@ rb_big_pow(VALUE x, VALUE y)
if (yy == 0) break;
while (yy % 2 == 0) {
yy /= 2;
- x = rb_big_mul0(x, x);
- if (!BDIGITS(x)[RBIGNUM(x)->len-1]) RBIGNUM(x)->len--;
+ x = rb_big_mul(x, x);
}
- z = rb_big_mul0(z, x);
- if (!BDIGITS(z)[RBIGNUM(z)->len-1]) RBIGNUM(z)->len--;
+ z = rb_big_mul(z, x);
}
return bignorm(z);
}
@@ -1589,7 +1645,8 @@ rb_big_pow(VALUE x, VALUE y)
*/
VALUE
-rb_big_and(VALUE xx, VALUE yy)
+rb_big_and(xx, yy)
+ VALUE xx, yy;
{
volatile VALUE x, y, z;
BDIGIT *ds1, *ds2, *zds;
@@ -1644,7 +1701,8 @@ rb_big_and(VALUE xx, VALUE yy)
*/
VALUE
-rb_big_or(VALUE xx, VALUE yy)
+rb_big_or(xx, yy)
+ VALUE xx, yy;
{
volatile VALUE x, y, z;
BDIGIT *ds1, *ds2, *zds;
@@ -1656,7 +1714,6 @@ rb_big_or(VALUE xx, VALUE yy)
if (FIXNUM_P(y)) {
y = rb_int2big(FIX2LONG(y));
}
-
if (!RBIGNUM(y)->sign) {
y = rb_big_clone(y);
get2comp(y);
@@ -1701,7 +1758,8 @@ rb_big_or(VALUE xx, VALUE yy)
*/
VALUE
-rb_big_xor(VALUE xx, VALUE yy)
+rb_big_xor(xx, yy)
+ VALUE xx, yy;
{
volatile VALUE x, y;
VALUE z;
@@ -1714,7 +1772,6 @@ rb_big_xor(VALUE xx, VALUE yy)
if (FIXNUM_P(y)) {
y = rb_int2big(FIX2LONG(y));
}
-
if (!RBIGNUM(y)->sign) {
y = rb_big_clone(y);
get2comp(y);
@@ -1753,7 +1810,7 @@ rb_big_xor(VALUE xx, VALUE yy)
return bignorm(z);
}
-static VALUE rb_big_rshift(VALUE,VALUE);
+static VALUE rb_big_rshift _((VALUE,VALUE));
/*
* call-seq:
@@ -1763,7 +1820,8 @@ static VALUE rb_big_rshift(VALUE,VALUE);
*/
VALUE
-rb_big_lshift(VALUE x, VALUE y)
+rb_big_lshift(x, y)
+ VALUE x, y;
{
BDIGIT *xds, *zds;
int shift = NUM2INT(y);
@@ -1798,7 +1856,8 @@ rb_big_lshift(VALUE x, VALUE y)
*/
static VALUE
-rb_big_rshift(VALUE x, VALUE y)
+rb_big_rshift(x, y)
+ VALUE x, y;
{
BDIGIT *xds, *zds;
int shift = NUM2INT(y);
@@ -1823,10 +1882,6 @@ rb_big_rshift(VALUE x, VALUE y)
}
xds = BDIGITS(x);
i = RBIGNUM(x)->len; j = i - s1;
- if (j == 0) {
- if (RBIGNUM(x)->sign) return INT2FIX(0);
- else return INT2FIX(-1);
- }
z = bignew(j, RBIGNUM(x)->sign);
if (!RBIGNUM(x)->sign) {
num = ((BDIGIT_DBL)~0) << BITSPERDIG;
@@ -1863,7 +1918,8 @@ rb_big_rshift(VALUE x, VALUE y)
*/
static VALUE
-rb_big_aref(VALUE x, VALUE y)
+rb_big_aref(x, y)
+ VALUE x, y;
{
BDIGIT *xds;
int shift;
@@ -1901,12 +1957,17 @@ rb_big_aref(VALUE x, VALUE y)
*/
static VALUE
-rb_big_hash(VALUE x)
+rb_big_hash(x)
+ VALUE x;
{
- int hash;
+ long i, len, key;
+ BDIGIT *digits;
- hash = rb_memhash(BDIGITS(x), BITSPERDIG*RBIGNUM(x)->len) ^ RBIGNUM(x)->sign;
- return INT2FIX(hash);
+ key = 0; digits = BDIGITS(x); len = RBIGNUM(x)->len;
+ for (i=0; i<len; i++) {
+ key ^= *digits++;
+ }
+ return LONG2FIX(key);
}
/*
@@ -1914,7 +1975,8 @@ rb_big_hash(VALUE x)
*/
static VALUE
-rb_big_coerce(VALUE x, VALUE y)
+rb_big_coerce(x, y)
+ VALUE x, y;
{
if (FIXNUM_P(y)) {
return rb_assoc_new(rb_int2big(FIX2LONG(y)), x);
@@ -1940,7 +2002,8 @@ rb_big_coerce(VALUE x, VALUE y)
*/
static VALUE
-rb_big_abs(VALUE x)
+rb_big_abs(x)
+ VALUE x;
{
if (!RBIGNUM(x)->sign) {
x = rb_big_clone(x);
@@ -1949,6 +2012,27 @@ rb_big_abs(VALUE x)
return x;
}
+VALUE
+rb_big_rand(max, rand_buf)
+ VALUE max;
+ double *rand_buf;
+{
+ VALUE v;
+ long len = RBIGNUM(max)->len;
+
+ if (BIGZEROP(max)) {
+ return rb_float_new(rand_buf[0]);
+ }
+ v = bignew(len,1);
+ len--;
+ BDIGITS(v)[len] = BDIGITS(max)[len] * rand_buf[len];
+ while (len--) {
+ BDIGITS(v)[len] = ((BDIGIT)~0) * rand_buf[len];
+ }
+
+ return v;
+}
+
/*
* call-seq:
* big.size -> integer
@@ -1962,7 +2046,8 @@ rb_big_abs(VALUE x)
*/
static VALUE
-rb_big_size(VALUE big)
+rb_big_size(big)
+ VALUE big;
{
return LONG2FIX(RBIGNUM(big)->len*SIZEOF_BDIGITS);
}
@@ -1986,7 +2071,7 @@ rb_big_size(VALUE big)
*/
void
-Init_Bignum(void)
+Init_Bignum()
{
rb_cBignum = rb_define_class("Bignum", rb_cInteger);
diff --git a/bin/irb b/bin/irb
index f277bc4b69..13474a932b 100644
--- a/bin/irb
+++ b/bin/irb
@@ -2,8 +2,8 @@
#
# irb.rb - intaractive ruby
# $Release Version: 0.9.5 $
-# $Revision$
-# $Date$
+# $Revision: 1.2.2.1 $
+# $Date: 2005/04/19 19:24:56 $
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
#
diff --git a/bin/rdoc b/bin/rdoc
index fe619137fd..d08ce838f6 100644
--- a/bin/rdoc
+++ b/bin/rdoc
@@ -6,7 +6,7 @@
# Copyright (c) 2003 Dave Thomas
# Released under the same terms as Ruby
#
-# $Revision$
+# $Revision: 1.1 $
## Transitional Hack ####
#
diff --git a/class.c b/class.c
index c7fc1df370..9e41b1e260 100644
--- a/class.c
+++ b/class.c
@@ -2,8 +2,8 @@
class.c -
- $Author$
- $Date$
+ $Author: nobu $
+ $Date: 2005/09/28 14:42:46 $
created at: Tue Aug 10 15:05:44 JST 1993
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -19,7 +19,8 @@
extern st_table *rb_class_tbl;
VALUE
-rb_class_boot(VALUE super)
+rb_class_boot(super)
+ VALUE super;
{
NEWOBJ(klass, struct RClass);
OBJSETUP(klass, rb_cClass, T_CLASS);
@@ -33,31 +34,25 @@ rb_class_boot(VALUE super)
return (VALUE)klass;
}
-void
-rb_check_inheritable(VALUE super)
-{
- if (TYPE(super) != T_CLASS) {
- rb_raise(rb_eTypeError, "superclass must be a Class (%s given)",
- rb_obj_classname(super));
- }
- if (RBASIC(super)->flags & FL_SINGLETON) {
- rb_raise(rb_eTypeError, "can't make subclass of singleton class");
- }
-}
-
VALUE
-rb_class_new(VALUE super)
+rb_class_new(super)
+ VALUE super;
{
Check_Type(super, T_CLASS);
- rb_check_inheritable(super);
if (super == rb_cClass) {
rb_raise(rb_eTypeError, "can't make subclass of Class");
}
+ if (FL_TEST(super, FL_SINGLETON)) {
+ rb_raise(rb_eTypeError, "can't make subclass of virtual class");
+ }
return rb_class_boot(super);
}
static int
-clone_method(ID mid, NODE *body, st_table *tbl)
+clone_method(mid, body, tbl)
+ ID mid;
+ NODE *body;
+ st_table *tbl;
{
st_insert(tbl, mid, (st_data_t)NEW_METHOD(body->nd_body, body->nd_noex));
return ST_CONTINUE;
@@ -65,7 +60,8 @@ clone_method(ID mid, NODE *body, st_table *tbl)
/* :nodoc: */
VALUE
-rb_mod_init_copy(VALUE clone, VALUE orig)
+rb_mod_init_copy(clone, orig)
+ VALUE clone, orig;
{
rb_obj_init_copy(clone, orig);
if (!FL_TEST(CLASS_OF(clone), FL_SINGLETON)) {
@@ -92,7 +88,8 @@ rb_mod_init_copy(VALUE clone, VALUE orig)
/* :nodoc: */
VALUE
-rb_class_init_copy(VALUE clone, VALUE orig)
+rb_class_init_copy(clone, orig)
+ VALUE clone, orig;
{
if (RCLASS(clone)->super != 0) {
rb_raise(rb_eTypeError, "already initialized class");
@@ -104,7 +101,8 @@ rb_class_init_copy(VALUE clone, VALUE orig)
}
VALUE
-rb_singleton_class_clone(VALUE obj)
+rb_singleton_class_clone(obj)
+ VALUE obj;
{
VALUE klass = RBASIC(obj)->klass;
@@ -138,7 +136,8 @@ rb_singleton_class_clone(VALUE obj)
}
void
-rb_singleton_class_attached(VALUE klass, VALUE obj)
+rb_singleton_class_attached(klass, obj)
+ VALUE klass, obj;
{
if (FL_TEST(klass, FL_SINGLETON)) {
if (!RCLASS(klass)->iv_tbl) {
@@ -149,30 +148,33 @@ rb_singleton_class_attached(VALUE klass, VALUE obj)
}
VALUE
-rb_make_metaclass(VALUE obj, VALUE super)
+rb_make_metaclass(obj, super)
+ VALUE obj, super;
{
+ VALUE klass = rb_class_boot(super);
+ FL_SET(klass, FL_SINGLETON);
+ RBASIC(obj)->klass = klass;
+ rb_singleton_class_attached(klass, obj);
if (BUILTIN_TYPE(obj) == T_CLASS && FL_TEST(obj, FL_SINGLETON)) {
- return RBASIC(obj)->klass = rb_cClass;
+ RBASIC(klass)->klass = klass;
+ RCLASS(klass)->super = RBASIC(rb_class_real(RCLASS(obj)->super))->klass;
}
else {
- VALUE metasuper;
- VALUE klass = rb_class_boot(super);
-
- FL_SET(klass, FL_SINGLETON);
- RBASIC(obj)->klass = klass;
- rb_singleton_class_attached(klass, obj);
+ VALUE metasuper = RBASIC(rb_class_real(super))->klass;
- metasuper = RBASIC(rb_class_real(super))->klass;
/* metaclass of a superclass may be NULL at boot time */
if (metasuper) {
RBASIC(klass)->klass = metasuper;
}
- return klass;
}
+
+ return klass;
}
VALUE
-rb_define_class_id(ID id, VALUE super)
+rb_define_class_id(id, super)
+ ID id;
+ VALUE super;
{
VALUE klass;
@@ -183,15 +185,31 @@ rb_define_class_id(ID id, VALUE super)
return klass;
}
+void
+rb_check_inheritable(super)
+ VALUE super;
+{
+ if (TYPE(super) != T_CLASS) {
+ rb_raise(rb_eTypeError, "superclass must be a Class (%s given)",
+ rb_obj_classname(super));
+ }
+ if (RBASIC(super)->flags & FL_SINGLETON) {
+ rb_raise(rb_eTypeError, "can't make subclass of virtual class");
+ }
+}
+
VALUE
-rb_class_inherited(VALUE super, VALUE klass)
+rb_class_inherited(super, klass)
+ VALUE super, klass;
{
if (!super) super = rb_cObject;
return rb_funcall(super, rb_intern("inherited"), 1, klass);
}
VALUE
-rb_define_class(const char *name, VALUE super)
+rb_define_class(name, super)
+ const char *name;
+ VALUE super;
{
VALUE klass;
ID id;
@@ -220,7 +238,10 @@ rb_define_class(const char *name, VALUE super)
}
VALUE
-rb_define_class_under(VALUE outer, const char *name, VALUE super)
+rb_define_class_under(outer, name, super)
+ VALUE outer;
+ const char *name;
+ VALUE super;
{
VALUE klass;
ID id;
@@ -249,7 +270,7 @@ rb_define_class_under(VALUE outer, const char *name, VALUE super)
}
VALUE
-rb_module_new(void)
+rb_module_new()
{
NEWOBJ(mdl, struct RClass);
OBJSETUP(mdl, rb_cModule, T_MODULE);
@@ -263,7 +284,8 @@ rb_module_new(void)
}
VALUE
-rb_define_module_id(ID id)
+rb_define_module_id(id)
+ ID id;
{
VALUE mdl;
@@ -274,7 +296,8 @@ rb_define_module_id(ID id)
}
VALUE
-rb_define_module(const char *name)
+rb_define_module(name)
+ const char *name;
{
VALUE module;
ID id;
@@ -294,7 +317,9 @@ rb_define_module(const char *name)
}
VALUE
-rb_define_module_under(VALUE outer, const char *name)
+rb_define_module_under(outer, name)
+ VALUE outer;
+ const char *name;
{
VALUE module;
ID id;
@@ -315,7 +340,8 @@ rb_define_module_under(VALUE outer, const char *name)
}
static VALUE
-include_class_new(VALUE module, VALUE super)
+include_class_new(module, super)
+ VALUE module, super;
{
NEWOBJ(klass, struct RClass);
OBJSETUP(klass, rb_cClass, T_ICLASS);
@@ -342,7 +368,8 @@ include_class_new(VALUE module, VALUE super)
}
void
-rb_include_module(VALUE klass, VALUE module)
+rb_include_module(klass, module)
+ VALUE klass, module;
{
VALUE p, c;
int changed = 0;
@@ -352,6 +379,9 @@ rb_include_module(VALUE klass, VALUE module)
rb_secure(4);
}
+ if (NIL_P(module)) return;
+ if (klass == module) return;
+
if (TYPE(module) != T_MODULE) {
Check_Type(module, T_MODULE);
}
@@ -405,7 +435,8 @@ rb_include_module(VALUE klass, VALUE module)
*/
VALUE
-rb_mod_included_modules(VALUE mod)
+rb_mod_included_modules(mod)
+ VALUE mod;
{
VALUE ary = rb_ary_new();
VALUE p;
@@ -438,7 +469,9 @@ rb_mod_included_modules(VALUE mod)
*/
VALUE
-rb_mod_include_p(VALUE mod, VALUE mod2)
+rb_mod_include_p(mod, mod2)
+ VALUE mod;
+ VALUE mod2;
{
VALUE p;
@@ -468,7 +501,8 @@ rb_mod_include_p(VALUE mod, VALUE mod2)
*/
VALUE
-rb_mod_ancestors(VALUE mod)
+rb_mod_ancestors(mod)
+ VALUE mod;
{
VALUE p, ary = rb_ary_new();
@@ -489,14 +523,17 @@ rb_mod_ancestors(VALUE mod)
#define VISI_CHECK(x,f) (VISI(x) == (f))
static int
-ins_methods_push(ID name, long type, VALUE ary, long visi)
+ins_methods_push(name, type, ary, visi)
+ ID name;
+ long type;
+ VALUE ary;
+ long visi;
{
if (type == -1) return ST_CONTINUE;
switch (visi) {
case NOEX_PRIVATE:
case NOEX_PROTECTED:
case NOEX_PUBLIC:
- case NOEX_LOCAL:
visi = (type == visi);
break;
default:
@@ -504,43 +541,52 @@ ins_methods_push(ID name, long type, VALUE ary, long visi)
break;
}
if (visi) {
- rb_ary_push(ary, ID2SYM(name));
+ rb_ary_push(ary, rb_str_new2(rb_id2name(name)));
}
return ST_CONTINUE;
}
static int
-ins_methods_i(ID name, long type, VALUE ary)
+ins_methods_i(name, type, ary)
+ ID name;
+ long type;
+ VALUE ary;
{
return ins_methods_push(name, type, ary, -1); /* everything but private */
}
static int
-ins_methods_prot_i(ID name, long type, VALUE ary)
+ins_methods_prot_i(name, type, ary)
+ ID name;
+ long type;
+ VALUE ary;
{
return ins_methods_push(name, type, ary, NOEX_PROTECTED);
}
static int
-ins_methods_priv_i(ID name, long type, VALUE ary)
+ins_methods_priv_i(name, type, ary)
+ ID name;
+ long type;
+ VALUE ary;
{
return ins_methods_push(name, type, ary, NOEX_PRIVATE);
}
static int
-ins_methods_pub_i(ID name, long type, VALUE ary)
+ins_methods_pub_i(name, type, ary)
+ ID name;
+ long type;
+ VALUE ary;
{
return ins_methods_push(name, type, ary, NOEX_PUBLIC);
}
static int
-ins_methods_local_i(ID name, long type, VALUE ary)
-{
- return ins_methods_push(name, type, ary, NOEX_LOCAL);
-}
-
-static int
-method_entry(ID key, NODE *body, st_table *list)
+method_entry(key, body, list)
+ ID key;
+ NODE *body;
+ st_table *list;
{
long type;
@@ -554,7 +600,11 @@ method_entry(ID key, NODE *body, st_table *list)
}
static VALUE
-class_instance_method_list(int argc, VALUE *argv, VALUE mod, int (*func) (ID, long, VALUE))
+class_instance_method_list(argc, argv, mod, func)
+ int argc;
+ VALUE *argv;
+ VALUE mod;
+ int (*func) _((ID, long, VALUE));
{
VALUE ary;
int recur;
@@ -611,7 +661,10 @@ class_instance_method_list(int argc, VALUE *argv, VALUE mod, int (*func) (ID, lo
*/
VALUE
-rb_class_instance_methods(int argc, VALUE *argv, VALUE mod)
+rb_class_instance_methods(argc, argv, mod)
+ int argc;
+ VALUE *argv;
+ VALUE mod;
{
return class_instance_method_list(argc, argv, mod, ins_methods_i);
}
@@ -626,7 +679,10 @@ rb_class_instance_methods(int argc, VALUE *argv, VALUE mod)
*/
VALUE
-rb_class_protected_instance_methods(int argc, VALUE *argv, VALUE mod)
+rb_class_protected_instance_methods(argc, argv, mod)
+ int argc;
+ VALUE *argv;
+ VALUE mod;
{
return class_instance_method_list(argc, argv, mod, ins_methods_prot_i);
}
@@ -649,7 +705,10 @@ rb_class_protected_instance_methods(int argc, VALUE *argv, VALUE mod)
*/
VALUE
-rb_class_private_instance_methods(int argc, VALUE *argv, VALUE mod)
+rb_class_private_instance_methods(argc, argv, mod)
+ int argc;
+ VALUE *argv;
+ VALUE mod;
{
return class_instance_method_list(argc, argv, mod, ins_methods_priv_i);
}
@@ -664,26 +723,16 @@ rb_class_private_instance_methods(int argc, VALUE *argv, VALUE mod)
*/
VALUE
-rb_class_public_instance_methods(int argc, VALUE *argv, VALUE mod)
+rb_class_public_instance_methods(argc, argv, mod)
+ int argc;
+ VALUE *argv;
+ VALUE mod;
{
return class_instance_method_list(argc, argv, mod, ins_methods_pub_i);
}
/*
* call-seq:
- * mod.local_methods => array
- *
- * Returns a list of the local methods defined in <i>mod</i>.
- */
-
-VALUE
-rb_class_local_methods(VALUE mod)
-{
- return class_instance_method_list(0, 0, mod, ins_methods_local_i);
-}
-
-/*
- * call-seq:
* obj.singleton_methods(all=true) => array
*
* Returns an array of the names of singleton methods for <i>obj</i>.
@@ -715,7 +764,10 @@ rb_class_local_methods(VALUE mod)
*/
VALUE
-rb_obj_singleton_methods(int argc, VALUE *argv, VALUE obj)
+rb_obj_singleton_methods(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
VALUE recur, ary, klass;
st_table *list;
@@ -744,31 +796,53 @@ rb_obj_singleton_methods(int argc, VALUE *argv, VALUE obj)
}
void
-rb_define_method_id(VALUE klass, ID name, VALUE (*func)(ANYARGS), int argc)
+rb_define_method_id(klass, name, func, argc)
+ VALUE klass;
+ ID name;
+ VALUE (*func)();
+ int argc;
{
rb_add_method(klass, name, NEW_CFUNC(func,argc), NOEX_PUBLIC);
}
void
-rb_define_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
+rb_define_method(klass, name, func, argc)
+ VALUE klass;
+ const char *name;
+ VALUE (*func)();
+ int argc;
{
- rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PUBLIC);
+ ID id = rb_intern(name);
+ int ex = NOEX_PUBLIC;
+
+
+ rb_add_method(klass, id, NEW_CFUNC(func, argc), ex);
}
void
-rb_define_protected_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
+rb_define_protected_method(klass, name, func, argc)
+ VALUE klass;
+ const char *name;
+ VALUE (*func)();
+ int argc;
{
rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PROTECTED);
}
void
-rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc)
+rb_define_private_method(klass, name, func, argc)
+ VALUE klass;
+ const char *name;
+ VALUE (*func)();
+ int argc;
{
rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PRIVATE);
}
void
-rb_undef_method(VALUE klass, const char *name)
+rb_undef_method(klass, name)
+ VALUE klass;
+ const char *name;
{
rb_add_method(klass, rb_intern(name), 0, NOEX_UNDEF);
}
@@ -780,7 +854,8 @@ rb_undef_method(VALUE klass, const char *name)
} while (0)
VALUE
-rb_singleton_class(VALUE obj)
+rb_singleton_class(obj)
+ VALUE obj;
{
VALUE klass;
@@ -815,47 +890,77 @@ rb_singleton_class(VALUE obj)
}
void
-rb_define_singleton_method(VALUE obj, const char *name, VALUE (*func)(ANYARGS), int argc)
+rb_define_singleton_method(obj, name, func, argc)
+ VALUE obj;
+ const char *name;
+ VALUE (*func)();
+ int argc;
{
rb_define_method(rb_singleton_class(obj), name, func, argc);
}
void
-rb_define_module_function(VALUE module, const char *name, VALUE (*func)(ANYARGS), int argc)
+rb_define_module_function(module, name, func, argc)
+ VALUE module;
+ const char *name;
+ VALUE (*func)();
+ int argc;
{
rb_define_private_method(module, name, func, argc);
rb_define_singleton_method(module, name, func, argc);
}
void
-rb_define_global_function(const char *name, VALUE (*func)(ANYARGS), int argc)
+rb_define_global_function(name, func, argc)
+ const char *name;
+ VALUE (*func)();
+ int argc;
{
rb_define_module_function(rb_mKernel, name, func, argc);
}
void
-rb_define_alias(VALUE klass, const char *name1, const char *name2)
+rb_define_alias(klass, name1, name2)
+ VALUE klass;
+ const char *name1, *name2;
{
rb_alias(klass, rb_intern(name1), rb_intern(name2));
}
void
-rb_define_attr(VALUE klass, const char *name, int read, int write)
+rb_define_attr(klass, name, read, write)
+ VALUE klass;
+ const char *name;
+ int read, write;
{
rb_attr(klass, rb_intern(name), read, write, Qfalse);
}
+#ifdef HAVE_STDARG_PROTOTYPES
#include <stdarg.h>
+#define va_init_list(a,b) va_start(a,b)
+#else
+#include <varargs.h>
+#define va_init_list(a,b) va_start(a)
+#endif
int
+#ifdef HAVE_STDARG_PROTOTYPES
rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)
+#else
+rb_scan_args(argc, argv, fmt, va_alist)
+ int argc;
+ const VALUE *argv;
+ const char *fmt;
+ va_dcl
+#endif
{
int n, i = 0;
const char *p = fmt;
VALUE *var;
va_list vargs;
- va_start(vargs, fmt);
+ va_init_list(vargs, fmt);
if (*p == '*') goto rest_arg;
diff --git a/common.mk b/common.mk
index 1fabb641c5..3584b83e35 100644
--- a/common.mk
+++ b/common.mk
@@ -1,16 +1,13 @@
bin: $(PROGRAM) $(WPROGRAM)
-lib: $(LIBRUBY)
-dll: $(LIBRUBY_SO)
+lib: $(LIBRUBY);
+dll: $(LIBRUBY_SO);
RUBYOPT =
-NULLCMD =
STATIC_RUBY = static-ruby
EXTCONF = extconf.rb
RBCONFIG = ./.rbconfig.time
-LIBRUBY_EXTS = ./.libruby-with-ext.time
-RDOCOUT = $(EXTOUT)/rdoc
DMYEXT = dmyext.$(OBJEXT)
MAINOBJ = main.$(OBJEXT)
@@ -18,16 +15,13 @@ EXTOBJS =
DLDOBJS = $(DMYEXT)
OBJS = array.$(OBJEXT) \
- ascii.$(OBJEXT) \
bignum.$(OBJEXT) \
class.$(OBJEXT) \
compar.$(OBJEXT) \
dir.$(OBJEXT) \
dln.$(OBJEXT) \
enum.$(OBJEXT) \
- enumerator.$(OBJEXT) \
error.$(OBJEXT) \
- euc_jp.$(OBJEXT) \
eval.$(OBJEXT) \
file.$(OBJEXT) \
gc.$(OBJEXT) \
@@ -45,38 +39,24 @@ OBJS = array.$(OBJEXT) \
random.$(OBJEXT) \
range.$(OBJEXT) \
re.$(OBJEXT) \
- regcomp.$(OBJEXT) \
- regenc.$(OBJEXT) \
- regerror.$(OBJEXT) \
- regexec.$(OBJEXT) \
- regparse.$(OBJEXT) \
+ regex.$(OBJEXT) \
ruby.$(OBJEXT) \
signal.$(OBJEXT) \
- sjis.$(OBJEXT) \
sprintf.$(OBJEXT) \
st.$(OBJEXT) \
string.$(OBJEXT) \
struct.$(OBJEXT) \
time.$(OBJEXT) \
- utf8.$(OBJEXT) \
util.$(OBJEXT) \
variable.$(OBJEXT) \
version.$(OBJEXT) \
$(MISSING)
SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \
- --extout="$(EXTOUT)" \
--make="$(MAKE)" \
--mflags="$(MFLAGS)" \
--make-flags="$(MAKEFLAGS)"
-EXTMK_ARGS = $(SCRIPT_ARGS) --extension $(EXTS) --extstatic $(EXTSTATIC) --
-INSTRUBY_ARGS = $(SCRIPT_ARGS) --installed-list $(INSTALLED_LIST)
-
-PRE_LIBRUBY_UPDATE = $(MINIRUBY) -e 'ARGV[1] or File.unlink(ARGV[0]) rescue nil' -- \
- $(LIBRUBY_EXTS) $(LIBRUBY_SO_UPDATE)
-
-TESTSDIR = $(srcdir)/test
-TESTWORKDIR = testwork
+EXTMK_ARGS = $(SCRIPT_ARGS) --extout="$(EXTOUT)" --extension $(EXTS) --extstatic $(EXTSTATIC) --
all: $(MKFILES) $(PREP) $(RBCONFIG) $(LIBRUBY)
@$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS)
@@ -88,10 +68,7 @@ $(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)
$(LIBRUBY_A): $(OBJS) $(DMYEXT) $(ARCHFILE)
-$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP) $(LIBRUBY_SO_UPDATE)
-
-$(LIBRUBY_EXTS):
- @exit > $@
+$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP)
$(STATIC_RUBY)$(EXEEXT): $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A)
@$(RM) $@
@@ -103,177 +80,51 @@ ruby.imp: $(OBJS)
install: install-nodoc $(RDOCTARGET)
install-all: install-nodoc install-doc
-install-nodoc: pre-install-nodoc do-install-nodoc post-install-nodoc
-pre-install-nodoc:: pre-install-local pre-install-ext
-do-install-nodoc:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --mantype="$(MANTYPE)"
-post-install-nodoc:: post-install-local post-install-ext
-
+install-nodoc: install-local install-ext
install-local: pre-install-local do-install-local post-install-local
-pre-install-local:: pre-install-bin pre-install-lib pre-install-man
-do-install-local:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=local --mantype="$(MANTYPE)"
-post-install-local:: post-install-bin post-install-lib post-install-man
-
install-ext: pre-install-ext do-install-ext post-install-ext
-pre-install-ext:: pre-install-ext-arch pre-install-ext-comm
-do-install-ext:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=ext
-post-install-ext:: post-install-ext-arch post-install-ext-comm
-
-install-arch: pre-install-arch do-install-arch post-install-arch
-pre-install-arch:: pre-install-bin pre-install-ext-arch
-do-install-arch:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=bin --install=ext-arch
-post-install-arch:: post-install-bin post-install-ext-arch
-
-install-comm: pre-install-comm do-install-comm post-install-comm
-pre-install-comm:: pre-install-lib pre-install-ext-comm pre-install-man
-do-install-comm:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=lib --install=ext-comm --install=man
-post-install-comm:: post-install-lib post-install-ext-comm post-install-man
-
-install-bin: pre-install-bin do-install-bin post-install-bin
-pre-install-bin:: install-prereq
-do-install-bin:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=bin
-post-install-bin::
- @$(NULLCMD)
-
-install-lib: pre-install-lib do-install-lib post-install-lib
-pre-install-lib:: install-prereq
-do-install-lib:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=lib
-post-install-lib::
- @$(NULLCMD)
-
-install-ext-comm: pre-install-ext-comm do-install-ext-comm post-install-ext-comm
-pre-install-ext-comm:: install-prereq
-do-install-ext-comm:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=ext-comm
-post-install-ext-comm::
- @$(NULLCMD)
-
-install-ext-arch: pre-install-ext-arch do-install-ext-arch post-install-ext-arch
-pre-install-ext-arch:: install-prereq
-do-install-ext-arch:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=ext-arch
-post-install-ext-arch::
- @$(NULLCMD)
-
-install-man: pre-install-man do-install-man post-install-man
-pre-install-man:: install-prereq
-do-install-man:
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=man --mantype="$(MANTYPE)"
-post-install-man::
- @$(NULLCMD)
-
-what-where: no-install
-no-install: no-install-nodoc no-install-doc
-what-where-all: no-install-all
-no-install-all: no-install-nodoc
-
-what-where-nodoc: no-install-nodoc
-no-install-nodoc: pre-no-install-nodoc dont-install-nodoc post-no-install-nodoc
-pre-no-install-nodoc:: pre-no-install-local pre-no-install-ext
-dont-install-nodoc:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --mantype="$(MANTYPE)"
-post-no-install-nodoc:: post-no-install-local post-no-install-ext
-what-where-local: no-install-local
-no-install-local: pre-no-install-local dont-install-local post-no-install-local
-pre-no-install-local:: pre-no-install-bin pre-no-install-lib pre-no-install-man
-dont-install-local:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=local --mantype="$(MANTYPE)"
-post-no-install-local:: post-no-install-bin post-no-install-lib post-no-install-man
+do-install-local: $(RBCONFIG)
+ $(MINIRUBY) $(srcdir)/instruby.rb $(SCRIPT_ARGS) --mantype="$(MANTYPE)"
+do-install-ext: $(RBCONFIG)
+ $(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS) install
+
+install-bin: $(RBCONFIG)
+ $(MINIRUBY) $(srcdir)/instruby.rb $(SCRIPT_ARGS) --install=bin
+install-lib: $(RBCONFIG)
+ $(MINIRUBY) $(srcdir)/instruby.rb $(SCRIPT_ARGS) --install=lib
+install-man: $(RBCONFIG)
+ $(MINIRUBY) $(srcdir)/instruby.rb $(SCRIPT_ARGS) --install=man --mantype="$(MANTYPE)"
+what-where-all no-install-all: no-install no-install-doc
+what-where no-install: no-install-local no-install-ext
+what-where-local: no-install-local
+no-install-local: $(RBCONFIG)
+ $(MINIRUBY) $(srcdir)/instruby.rb -n $(SCRIPT_ARGS) --mantype="$(MANTYPE)"
what-where-ext: no-install-ext
-no-install-ext: pre-no-install-ext dont-install-ext post-no-install-ext
-pre-no-install-ext:: pre-no-install-ext-arch pre-no-install-ext-comm
-dont-install-ext:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=ext
-post-no-install-ext:: post-no-install-ext-arch post-no-install-ext-comm
-
-what-where-arch: no-install-arch
-no-install-arch: pre-no-install-arch dont-install-arch post-no-install-arch
-pre-no-install-arch:: pre-no-install-bin pre-no-install-ext-arch
-dont-install-arch:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=bin --install=ext-arch
-post-no-install-arch:: post-no-install-lib post-no-install-man post-no-install-ext-arch
-
-what-where-comm: no-install-comm
-no-install-comm: pre-no-install-comm dont-install-comm post-no-install-comm
-pre-no-install-comm:: pre-no-install-lib pre-no-install-ext-comm pre-no-install-man
-dont-install-comm:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=lib --install=ext-comm --install=man
-post-no-install-comm:: post-no-install-lib post-no-install-ext-comm post-no-install-man
-
-what-where-bin: no-install-bin
-no-install-bin: pre-no-install-bin dont-install-bin post-no-install-bin
-pre-no-install-bin:: install-prereq
-dont-install-bin:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=bin
-post-no-install-bin::
- @$(NULLCMD)
-
-what-where-lib: no-install-lib
-no-install-lib: pre-no-install-lib dont-install-lib post-no-install-lib
-pre-no-install-lib:: install-prereq
-dont-install-lib:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=lib
-post-no-install-lib::
- @$(NULLCMD)
-
-what-where-ext-comm: no-install-ext-comm
-no-install-ext-comm: pre-no-install-ext-comm dont-install-ext-comm post-no-install-ext-comm
-pre-no-install-ext-comm:: install-prereq
-dont-install-ext-comm:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=ext-comm
-post-no-install-ext-comm::
- @$(NULLCMD)
-
-what-where-ext-arch: no-install-ext-arch
-no-install-ext-arch: pre-no-install-ext-arch dont-install-ext-arch post-no-install-ext-arch
-pre-no-install-ext-arch:: install-prereq
-dont-install-ext-arch:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=ext-arch
-post-no-install-ext-arch::
- @$(NULLCMD)
-
-what-where-man: no-install-man
-no-install-man: pre-no-install-man dont-install-man post-no-install-man
-pre-no-install-man:: install-prereq
-dont-install-man:
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=man --mantype="$(MANTYPE)"
-post-no-install-man::
- @$(NULLCMD)
-
-install-doc: rdoc pre-install-doc do-install-doc post-install-doc
-pre-install-doc:: install-prereq
-do-install-doc: $(PROGRAM)
- $(MINIRUBY) $(srcdir)/instruby.rb $(INSTRUBY_ARGS) --install=rdoc --rdoc-output="$(RDOCOUT)"
-post-install-doc::
- @$(NULLCMD)
+no-install-ext: $(RBCONFIG)
+ $(MINIRUBY) $(srcdir)/ext/extmk.rb -n $(EXTMK_ARGS) install
-rdoc: $(PROGRAM) PHONY
+install-doc: pre-install-doc do-install-doc post-install-doc
+do-install-doc: $(PROGRAM)
@echo Generating RDoc documentation
- $(RUNRUBY) "$(srcdir)/bin/rdoc" --all --ri --op "$(RDOCOUT)" "$(srcdir)"
+ $(RUNRUBY) "$(srcdir)/bin/rdoc" --all --ri --op "$(RIDATADIR)" "$(srcdir)"
-what-where-doc: no-install-doc
-no-install-doc: pre-no-install-doc dont-install-doc post-no-install-doc
-pre-no-install-doc:: install-prereq
-dont-install-doc::
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(INSTRUBY_ARGS) --install=rdoc --rdoc-output="$(RDOCOUT)"
-post-no-install-doc::
- @$(NULLCMD)
+pre-install: pre-install-local pre-install-ext
+pre-install-local:: PHONY
+ $(PREINSTALL)
+pre-install-ext:: PHONY
+pre-install-doc:: PHONY
-install-prereq:
- @exit > $(INSTALLED_LIST)
+post-install: post-install-local post-install-ext
+post-install-local:: PHONY
+post-install-ext:: PHONY
+post-install-doc:: PHONY
clean: clean-ext clean-local
clean-local::
@$(RM) $(OBJS) $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES)
- @$(RM) $(PROGRAM) $(WPROGRAM) miniruby$(EXEEXT) dmyext.$(OBJEXT) $(ARCHFILE) .*.time
+ @$(RM) $(PROGRAM) $(WPROGRAM) miniruby$(EXEEXT) dmyext.$(OBJEXT) $(ARCHFILE)
clean-ext:
@-$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS) clean
@@ -294,7 +145,7 @@ test: miniruby$(EXEEXT) $(RBCONFIG) $(PROGRAM) PHONY
@$(MINIRUBY) $(srcdir)/rubytest.rb
test-all:
- $(RUNRUBY) "$(srcdir)/test/runner.rb" --basedir="$(TESTSDIR)" --runner=$(TESTUI) $(TESTS)
+ $(RUNRUBY) -C "$(srcdir)/test" runner.rb --runner=$(TESTUI) $(TESTS)
extconf:
$(MINIRUBY) -I$(srcdir)/lib -run -e mkdir -- -p "$(EXTCONFDIR)"
@@ -307,7 +158,7 @@ $(RBCONFIG): $(srcdir)/mkconfig.rb config.status $(PREP)
.PRECIOUS: $(MKFILES)
-.PHONY: test install install-nodoc install-doc
+.PHONY: test install install-nodoc install-doc dist
PHONY:
@@ -323,6 +174,7 @@ flock.$(OBJEXT): {$(VPATH)}flock.c
memcmp.$(OBJEXT): {$(VPATH)}memcmp.c
memmove.$(OBJEXT): {$(VPATH)}memmove.c
mkdir.$(OBJEXT): {$(VPATH)}mkdir.c
+vsnprintf.$(OBJEXT): {$(VPATH)}vsnprintf.c
strcasecmp.$(OBJEXT): {$(VPATH)}strcasecmp.c
strncasecmp.$(OBJEXT): {$(VPATH)}strncasecmp.c
strchr.$(OBJEXT): {$(VPATH)}strchr.c
@@ -337,8 +189,6 @@ nt.$(OBJEXT): {$(VPATH)}nt.c
x68.$(OBJEXT): {$(VPATH)}x68.c
os2.$(OBJEXT): {$(VPATH)}os2.c
dl_os2.$(OBJEXT): {$(VPATH)}dl_os2.c
-ia64.$(OBJEXT): {$(VPATH)}ia64.s
- $(CC) $(CFLAGS) -c $<
# when I use -I., there is confliction at "OpenFile"
# so, set . into environment varible "include"
@@ -349,8 +199,6 @@ win32.$(OBJEXT): {$(VPATH)}win32.c
array.$(OBJEXT): {$(VPATH)}array.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}util.h {$(VPATH)}st.h
-ascii.$(OBJEXT): {$(VPATH)}ascii.c {$(VPATH)}regenc.h \
- {$(VPATH)}oniguruma.h config.h
bignum.$(OBJEXT): {$(VPATH)}bignum.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
class.$(OBJEXT): {$(VPATH)}class.c {$(VPATH)}ruby.h config.h \
@@ -371,13 +219,9 @@ dmyext.$(OBJEXT): {$(VPATH)}dmyext.c
enum.$(OBJEXT): {$(VPATH)}enum.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}node.h {$(VPATH)}util.h
-enumerator.$(OBJEXT): {$(VPATH)}enumerator.c {$(VPATH)}ruby.h config.h \
- {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
error.$(OBJEXT): {$(VPATH)}error.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}env.h {$(VPATH)}st.h
-euc_jp.$(OBJEXT): {$(VPATH)}euc_jp.c {$(VPATH)}regenc.h \
- {$(VPATH)}oniguruma.h
eval.$(OBJEXT): {$(VPATH)}eval.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}node.h {$(VPATH)}env.h {$(VPATH)}util.h \
@@ -389,8 +233,7 @@ file.$(OBJEXT): {$(VPATH)}file.c {$(VPATH)}ruby.h config.h \
gc.$(OBJEXT): {$(VPATH)}gc.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}rubysig.h {$(VPATH)}st.h {$(VPATH)}node.h \
- {$(VPATH)}env.h {$(VPATH)}re.h {$(VPATH)}regex.h {$(VPATH)}regint.h \
- {$(VPATH)}oniguruma.h
+ {$(VPATH)}env.h {$(VPATH)}re.h {$(VPATH)}regex.h
hash.$(OBJEXT): {$(VPATH)}hash.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}st.h {$(VPATH)}util.h {$(VPATH)}rubysig.h
@@ -398,7 +241,8 @@ inits.$(OBJEXT): {$(VPATH)}inits.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
io.$(OBJEXT): {$(VPATH)}io.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
- {$(VPATH)}rubyio.h {$(VPATH)}rubysig.h {$(VPATH)}util.h
+ {$(VPATH)}rubyio.h {$(VPATH)}rubysig.h {$(VPATH)}util.h \
+ {$(VPATH)}env.h
main.$(OBJEXT): {$(VPATH)}main.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
marshal.$(OBJEXT): {$(VPATH)}marshal.c {$(VPATH)}ruby.h config.h \
@@ -429,37 +273,24 @@ range.$(OBJEXT): {$(VPATH)}range.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
re.$(OBJEXT): {$(VPATH)}re.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
- {$(VPATH)}re.h {$(VPATH)}regex.h {$(VPATH)}regint.h {$(VPATH)}oniguruma.h
-regcomp.$(OBJEXT): {$(VPATH)}regcomp.c {$(VPATH)}oniguruma.h \
- {$(VPATH)}regint.h {$(VPATH)}regparse.h {$(VPATH)}regenc.h config.h
-regenc.$(OBJEXT): {$(VPATH)}regenc.c {$(VPATH)}regint.h \
- {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h config.h
-regerror.$(OBJEXT): {$(VPATH)}regerror.c {$(VPATH)}regint.h \
- {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h config.h
-regexec.$(OBJEXT): {$(VPATH)}regexec.c {$(VPATH)}regint.h \
- {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h config.h
-regparse.$(OBJEXT): {$(VPATH)}regparse.c {$(VPATH)}oniguruma.h \
- {$(VPATH)}regint.h {$(VPATH)}regparse.h {$(VPATH)}regenc.h config.h
+ {$(VPATH)}re.h {$(VPATH)}regex.h
+regex.$(OBJEXT): {$(VPATH)}regex.c config.h {$(VPATH)}regex.h
ruby.$(OBJEXT): {$(VPATH)}ruby.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}dln.h {$(VPATH)}node.h {$(VPATH)}util.h
signal.$(OBJEXT): {$(VPATH)}signal.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}rubysig.h
-sjis.$(OBJEXT): {$(VPATH)}sjis.c {$(VPATH)}regenc.h \
- {$(VPATH)}oniguruma.h config.h
sprintf.$(OBJEXT): {$(VPATH)}sprintf.c {$(VPATH)}ruby.h config.h \
- {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}vsnprintf.c
+ {$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
st.$(OBJEXT): {$(VPATH)}st.c config.h {$(VPATH)}st.h
string.$(OBJEXT): {$(VPATH)}string.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
- {$(VPATH)}re.h {$(VPATH)}regex.h {$(VPATH)}regint.h {$(VPATH)}oniguruma.h
+ {$(VPATH)}re.h {$(VPATH)}regex.h
struct.$(OBJEXT): {$(VPATH)}struct.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
time.$(OBJEXT): {$(VPATH)}time.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
-utf8.$(OBJEXT): {$(VPATH)}utf8.c {$(VPATH)}regenc.h \
- {$(VPATH)}oniguruma.h config.h
util.$(OBJEXT): {$(VPATH)}util.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}util.h
@@ -469,3 +300,6 @@ variable.$(OBJEXT): {$(VPATH)}variable.c {$(VPATH)}ruby.h config.h \
version.$(OBJEXT): {$(VPATH)}version.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}version.h
+
+dist: $(PROGRAM)
+ $(RUNRUBY) $(srcdir)/distruby.rb
diff --git a/compar.c b/compar.c
index 80c4c70ca6..3cd3216b77 100644
--- a/compar.c
+++ b/compar.c
@@ -2,8 +2,8 @@
compar.c -
- $Author$
- $Date$
+ $Author: dave $
+ $Date: 2003/12/19 00:01:18 $
created at: Thu Aug 26 14:39:48 JST 1993
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -17,7 +17,8 @@ VALUE rb_mComparable;
static ID cmp;
int
-rb_cmpint(VALUE val, VALUE a, VALUE b)
+rb_cmpint(val, a, b)
+ VALUE val, a, b;
{
if (NIL_P(val)) {
rb_cmperr(a, b);
@@ -33,7 +34,8 @@ rb_cmpint(VALUE val, VALUE a, VALUE b)
}
void
-rb_cmperr(VALUE x, VALUE y)
+rb_cmperr(x, y)
+ VALUE x, y;
{
const char *classname;
@@ -48,20 +50,23 @@ rb_cmperr(VALUE x, VALUE y)
rb_obj_classname(x), classname);
}
+#define cmperr() (rb_cmperr(x, y), Qnil)
+
static VALUE
-cmp_eq(VALUE *a)
+cmp_eq(a)
+ VALUE *a;
{
VALUE c = rb_funcall(a[0], cmp, 1, a[1]);
- if (NIL_P(c)) return Qfalse;
+ if (NIL_P(c)) return Qnil;
if (rb_cmpint(c, a[0], a[1]) == 0) return Qtrue;
return Qfalse;
}
static VALUE
-cmp_failed(void)
+cmp_failed()
{
- return Qfalse;
+ return Qnil;
}
/*
@@ -74,7 +79,8 @@ cmp_failed(void)
*/
static VALUE
-cmp_equal(VALUE x, VALUE y)
+cmp_equal(x, y)
+ VALUE x, y;
{
VALUE a[2];
@@ -93,10 +99,12 @@ cmp_equal(VALUE x, VALUE y)
*/
static VALUE
-cmp_gt(VALUE x, VALUE y)
+cmp_gt(x, y)
+ VALUE x, y;
{
VALUE c = rb_funcall(x, cmp, 1, y);
+ if (NIL_P(c)) return cmperr();
if (rb_cmpint(c, x, y) > 0) return Qtrue;
return Qfalse;
}
@@ -110,10 +118,12 @@ cmp_gt(VALUE x, VALUE y)
*/
static VALUE
-cmp_ge(VALUE x, VALUE y)
+cmp_ge(x, y)
+ VALUE x, y;
{
VALUE c = rb_funcall(x, cmp, 1, y);
+ if (NIL_P(c)) return cmperr();
if (rb_cmpint(c, x, y) >= 0) return Qtrue;
return Qfalse;
}
@@ -127,14 +137,17 @@ cmp_ge(VALUE x, VALUE y)
*/
static VALUE
-cmp_lt(VALUE x, VALUE y)
+cmp_lt(x, y)
+ VALUE x, y;
{
VALUE c = rb_funcall(x, cmp, 1, y);
+ if (NIL_P(c)) return cmperr();
if (rb_cmpint(c, x, y) < 0) return Qtrue;
return Qfalse;
}
+
/*
* call-seq:
* obj <= other => true or false
@@ -144,10 +157,12 @@ cmp_lt(VALUE x, VALUE y)
*/
static VALUE
-cmp_le(VALUE x, VALUE y)
+cmp_le(x, y)
+ VALUE x, y;
{
VALUE c = rb_funcall(x, cmp, 1, y);
+ if (NIL_P(c)) return cmperr();
if (rb_cmpint(c, x, y) <= 0) return Qtrue;
return Qfalse;
}
@@ -168,7 +183,8 @@ cmp_le(VALUE x, VALUE y)
*/
static VALUE
-cmp_between(VALUE x, VALUE min, VALUE max)
+cmp_between(x, min, max)
+ VALUE x, min, max;
{
if (RTEST(cmp_lt(x, min))) return Qfalse;
if (RTEST(cmp_gt(x, max))) return Qfalse;
@@ -213,7 +229,7 @@ cmp_between(VALUE x, VALUE min, VALUE max)
*/
void
-Init_Comparable(void)
+Init_Comparable()
{
rb_mComparable = rb_define_module("Comparable");
rb_define_method(rb_mComparable, "==", cmp_equal, 1);
diff --git a/config.sub b/config.sub
index 463186dbfd..506d3ab77f 100644
--- a/config.sub
+++ b/config.sub
@@ -3,7 +3,7 @@
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-timestamp='2004-01-05'
+timestamp='2004-06-11'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -1130,7 +1130,7 @@ case $os in
os=-sysv4.2uw
;;
-gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ os=`echo $os | sed -e 's|gnu/linux|linux|'`
;;
# First accept the basic system types.
# The portable systems comes first.
@@ -1183,7 +1183,7 @@ case $os in
os=-linux-dietlibc
;;
-linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ os=-linux
;;
-sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'`
diff --git a/configure.in b/configure.in
index e7e611eee5..b3288f8c03 100644
--- a/configure.in
+++ b/configure.in
@@ -148,7 +148,6 @@ if test x"${build}" != x"${host}"; then
AC_CHECK_TOOL(CC, gcc)
fi
AC_PROG_CC
-AC_PROG_CXX
AC_PROG_GCC_TRADITIONAL
RUBY_PROG_GNU_LD
@@ -159,6 +158,11 @@ AC_SUBST(OUTFLAG)
RUBY_MINGW32
+AC_PROG_YACC
+if test "$YACC" = "yacc"; then
+ AC_DEFINE([OLD_YACC])
+fi
+
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_CHECK_TOOL(AR, ar)
if test -z "$AR"; then
@@ -187,6 +191,15 @@ cygwin*|mingw*)
sed -n '/^[[ ]]*dll name: \(msvc.*\)\.dll$/{s//\1/p;q;}'`],
[rb_cv_msvcrt=msvcrt])
test "$rb_cv_msvcrt" = "" && rb_cv_msvcrt=msvcrt])
+ AC_ARG_WITH(winsock2,
+ [ --with-winsock2 link winsock2 (MinGW only)], [
+ case $withval in
+ yes) with_winsock2=yes;;
+ *) with_winsock2=no;;
+ esac], [with_winsock2=no])
+ if test "$with_winsock2" = yes; then
+ AC_DEFINE(USE_WINSOCK2)
+ fi
esac
: ${enable_shared=yes}
;;
@@ -218,13 +231,6 @@ fi
dnl check for large file stuff
AC_SYS_LARGEFILE
-case "$target_os" in
-mingw*)
- ac_cv_type_off_t=yes
- ac_cv_sizeof_off_t=8
- ;;
-esac
-
AC_CHECK_TYPES([long long, off_t])
AC_CHECK_SIZEOF(int, 4)
@@ -280,45 +286,16 @@ if test "$rb_cv_stdarg" = yes; then
AC_DEFINE(HAVE_STDARG_PROTOTYPES)
fi
-AC_DEFUN([RUBY_FUNC_ATTRIBUTE], [dnl
-m4_ifval([$2], dnl
- [AS_VAR_PUSHDEF([attrib],[$2])], dnl
- [AS_VAR_PUSHDEF([attrib],[FUNC_]AS_TR_CPP($1))] dnl
-)dnl
-m4_ifval([$3], dnl
- [AS_VAR_PUSHDEF([rbcv],[$3])], dnl
- [AS_VAR_PUSHDEF([rbcv],[rb_cv_func_][$1])]dnl
-)dnl
-AC_CACHE_CHECK(for [$1] function attribute, rbcv,
-[rbcv=x
-if test "${ac_c_werror_flag+set}"; then
- rb_c_werror_flag="$ac_c_werror_flag"
-else
- unset rb_c_werror_flag
-fi
-ac_c_werror_flag=yes
-for mac in "__attribute__ (($1)) x" "x __attribute__ (($1))" "__declspec($1) x" x; do
+AC_CACHE_CHECK([for noreturn], rb_cv_noreturn,
+[rb_cv_noreturn=x
+for mac in "x __attribute__ ((noreturn))" "__declspec(noreturn) x" x; do
AC_TRY_COMPILE(
- [#define ]attrib[(x) $mac
- ]attrib[(void conftest_attribute_check(void));], [],
- [rbcv="$mac"; break])
-done
-if test "${rb_c_werror_flag+set}"; then
- ac_c_werror_flag="$rb_c_werror_flag"
-else
- unset ac_c_werror_flag
-fi
-])
-AC_DEFINE_UNQUOTED(attrib[(x)], $rbcv)
-AS_VAR_POPDEF([attrib])
-AS_VAR_POPDEF([rbcv])
-])
-
-RUBY_FUNC_ATTRIBUTE(noreturn, NORETURN)
-RUBY_FUNC_ATTRIBUTE(deprecated, DEPRECATED)
-RUBY_FUNC_ATTRIBUTE(noinline, NOINLINE)
-RUBY_FUNC_ATTRIBUTE(stdcall)
-RUBY_FUNC_ATTRIBUTE(cdecl)
+ [#define NORETURN(x) $mac
+NORETURN(void exit(int x));],
+ [],
+ [rb_cv_noreturn="$mac"; break])
+done])
+AC_DEFINE_UNQUOTED([NORETURN(x)], $rb_cv_noreturn)
AC_CACHE_CHECK([for RUBY_EXTERN], rb_cv_ruby_extern,
[rb_cv_ruby_extern=no
@@ -364,7 +341,11 @@ cygwin*) rb_cv_have_daylight=no
ac_cv_func__setjmp=no
ac_cv_func_setitimer=no
;;
-mingw*) LIBS="-lshell32 -lws2_32 $LIBS"
+mingw*) if test "$with_winsock2" = yes; then
+ LIBS="-lws2_32 $LIBS"
+ else
+ LIBS="-lwsock32 $LIBS"
+ fi
ac_cv_header_a_out_h=no
ac_cv_header_pwd_h=no
ac_cv_header_utime_h=no
@@ -377,7 +358,6 @@ mingw*) LIBS="-lshell32 -lws2_32 $LIBS"
ac_cv_func_times=yes
ac_cv_func_waitpid=yes
ac_cv_func_fsync=yes
- ac_cv_func_snprintf=yes
ac_cv_func_vsnprintf=yes
ac_cv_func_seekdir=yes
ac_cv_func_telldir=yes
@@ -385,9 +365,6 @@ mingw*) LIBS="-lshell32 -lws2_32 $LIBS"
ac_cv_func_isnan=yes
ac_cv_func_finite=yes
ac_cv_func_link=yes
- ac_cv_func_truncate=yes
- ac_cv_func_fseeko=yes
- ac_cv_func_ftello=yes
ac_cv_lib_crypt_crypt=no
ac_cv_func_getpgrp_void=no
ac_cv_func_setpgrp_void=yes
@@ -402,8 +379,7 @@ os2-emx*) LIBS="-lm $LIBS"
msdosdjgpp*) LIBS="-lm $LIBS"
ac_cv_func_getpgrp_void=yes
ac_cv_func_setitimer=no
- ac_cv_sizeof_rlim_t=4
- ac_cv_func_fork=no
+ ac_cv_sizeof_rlim_t=4
;;
bsdi*) LIBS="-lm $LIBS"
ac_cv_sizeof_rlim_t=8;;
@@ -456,7 +432,6 @@ esac
AC_CHECK_LIB(crypt, crypt)
AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
-AC_CHECK_LIB(socket, socketpair) # SunOS/Solaris
case "$target_cpu" in
alpha*) case "$target_os"::"$GCC" in
@@ -498,47 +473,25 @@ AC_STRUCT_ST_BLKSIZE
AC_STRUCT_ST_BLOCKS
AC_STRUCT_ST_RDEV
-AC_CHECK_TYPE(fd_mask, [AC_DEFINE(HAVE_RB_FD_INIT, 1)])
-
-AC_CACHE_CHECK(for stack end address, rb_cv_stack_end_address,
-[rb_cv_stack_end_address=no
-for addr in __libc_stack_end _SEND; do
- AC_TRY_LINK(
- [extern void *$addr;],
- [if (!$addr) return 1;],
- [rb_cv_stack_end_address="$addr"; break])
-done])
-if test $rb_cv_stack_end_address != no; then
- AC_DEFINE_UNQUOTED(STACK_END_ADDRESS, $rb_cv_stack_end_address)
-fi
-
dnl Checks for library functions.
AC_TYPE_GETGROUPS
AC_TYPE_SIGNAL
-case "${target_cpu}-${target_os}" in
-powerpc-darwin*)
- AC_LIBSOURCES(alloca.c)
- AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}])
- AC_DEFINE(C_ALLOCA)
- AC_DEFINE_UNQUOTED(alloca, alloca)
- ;;
-*)
- AC_FUNC_ALLOCA
- ;;
-esac
+AC_FUNC_ALLOCA
AC_FUNC_MEMCMP
+AC_FUNC_FSEEKO
+AC_CHECK_FUNCS(ftello)
AC_REPLACE_FUNCS(dup2 memmove strcasecmp strncasecmp strerror strftime\
- strchr strstr strtoul crypt flock\
+ strchr strstr strtoul crypt flock vsnprintf\
isnan finite isinf hypot acosh erf)
-AC_CHECK_FUNCS(fmod killpg wait4 waitpid fork spawnv syscall chroot fsync getcwd eaccess\
- truncate chsize times utimes fcntl lockf lstat link symlink readlink\
- setitimer setruid seteuid setreuid setresuid setproctitle socketpair\
- setrgid setegid setregid setresgid issetugid pause lchown lchmod\
- getpgrp setpgrp getpgid setpgid initgroups getgroups setgroups\
- getpriority getrlimit setrlimit sysconf\
- dlopen sigprocmask sigaction _setjmp vsnprintf snprintf\
- setsid telldir seekdir fchmod mktime timegm cosh sinh tanh log2\
- setuid setgid daemon select_large_fdset setenv unsetenv)
+AC_CHECK_FUNCS(fmod killpg wait4 waitpid syscall chroot fsync getcwd eaccess\
+ truncate chsize times utimes fcntl lockf lstat symlink link\
+ readlink setitimer setruid seteuid setreuid setresuid\
+ setproctitle setrgid setegid setregid setresgid issetugid pause\
+ lchown lchmod getpgrp setpgrp getpgid setpgid initgroups\
+ getgroups setgroups getpriority getrlimit setrlimit sysconf\
+ dlopen sigprocmask\
+ sigaction _setjmp setsid telldir seekdir fchmod mktime timegm\
+ cosh sinh tanh setuid setgid setenv unsetenv)
AC_ARG_ENABLE(setreuid,
[ --enable-setreuid use setreuid()/setregid() according to need even if obsolete.],
[use_setreuid=$enableval])
@@ -642,21 +595,6 @@ AC_C_CHAR_UNSIGNED
AC_C_INLINE
AC_C_VOLATILE
-if test x"$target_cpu" = xia64; then
- AC_LIBOBJ([ia64])
- AC_CACHE_CHECK(for __libc_ia64_register_backing_store_base,
- rb_cv___libc_ia64_register_backing_store_base,
- [rb_cv___libc_ia64_register_backing_store_base=no
- AC_TRY_LINK(
- [extern unsigned long __libc_ia64_register_backing_store_base;],
- [unsigned long p = __libc_ia64_register_backing_store_base;
- printf("%ld\n", p);],
- [rb_cv___libc_ia64_register_backing_store_base=yes])])
- if test $rb_cv___libc_ia64_register_backing_store_base = yes; then
- AC_DEFINE(HAVE___LIBC_IA64_REGISTER_BACKING_STORE_BASE)
- fi
-fi
-
AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign,
[AC_TRY_RUN([
int
@@ -741,6 +679,69 @@ else
fi
fi
+AC_DEFUN([RUBY_CHECK_IO_NEED],
+[AC_CACHE_CHECK(whether need to [$1], [$2],
+ [AC_TRY_RUN([
+#include <stdio.h>
+#ifndef SEEK_SET
+#define SEEK_SET 0
+#endif
+#ifndef SEEK_CUR
+#define SEEK_CUR 1
+#endif
+#define before_seek(f) ]ifelse(index($2,flush_before_seek),-1,[fflush(f)],[(f,0)])[
+#define reset_rw(f) ]ifelse(index($2,seek_between_rw),-1,[do_seek(f,SEEK_CUR)],[(f,0)])[
+#define do_seek(f, w) (before_seek(f), fseek(f,0,w))
+
+char *fn = "conftest.dat";
+char *wombat = "wombat\n";
+char *koara = "koara\n";
+char *kangaroo = "kangaroo\n";
+
+int main()
+{
+ char buf[BUFSIZ];
+ FILE *f;
+ int r = 1;
+
+ if (!(f = fopen(fn, "w+"))) return 1;
+ fputs(wombat, f);
+ do_seek(f, SEEK_SET);
+ if (!fgets(buf, BUFSIZ, f) || strcmp(buf, wombat)) goto fail;
+ reset_rw(f);
+ fputs(koara, f);
+ fputs(kangaroo, f);
+ do_seek(f, SEEK_SET);
+ if (!fgets(buf, BUFSIZ, f) || strcmp(buf, wombat)) goto fail;
+ if (!fgets(buf, BUFSIZ, f) || strcmp(buf, koara)) goto fail;
+ if (!fgets(buf, BUFSIZ, f) || strcmp(buf, kangaroo)) goto fail;
+ do_seek(f, SEEK_SET);
+ if (!fgets(buf, BUFSIZ, f) || strcmp(buf, wombat)) goto fail;
+ reset_rw(f);
+ fputc('X', f);
+ reset_rw(f);
+ if (!fgets(buf, BUFSIZ, f) || strcmp(buf, koara+1)) goto fail;
+ if (!fgets(buf, BUFSIZ, f) || strcmp(buf, kangaroo)) goto fail;
+ do_seek(f, SEEK_SET);
+ if (!fgets(buf, BUFSIZ, f) || strcmp(buf, wombat)) goto fail;
+ if (!fgets(buf, BUFSIZ, f) || buf[0] != 'X' || strcmp(buf+1, koara+1)) goto fail;
+ if (!fgets(buf, BUFSIZ, f) || strcmp(buf, kangaroo)) goto fail;
+ r = 0;
+ fail:
+ fclose(f);
+ unlink(fn);
+ return r;
+}
+], [$2]=no, [$2]=yes, [$2]=[$3])])])
+RUBY_CHECK_IO_NEED(seek between R/W, rb_cv_need_io_seek_between_rw, yes)
+if test "$rb_cv_need_io_seek_between_rw" = yes; then
+ AC_DEFINE(NEED_IO_SEEK_BETWEEN_RW, 1)
+fi
+dnl RUBY_CHECK_IO_NEED(flush before seek, rb_cv_need_io_flush_before_seek, no)
+dnl if test "$rb_cv_need_io_flush_before_seek" = yes; then
+dnl AC_DEFINE(NEED_IO_FLUSH_BEFORE_SEEK, 1)
+dnl fi
+
AC_CACHE_CHECK([whether st_ino is huge], rb_cv_huge_st_ino,
[AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([
#include <sys/stat.h>
@@ -826,7 +827,7 @@ if test x"$enable_pthread" = xyes; then
fi
fi
if test x"$ac_cv_header_ucontext_h" = xyes; then
- if test x"$rb_with_pthread" = xyes; then
+ if test x"$target_cpu" = xia64 -o x"$rb_with_pthread" = xyes; then
AC_CHECK_FUNCS(getcontext setcontext)
fi
fi
@@ -895,7 +896,6 @@ AC_SUBST(ARCH_FLAG)dnl
AC_SUBST(STATIC)dnl
AC_SUBST(CCDLFLAGS)dnl
AC_SUBST(LDSHARED)dnl
-AC_SUBST(LDSHAREDXX)dnl
AC_SUBST(DLEXT)dnl
AC_SUBST(DLEXT2)dnl
AC_SUBST(LIBEXT)dnl
@@ -994,15 +994,13 @@ if test "$with_dln_a_out" != yes; then
: ${LIBPATHENV=DYLD_LIBRARY_PATH}
rb_cv_dlopen=yes ;;
aix*) if test "$GCC" = yes; then
- : ${LDSHARED='$(CC) -shared'}
- DLDFLAGS='-Wl,-G -eInit_$(TARGET)'
- LDFLAGS='-Wl,-brtl'
- XLDFLAGS='-Wl,-bE:ruby.imp'
- else
- : ${LDSHARED='/usr/ccs/bin/ld'}
- DLDFLAGS='-G -eInit_$(TARGET)'
- LDFLAGS='-brtl'
- XLDFLAGS='-bE:ruby.imp'
+ : ${LDSHARED='gcc -shared'}
+ DLDFLAGS='-Wl,-G -eInit_$(TARGET)'
+ LDFLAGS='-Wl,-brtl -Wl,-bE:ruby.imp'
+ else
+ : ${LDSHARED='/usr/ccs/bin/ld'}
+ DLDFLAGS='-G -eInit_$(TARGET)'
+ LDFLAGS="-brtl -bE:ruby.imp"
fi
: ${ARCHFILE="ruby.imp"}
TRY_LINK='$(CC) $(LDFLAGS) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)'
@@ -1056,22 +1054,6 @@ if test "$with_dln_a_out" != yes; then
fi
fi
fi
-if test "${LDSHAREDXX}" = ""; then
- case "${LDSHARED}" in
- *'$(CC)'*)
- LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\$(CC)/$(CXX)/'`
- ;;
- *'${CC}'*)
- LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\${CC}/${CXX}/'`
- ;;
- *$CC*)
- LDSHAREDXX=`echo "${LDSHARED}" | sed "s|$CC|$CXX|"`
- ;;
- ld" "*)
- ;;
- esac
-fi
-
AC_SUBST(LINK_SO)
AC_SUBST(LIBPATHFLAG)
AC_SUBST(RPATHFLAG)
@@ -1121,7 +1103,9 @@ else
os2-emx*) DLEXT=dll
AC_DEFINE(DLEXT, ".dll");;
cygwin*|mingw*) DLEXT=so
- AC_DEFINE(DLEXT, ".so");;
+ AC_DEFINE(DLEXT, ".so")
+ DLEXT2=dll
+ AC_DEFINE(DLEXT2, ".dll");;
*) DLEXT=so
AC_DEFINE(DLEXT, ".so");;
esac
@@ -1324,12 +1308,13 @@ if test "$enable_shared" = 'yes'; then
;;
aix*)
if test "$GCC" = yes; then
- LIBRUBY_DLDFLAGS='-Wl,-G -Wl,-bnoentry'
+ LIBRUBY_LDSHARED='$(CC) -shared'
+ LIBRUBY_DLDFLAGS='-Wl,-G -Wl,-bE:ruby.imp -Wl,-bnoentry'
else
- LIBRUBY_DLDFLAGS='-G -bnoentry'
+ LIBRUBY_LDSHARED='/usr/ccs/bin/ld'
+ LIBRUBY_DLDFLAGS='-G -bE:ruby.imp -bnoentry'
fi
- LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS $XLDFLAGS"
- LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}'
+ LIBRUBYARG_SHARED='-L${libdir} -lruby'
SOLIBS='-lm -lc'
;;
beos*)
@@ -1366,8 +1351,8 @@ AC_SUBST(ARCHFILE)
dnl build rdoc index if requested
RDOCTARGET=""
AC_ARG_ENABLE(install-doc,
- [ --disable-install-doc do not install rdoc indexes during install ],
- [install_doc=$enableval], [install_doc=yes])
+ [ --enable-install-doc build and install rdoc indexes during install ],
+ [install_doc=$enableval], [install_doc=no])
if test "$install_doc" != no; then
RDOCTARGET="install-doc"
fi
@@ -1424,11 +1409,11 @@ case "$target_os" in
esac
;;
cygwin*|mingw*)
- LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)'
case "$target_os" in
cygwin*)
if test x"$enable_shared" = xyes; then
LIBRUBY_SO='cyg$(RUBY_SO_NAME)'${MAJOR}${MINOR}.dll
+ LIBRUBY='lib$(RUBY_SO_NAME).dll.a'
fi
AC_LIBOBJ([strftime])
;;
@@ -1436,20 +1421,19 @@ case "$target_os" in
RUBY_SO_NAME=${rb_cv_msvcrt}-'$(RUBY_INSTALL_NAME)'${MAJOR}${MINOR}
if test x"$enable_shared" = xyes; then
LIBRUBY_SO='$(RUBY_SO_NAME)'.dll
- LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'
+ LIBRUBY='lib$(LIBRUBY_SO).a'
fi
AC_LIBOBJ([win32])
COMMON_LIBS=m
# COMMON_MACROS="WIN32_LEAN_AND_MEAN="
- COMMON_HEADERS="winsock2.h windows.h"
+ COMMON_HEADERS="windows.h winsock.h"
;;
esac
+ LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)'
LIBRUBY_ALIASES=''
FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in
SOLIBS='$(LIBS)'
- if test x"$enable_shared" = xyes; then
- LIBRUBY='lib$(RUBY_SO_NAME).dll.a'
- else
+ if test x"$enable_shared" = xno; then
LIBRUBY_SO=dummy
LIBRUBY='lib$(RUBY_SO_NAME).a'
LIBRUBYARG='-l$(RUBY_SO_NAME)'
@@ -1465,6 +1449,9 @@ case "$target_os" in
esac
MINIOBJS=dmydln.o
;;
+ aix*)
+ PREINSTALL='@$(RM) -r $(prefix)/lib/$(LIBRUBY_A) $(prefix)/lib/$(LIBRUBY_SO) $(prefix)/lib/ruby/$(MAJOR).$(MINOR)/$(arch)'
+ ;;
*)
;;
esac
@@ -1497,6 +1484,7 @@ AC_SUBST(COMMON_MACROS)
AC_SUBST(COMMON_HEADERS)
AC_SUBST(EXPORT_PREFIX)
AC_SUBST(MINIOBJS)
+AC_SUBST(PREINSTALL)
MAKEFILES="Makefile `echo $FIRSTMAKEFILE | sed 's/:.*//'`"
MAKEFILES="`echo $MAKEFILES`"
@@ -1531,7 +1519,7 @@ AC_ARG_WITH(sitedir,
[ --with-sitedir=DIR site libraries in DIR [PREFIX/lib/ruby/site_ruby]],
[sitedir=$withval],
[sitedir='${prefix}/lib/ruby/site_ruby'])
-SITE_DIR="`eval \"echo ${sitedir}\"`"
+SITE_DIR=`eval echo \\"${sitedir}\\"`
case "$target_os" in
cygwin*|mingw*|*djgpp*|os2-emx*)
RUBY_SITE_LIB_PATH="`expr "$SITE_DIR" : "$prefix\(/.*\)"`" ||
diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in
index c9283d84b1..03208df11c 100644
--- a/cygwin/GNUmakefile.in
+++ b/cygwin/GNUmakefile.in
@@ -28,7 +28,6 @@ WPROGRAM = $(RUBYW_INSTALL_NAME)$(EXEEXT)
SOLIBS := $(DLL_BASE_NAME).res.@OBJEXT@ $(SOLIBS)
EXTOBJS += $(@:$(EXEEXT)=.res.@OBJEXT@)
RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(DLL_BASE_NAME).rc
-RUBYDEF = $(RUBY_SO_NAME).def
ruby: $(PROGRAM)
rubyw: $(WPROGRAM)
@@ -62,11 +61,6 @@ GNUmakefile: $(srcdir)/cygwin/GNUmakefile.in
ifeq (@target_os@,mingw32)
$(OBJS) $(MAINOBJ): win32/win32.h
-
-$(LIBRUBY_SO): $(RUBYDEF)
-
-$(RUBYDEF): $(LIBRUBY_A) $(PREP) $(RBCONFIG)
- $(MINIRUBY) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
endif
ifeq (@target_os@,cygwin)
diff --git a/defines.h b/defines.h
index 9e26a2522b..89167e537e 100644
--- a/defines.h
+++ b/defines.h
@@ -2,8 +2,8 @@
defines.h -
- $Author$
- $Date$
+ $Author: nobu $
+ $Date: 2005/10/25 16:59:57 $
created at: Wed May 18 00:21:44 JST 1994
************************************************/
@@ -42,18 +42,14 @@
#endif
#define xmalloc ruby_xmalloc
-#define xmalloc2 ruby_xmalloc2
#define xcalloc ruby_xcalloc
#define xrealloc ruby_xrealloc
-#define xrealloc2 ruby_xrealloc2
#define xfree ruby_xfree
-void *xmalloc(size_t);
-void *xmalloc2(size_t,size_t);
-void *xcalloc(size_t,size_t);
-void *xrealloc(void*,size_t);
-void *xrealloc2(void*,size_t,size_t);
-void xfree(void*);
+void *xmalloc _((long));
+void *xcalloc _((long,long));
+void *xrealloc _((void*,long));
+void xfree _((void*));
#if SIZEOF_LONG_LONG > 0
# define LONG_LONG long long
@@ -188,7 +184,7 @@ void xfree(void*);
#endif
#if defined(__VMS)
-#include "vms/vms.h"
+#include "vms.h"
#endif
#if defined(__BEOS__)
@@ -207,11 +203,6 @@ void xfree(void*);
#define EXTERN RUBY_EXTERN /* deprecated */
#endif
-#ifndef RUBY_MBCHAR_MAXSIZE
-#define RUBY_MBCHAR_MAXSIZE INT_MAX
- /* MB_CUR_MAX will not work well in C locale */
-#endif
-
#if defined(sparc) || defined(__sparc__)
static inline void
flush_register_windows(void)
@@ -230,10 +221,13 @@ flush_register_windows(void)
;
}
# define FLUSH_REGISTER_WINDOWS flush_register_windows()
-#elif defined(__ia64)
-void *rb_ia64_bsp(void);
-void rb_ia64_flushrs(void);
-# define FLUSH_REGISTER_WINDOWS rb_ia64_flushrs()
+#elif defined(__ia64__)
+void flush_register_windows(void)
+# if defined(__GNUC__) && (( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3)
+__attribute__ ((noinline))
+# endif
+ ;
+# define FLUSH_REGISTER_WINDOWS flush_register_windows()
#else
# define FLUSH_REGISTER_WINDOWS ((void)0)
#endif
diff --git a/dir.c b/dir.c
index 22d3400fe4..0798b3f76f 100644
--- a/dir.c
+++ b/dir.c
@@ -2,8 +2,8 @@
dir.c -
- $Author$
- $Date$
+ $Author: shyouhei $
+ $Date: 2006/12/14 14:50:13 $
created at: Wed Jan 5 09:51:01 JST 1994
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -56,7 +56,7 @@ char *getenv();
#endif
#ifndef HAVE_STRING_H
-char *strchr(char*,char);
+char *strchr _((char*,char));
#endif
#include <ctype.h>
@@ -89,261 +89,153 @@ char *strchr(char*,char);
#define FNM_ERROR 2
#define downcase(c) (nocase && ISUPPER(c) ? tolower(c) : (c))
-#define compare(c1, c2) (((unsigned char)(c1)) - ((unsigned char)(c2)))
-
-/* caution: in case *p == '\0'
- Next(p) == p + 1 in single byte environment
- Next(p) == p in multi byte environment
-*/
-#if defined(CharNext)
-# define Next(p) CharNext(p)
-#elif defined(DJGPP)
-# define Next(p) ((p) + mblen(p, RUBY_MBCHAR_MAXSIZE))
-#elif defined(__EMX__)
-# define Next(p) ((p) + emx_mblen(p))
-static inline int
-emx_mblen(const char *p)
-{
- int n = mblen(p, RUBY_MBCHAR_MAXSIZE);
- return (n < 0) ? 1 : n;
-}
-#endif
-#ifndef Next /* single byte environment */
-# define Next(p) ((p) + 1)
-# define Inc(p) (++(p))
-# define Compare(p1, p2) (compare(downcase(*(p1)), downcase(*(p2))))
-#else /* multi byte environment */
-# define Inc(p) ((p) = Next(p))
-# define Compare(p1, p2) (CompareImpl(p1, p2, nocase))
-static int
-CompareImpl(const char *p1, const char *p2, int nocase)
-{
- const int len1 = Next(p1) - p1;
- const int len2 = Next(p2) - p2;
-#ifdef _WIN32
- char buf1[10], buf2[10]; /* large enough? */
+#ifndef CharNext /* defined as CharNext[AW] on Windows. */
+# if defined(DJGPP)
+# define CharNext(p) ((p) + mblen(p, MB_CUR_MAX))
+# else
+# define CharNext(p) ((p) + 1)
+# endif
#endif
- if (len1 < 0 || len2 < 0) {
- rb_fatal("CompareImpl: negative len");
- }
-
- if (len1 == 0) return len2;
- if (len2 == 0) return -len1;
-
-#ifdef _WIN32
- if (nocase && rb_w32_iswinnt()) {
- if (len1 > 1) {
- if (len1 >= sizeof(buf1)) {
- rb_fatal("CompareImpl: too large len");
- }
- memcpy(buf1, p1, len1);
- buf1[len1] = '\0';
- CharLower(buf1);
- p1 = buf1; /* trick */
- }
- if (len2 > 1) {
- if (len2 >= sizeof(buf2)) {
- rb_fatal("CompareImpl: too large len");
- }
- memcpy(buf2, p2, len2);
- buf2[len2] = '\0';
- CharLower(buf2);
- p2 = buf2; /* trick */
- }
- }
+#if defined DOSISH
+#define isdirsep(c) ((c) == '/' || (c) == '\\')
+#else
+#define isdirsep(c) ((c) == '/')
#endif
- if (len1 == 1)
- if (len2 == 1)
- return compare(downcase(*p1), downcase(*p2));
- else {
- const int ret = compare(downcase(*p1), *p2);
- return ret ? ret : -1;
- }
- else
- if (len2 == 1) {
- const int ret = compare(*p1, downcase(*p2));
- return ret ? ret : 1;
- }
- else {
- const int ret = memcmp(p1, p2, len1 < len2 ? len1 : len2);
- return ret ? ret : len1 - len2;
- }
-}
-#endif /* environment */
static char *
-bracket(
- const char *p, /* pattern (next to '[') */
- const char *s, /* string */
- int flags)
+range(pat, test, flags)
+ const char *pat;
+ int test;
+ int flags;
{
- const int nocase = flags & FNM_CASEFOLD;
- const int escape = !(flags & FNM_NOESCAPE);
+ int not, ok = 0;
+ int nocase = flags & FNM_CASEFOLD;
+ int escape = !(flags & FNM_NOESCAPE);
- int ok = 0, not = 0;
+ not = *pat == '!' || *pat == '^';
+ if (not)
+ pat++;
- if (*p == '!' || *p == '^') {
- not = 1;
- p++;
- }
+ test = downcase(test);
- while (*p != ']') {
- const char *t1 = p;
- if (escape && *t1 == '\\')
- t1++;
- if (!*t1)
+ while (*pat != ']') {
+ int cstart, cend;
+ if (escape && *pat == '\\')
+ pat++;
+ cstart = cend = *pat++;
+ if (!cstart)
return NULL;
- p = Next(t1);
- if (p[0] == '-' && p[1] != ']') {
- const char *t2 = p + 1;
- if (escape && *t2 == '\\')
- t2++;
- if (!*t2)
+ if (*pat == '-' && pat[1] != ']') {
+ pat++;
+ if (escape && *pat == '\\')
+ pat++;
+ cend = *pat++;
+ if (!cend)
return NULL;
- p = Next(t2);
- if (!ok && Compare(t1, s) <= 0 && Compare(s, t2) <= 0)
- ok = 1;
}
- else
- if (!ok && Compare(t1, s) == 0)
- ok = 1;
+ if (downcase(cstart) <= test && test <= downcase(cend))
+ ok = 1;
}
-
- return ok == not ? NULL : (char *)p + 1;
+ return ok == not ? NULL : (char *)pat + 1;
}
-/* If FNM_PATHNAME is set, only path element will be matched. (upto '/' or '\0')
- Otherwise, entire string will be matched.
- End marker itself won't be compared.
- And if function succeeds, *pcur reaches end marker.
-*/
-#define UNESCAPE(p) (escape && *(p) == '\\' ? (p) + 1 : (p))
-#define ISEND(p) (!*(p) || (pathname && *(p) == '/'))
-#define RETURN(val) return *pcur = p, *scur = s, (val);
-
+#define ISDIRSEP(c) (pathname && isdirsep(c))
+#define PERIOD(s) (period && *(s) == '.' && \
+ ((s) == string || ISDIRSEP((s)[-1])))
static int
-fnmatch_helper(
- const char **pcur, /* pattern */
- const char **scur, /* string */
- int flags)
+fnmatch(pat, string, flags)
+ const char *pat;
+ const char *string;
+ int flags;
{
- const int period = !(flags & FNM_DOTMATCH);
- const int pathname = flags & FNM_PATHNAME;
- const int escape = !(flags & FNM_NOESCAPE);
- const int nocase = flags & FNM_CASEFOLD;
-
- const char *ptmp = 0;
- const char *stmp = 0;
+ int c;
+ int test;
+ const char *s = string;
+ int escape = !(flags & FNM_NOESCAPE);
+ int pathname = flags & FNM_PATHNAME;
+ int period = !(flags & FNM_DOTMATCH);
+ int nocase = flags & FNM_CASEFOLD;
- const char *p = *pcur;
- const char *s = *scur;
+ while ((c = *pat++) != '\0') {
+ switch (c) {
+ case '?':
+ if (!*s || ISDIRSEP(*s) || PERIOD(s))
+ return FNM_NOMATCH;
+ s++;
+ break;
+ case '*':
+ while ((c = *pat++) == '*')
+ ;
- if (period && *s == '.' && *UNESCAPE(p) != '.') /* leading period */
- RETURN(FNM_NOMATCH);
+ if (PERIOD(s))
+ return FNM_NOMATCH;
- while (1) {
- switch (*p) {
- case '*':
- do { p++; } while (*p == '*');
- if (ISEND(UNESCAPE(p))) {
- p = UNESCAPE(p);
- RETURN(0);
+ if (!c) {
+ if (pathname && *rb_path_next(s))
+ return FNM_NOMATCH;
+ else
+ return 0;
}
- if (ISEND(s))
- RETURN(FNM_NOMATCH);
- ptmp = p;
- stmp = s;
- continue;
-
- case '?':
- if (ISEND(s))
- RETURN(FNM_NOMATCH);
- p++;
- Inc(s);
- continue;
-
- case '[': {
- const char *t;
- if (ISEND(s))
- RETURN(FNM_NOMATCH);
- if (t = bracket(p + 1, s, flags)) {
- p = t;
- Inc(s);
- continue;
+ else if (ISDIRSEP(c)) {
+ s = rb_path_next(s);
+ if (*s) {
+ s++;
+ break;
+ }
+ return FNM_NOMATCH;
}
- goto failed;
- }
- }
-
- /* ordinary */
- p = UNESCAPE(p);
- if (ISEND(s))
- RETURN(ISEND(p) ? 0 : FNM_NOMATCH);
- if (ISEND(p))
- goto failed;
- if (Compare(p, s) != 0)
- goto failed;
- Inc(p);
- Inc(s);
- continue;
-
- failed: /* try next '*' position */
- if (ptmp && stmp) {
- p = ptmp;
- Inc(stmp); /* !ISEND(*stmp) */
- s = stmp;
- continue;
- }
- RETURN(FNM_NOMATCH);
- }
-}
-static int
-fnmatch(
- const char *p, /* pattern */
- const char *s, /* string */
- int flags)
-{
- const int period = !(flags & FNM_DOTMATCH);
- const int pathname = flags & FNM_PATHNAME;
-
- const char *ptmp = 0;
- const char *stmp = 0;
-
- if (pathname) {
- while (1) {
- if (p[0] == '*' && p[1] == '*' && p[2] == '/') {
- do { p += 3; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
- ptmp = p;
- stmp = s;
- }
- if (fnmatch_helper(&p, &s, flags) == 0) {
- while (*s && *s != '/') Inc(s);
- if (*p && *s) {
- p++;
- s++;
- continue;
- }
- if (!*p && !*s)
+ test = escape && c == '\\' ? *pat : c;
+ test = downcase(test);
+ pat--;
+ while (*s) {
+ if ((c == '?' || c == '[' || downcase(*s) == test) &&
+ !fnmatch(pat, s, flags | FNM_DOTMATCH))
return 0;
- }
- /* failed : try next recursion */
- if (ptmp && stmp && !(period && *stmp == '.')) {
- while (*stmp && *stmp != '/') Inc(stmp);
- if (*stmp) {
- p = ptmp;
- stmp++;
- s = stmp;
- continue;
- }
+ else if (ISDIRSEP(*s))
+ break;
+ s++;
}
return FNM_NOMATCH;
+
+ case '[':
+ if (!*s || ISDIRSEP(*s) || PERIOD(s))
+ return FNM_NOMATCH;
+ pat = range(pat, *s, flags);
+ if (pat == NULL)
+ return FNM_NOMATCH;
+ s++;
+ break;
+
+ case '\\':
+ if (escape
+#if defined DOSISH
+ && *pat && strchr("*?[]\\", *pat)
+#endif
+ ) {
+ c = *pat;
+ if (!c)
+ c = '\\';
+ else
+ pat++;
+ }
+ /* FALLTHROUGH */
+
+ default:
+#if defined DOSISH
+ if (ISDIRSEP(c) && isdirsep(*s))
+ ;
+ else
+#endif
+ if(downcase(c) != downcase(*s))
+ return FNM_NOMATCH;
+ s++;
+ break;
}
}
- else
- return fnmatch_helper(&p, &s, flags);
+ return !*s ? 0 : FNM_NOMATCH;
}
VALUE rb_cDir;
@@ -354,7 +246,8 @@ struct dir_data {
};
static void
-free_dir(struct dir_data *dir)
+free_dir(dir)
+ struct dir_data *dir;
{
if (dir) {
if (dir->dir) closedir(dir->dir);
@@ -363,10 +256,12 @@ free_dir(struct dir_data *dir)
free(dir);
}
-static VALUE dir_close(VALUE);
+static VALUE dir_close _((VALUE));
+static VALUE dir_s_alloc _((VALUE));
static VALUE
-dir_s_alloc(VALUE klass)
+dir_s_alloc(klass)
+ VALUE klass;
{
struct dir_data *dirp;
VALUE obj = Data_Make_Struct(klass, struct dir_data, 0, free_dir, dirp);
@@ -384,27 +279,28 @@ dir_s_alloc(VALUE klass)
* Returns a new directory object for the named directory.
*/
static VALUE
-dir_initialize(VALUE dir, VALUE dirname)
+dir_initialize(dir, dirname)
+ VALUE dir, dirname;
{
struct dir_data *dp;
- FilePathValue(dirname);
+ SafeStringValue(dirname);
Data_Get_Struct(dir, struct dir_data, dp);
if (dp->dir) closedir(dp->dir);
if (dp->path) free(dp->path);
dp->dir = NULL;
dp->path = NULL;
- dp->dir = opendir(RSTRING_PTR(dirname));
+ dp->dir = opendir(RSTRING(dirname)->ptr);
if (dp->dir == NULL) {
if (errno == EMFILE || errno == ENFILE) {
rb_gc();
- dp->dir = opendir(RSTRING_PTR(dirname));
+ dp->dir = opendir(RSTRING(dirname)->ptr);
}
if (dp->dir == NULL) {
- rb_sys_fail(RSTRING_PTR(dirname));
+ rb_sys_fail(RSTRING(dirname)->ptr);
}
}
- dp->path = strdup(RSTRING_PTR(dirname));
+ dp->path = strdup(RSTRING(dirname)->ptr);
return dir;
}
@@ -420,8 +316,10 @@ dir_initialize(VALUE dir, VALUE dirname)
* the block, and <code>Dir::open</code> returns the value of the
* block.
*/
+
static VALUE
-dir_s_open(VALUE klass, VALUE dirname)
+dir_s_open(klass, dirname)
+ VALUE klass, dirname;
{
struct dir_data *dp;
VALUE dir = Data_Make_Struct(klass, struct dir_data, 0, free_dir, dp);
@@ -435,13 +333,14 @@ dir_s_open(VALUE klass, VALUE dirname)
}
static void
-dir_closed(void)
+dir_closed()
{
rb_raise(rb_eIOError, "closed directory");
}
static void
-dir_check(VALUE dir)
+dir_check(dir)
+ VALUE dir;
{
if (!OBJ_TAINTED(dir) && rb_safe_level() >= 4)
rb_raise(rb_eSecurityError, "Insecure: operation on untainted Dir");
@@ -456,28 +355,6 @@ dir_check(VALUE dir)
/*
* call-seq:
- * dir.inspect => string
- *
- * Return a string describing this Dir object.
- */
-static VALUE
-dir_inspect(VALUE dir)
-{
- struct dir_data *dirp;
-
- GetDIR(dir, dirp);
- if (dirp->path) {
- char *c = rb_obj_classname(dir);
- int len = strlen(c) + strlen(dirp->path) + 4;
- VALUE s = rb_str_new(0, len);
- snprintf(RSTRING_PTR(s), len+1, "#<%s:%s>", c, dirp->path);
- return s;
- }
- return rb_funcall(dir, rb_intern("to_s"), 0, 0);
-}
-
-/*
- * call-seq:
* dir.path => string or nil
*
* Returns the path parameter passed to <em>dir</em>'s constructor.
@@ -486,7 +363,8 @@ dir_inspect(VALUE dir)
* d.path #=> ".."
*/
static VALUE
-dir_path(VALUE dir)
+dir_path(dir)
+ VALUE dir;
{
struct dir_data *dirp;
@@ -508,7 +386,8 @@ dir_path(VALUE dir)
* d.read #=> "config.h"
*/
static VALUE
-dir_read(VALUE dir)
+dir_read(dir)
+ VALUE dir;
{
struct dir_data *dirp;
struct dirent *dp;
@@ -546,12 +425,12 @@ dir_read(VALUE dir)
* Got main.rb
*/
static VALUE
-dir_each(VALUE dir)
+dir_each(dir)
+ VALUE dir;
{
struct dir_data *dirp;
struct dirent *dp;
- RETURN_ENUMERATOR(dir, 0, 0);
GetDIR(dir, dirp);
rewinddir(dirp->dir);
for (dp = readdir(dirp->dir); dp != NULL; dp = readdir(dirp->dir)) {
@@ -575,7 +454,8 @@ dir_each(VALUE dir)
* d.tell #=> 12
*/
static VALUE
-dir_tell(VALUE dir)
+dir_tell(dir)
+ VALUE dir;
{
#ifdef HAVE_TELLDIR
struct dir_data *dirp;
@@ -604,7 +484,8 @@ dir_tell(VALUE dir)
* d.read #=> ".."
*/
static VALUE
-dir_seek(VALUE dir, VALUE pos)
+dir_seek(dir, pos)
+ VALUE dir, pos;
{
struct dir_data *dirp;
off_t p = NUM2OFFT(pos);
@@ -633,7 +514,8 @@ dir_seek(VALUE dir, VALUE pos)
* d.read #=> ".."
*/
static VALUE
-dir_set_pos(VALUE dir, VALUE pos)
+dir_set_pos(dir, pos)
+ VALUE dir, pos;
{
dir_seek(dir, pos);
return pos;
@@ -651,13 +533,11 @@ dir_set_pos(VALUE dir, VALUE pos)
* d.read #=> "."
*/
static VALUE
-dir_rewind(VALUE dir)
+dir_rewind(dir)
+ VALUE dir;
{
struct dir_data *dirp;
- if (rb_safe_level() >= 4 && !OBJ_TAINTED(dir)) {
- rb_raise(rb_eSecurityError, "Insecure: can't close");
- }
GetDIR(dir, dirp);
rewinddir(dirp->dir);
return dir;
@@ -674,10 +554,14 @@ dir_rewind(VALUE dir)
* d.close #=> nil
*/
static VALUE
-dir_close(VALUE dir)
+dir_close(dir)
+ VALUE dir;
{
struct dir_data *dirp;
+ if (rb_safe_level() >= 4 && !OBJ_TAINTED(dir)) {
+ rb_raise(rb_eSecurityError, "Insecure: can't close");
+ }
GetDIR(dir, dirp);
closedir(dirp->dir);
dirp->dir = NULL;
@@ -686,10 +570,11 @@ dir_close(VALUE dir)
}
static void
-dir_chdir(VALUE path)
+dir_chdir(path)
+ VALUE path;
{
- if (chdir(RSTRING_PTR(path)) < 0)
- rb_sys_fail(RSTRING_PTR(path));
+ if (chdir(RSTRING(path)->ptr) < 0)
+ rb_sys_fail(RSTRING(path)->ptr);
}
static int chdir_blocking = 0;
@@ -701,7 +586,8 @@ struct chdir_data {
};
static VALUE
-chdir_yield(struct chdir_data *args)
+chdir_yield(args)
+ struct chdir_data *args;
{
dir_chdir(args->new_path);
args->done = Qtrue;
@@ -712,7 +598,8 @@ chdir_yield(struct chdir_data *args)
}
static VALUE
-chdir_restore(struct chdir_data *args)
+chdir_restore(args)
+ struct chdir_data *args;
{
if (args->done) {
chdir_blocking--;
@@ -763,13 +650,16 @@ chdir_restore(struct chdir_data *args)
* /var/spool/mail
*/
static VALUE
-dir_s_chdir(int argc, VALUE *argv, VALUE obj)
+dir_s_chdir(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
VALUE path = Qnil;
rb_secure(2);
if (rb_scan_args(argc, argv, "01", &path) == 1) {
- FilePathValue(path);
+ SafeStringValue(path);
}
else {
const char *dist = getenv("HOME");
@@ -811,7 +701,8 @@ dir_s_chdir(int argc, VALUE *argv, VALUE obj)
* Dir.getwd #=> "/tmp"
*/
static VALUE
-dir_s_getwd(VALUE dir)
+dir_s_getwd(dir)
+ VALUE dir;
{
char *path;
VALUE cwd;
@@ -824,14 +715,16 @@ dir_s_getwd(VALUE dir)
return cwd;
}
+static void check_dirname _((volatile VALUE *));
static void
-check_dirname(volatile VALUE *dir)
+check_dirname(dir)
+ volatile VALUE *dir;
{
char *path, *pend;
+ SafeStringValue(*dir);
rb_secure(2);
- FilePathValue(*dir);
- path = RSTRING_PTR(*dir);
+ path = RSTRING(*dir)->ptr;
if (path && *(pend = rb_path_end(rb_path_skip_prefix(path)))) {
*dir = rb_str_new(path, pend - path);
}
@@ -847,13 +740,14 @@ check_dirname(volatile VALUE *dir)
* information.
*/
static VALUE
-dir_s_chroot(VALUE dir, VALUE path)
+dir_s_chroot(dir, path)
+ VALUE dir, path;
{
#if defined(HAVE_CHROOT) && !defined(__CHECKER__)
check_dirname(&path);
- if (chroot(RSTRING_PTR(path)) == -1)
- rb_sys_fail(RSTRING_PTR(path));
+ if (chroot(RSTRING(path)->ptr) == -1)
+ rb_sys_fail(RSTRING(path)->ptr);
return INT2FIX(0);
#else
@@ -876,7 +770,10 @@ dir_s_chroot(VALUE dir, VALUE path)
*
*/
static VALUE
-dir_s_mkdir(int argc, VALUE *argv, VALUE obj)
+dir_s_mkdir(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
VALUE path, vmode;
int mode;
@@ -889,8 +786,8 @@ dir_s_mkdir(int argc, VALUE *argv, VALUE obj)
}
check_dirname(&path);
- if (mkdir(RSTRING_PTR(path), mode) == -1)
- rb_sys_fail(RSTRING_PTR(path));
+ if (mkdir(RSTRING(path)->ptr, mode) == -1)
+ rb_sys_fail(RSTRING(path)->ptr);
return INT2FIX(0);
}
@@ -905,713 +802,589 @@ dir_s_mkdir(int argc, VALUE *argv, VALUE obj)
* <code>SystemCallError</code> if the directory isn't empty.
*/
static VALUE
-dir_s_rmdir(VALUE obj, VALUE dir)
+dir_s_rmdir(obj, dir)
+ VALUE obj, dir;
{
check_dirname(&dir);
- if (rmdir(RSTRING_PTR(dir)) < 0)
- rb_sys_fail(RSTRING_PTR(dir));
+ if (rmdir(RSTRING(dir)->ptr) < 0)
+ rb_sys_fail(RSTRING(dir)->ptr);
return INT2FIX(0);
}
static void
-sys_warning_1(const char* mesg)
+sys_warning_1(mesg)
+ const char* mesg;
{
rb_sys_warning("%s", mesg);
}
-#define GLOB_VERBOSE (1UL << (sizeof(int) * CHAR_BIT - 1))
+#define GLOB_VERBOSE (1U << (sizeof(int) * CHAR_BIT - 1))
#define sys_warning(val) \
(void)((flags & GLOB_VERBOSE) && rb_protect((VALUE (*)_((VALUE)))sys_warning_1, (VALUE)(val), 0))
#define GLOB_ALLOC(type) (type *)malloc(sizeof(type))
#define GLOB_ALLOC_N(type, n) (type *)malloc(sizeof(type) * (n))
+#define GLOB_REALLOC_N(var, type, n) (type *)realloc((var), sizeof(type) * (n))
#define GLOB_JUMP_TAG(status) ((status == -1) ? rb_memerror() : rb_jump_tag(status))
-/* System call with warning */
-static int
-do_stat(const char *path, struct stat *pst, int flags)
-
-{
- int ret = stat(path, pst);
- if (ret < 0 && errno != ENOENT)
- sys_warning(path);
-
- return ret;
-}
-
-static int
-do_lstat(const char *path, struct stat *pst, int flags)
-{
- int ret = lstat(path, pst);
- if (ret < 0 && errno != ENOENT)
- sys_warning(path);
-
- return ret;
-}
-
-static DIR *
-do_opendir(const char *path, int flags)
-{
- DIR *dirp = opendir(path);
- if (dirp == NULL && errno != ENOENT && errno != ENOTDIR)
- sys_warning(path);
-
- return dirp;
-}
-
/* Return nonzero if S has any special globbing chars in it. */
static int
-has_magic(const char *s, int flags)
+has_magic(s, send, flags)
+ const char *s, *send;
+ int flags;
{
- const int escape = !(flags & FNM_NOESCAPE);
- const int nocase = flags & FNM_CASEFOLD;
-
register const char *p = s;
register char c;
+ int open = 0;
+ const int escape = !(flags & FNM_NOESCAPE);
+ const int nocase = flags & FNM_CASEFOLD;
- while (c = *p++) {
+ while ((c = *p++) != '\0') {
switch (c) {
- case '*':
case '?':
- case '[':
- return 1;
+ case '*':
+ return Qtrue;
- case '\\':
- if (escape && !(c = *p++))
- return 0;
+ case '[': /* Only accept an open brace if there is a close */
+ open++; /* brace to match it. Bracket expressions must be */
+ continue; /* complete, according to Posix.2 */
+ case ']':
+ if (open)
+ return Qtrue;
continue;
+ case '\\':
+ if (escape && *p++ == '\0')
+ return Qfalse;
+ break;
+
default:
if (!FNM_SYSCASE && ISALPHA(c) && nocase)
- return 1;
+ return Qtrue;
}
- p = Next(p-1);
+ if (send && p >= send) break;
}
-
- return 0;
+ return Qfalse;
}
-/* Find separator in globbing pattern. */
-static char *
-find_dirsep(const char *s, int flags)
+static char*
+extract_path(p, pend)
+ const char *p, *pend;
{
- const int escape = !(flags & FNM_NOESCAPE);
-
- register const char *p = s;
- register char c;
- int open = 0;
-
- while (c = *p++) {
- switch (c) {
- case '[':
- open = 1;
- continue;
- case ']':
- open = 0;
- continue;
-
- case '/':
- if (!open)
- return (char *)p-1;
- continue;
-
- case '\\':
- if (escape && !(c = *p++))
- return (char *)p-1;
- continue;
- }
-
- p = Next(p-1);
+ char *alloc;
+ int len;
+
+ len = pend - p;
+ alloc = GLOB_ALLOC_N(char, len+1);
+ if (!alloc) return NULL;
+ memcpy(alloc, p, len);
+ if (len > 1 && pend[-1] == '/'
+#if defined DOSISH_DRIVE_LETTER
+ && pend[-2] != ':'
+#endif
+ ) {
+ alloc[len-1] = 0;
}
-
- return (char *)p-1;
-}
-
-/* Remove escaping baskclashes */
-static void
-remove_backslashes(char *p)
-{
- char *t = p;
- char *s = p;
-
- while (*p) {
- if (*p == '\\') {
- if (t != s)
- memmove(t, s, p - s);
- t += p - s;
- s = ++p;
- if (!*p) break;
- }
- Inc(p);
+ else {
+ alloc[len] = 0;
}
- while (*p++);
-
- if (t != s)
- memmove(t, s, p - s); /* move '\0' too */
+ return alloc;
}
-/* Globing pattern */
-enum glob_pattern_type { PLAIN, MAGICAL, RECURSIVE, MATCH_ALL, MATCH_DIR };
-
-struct glob_pattern {
- char *str;
- enum glob_pattern_type type;
- struct glob_pattern *next;
-};
-
-static void glob_free_pattern(struct glob_pattern *list);
-
-static struct glob_pattern *
-glob_make_pattern(const char *p, int flags)
+static char*
+extract_elem(path)
+ const char *path;
{
- struct glob_pattern *list, *tmp, **tail = &list;
- int dirsep = 0; /* pattern is terminated with '/' */
-
- while (*p) {
- tmp = GLOB_ALLOC(struct glob_pattern);
- if (!tmp) goto error;
- if (p[0] == '*' && p[1] == '*' && p[2] == '/') {
- /* fold continuous RECURSIVEs (needed in glob_helper) */
- do { p += 3; } while (p[0] == '*' && p[1] == '*' && p[2] == '/');
- tmp->type = RECURSIVE;
- tmp->str = 0;
- dirsep = 1;
- }
- else {
- const char *m = find_dirsep(p, flags);
- char *buf = GLOB_ALLOC_N(char, m-p+1);
- if (!buf) {
- free(tmp);
- goto error;
- }
- memcpy(buf, p, m-p);
- buf[m-p] = '\0';
- tmp->type = has_magic(buf, flags) ? MAGICAL : PLAIN;
- tmp->str = buf;
- if (*m) {
- dirsep = 1;
- p = m + 1;
- }
- else {
- dirsep = 0;
- p = m;
- }
- }
- *tail = tmp;
- tail = &tmp->next;
- }
+ const char *pend;
- tmp = GLOB_ALLOC(struct glob_pattern);
- if (!tmp) {
- error:
- *tail = 0;
- glob_free_pattern(list);
- return 0;
- }
- tmp->type = dirsep ? MATCH_DIR : MATCH_ALL;
- tmp->str = 0;
- *tail = tmp;
- tmp->next = 0;
+ pend = strchr(path, '/');
+ if (!pend) pend = path + strlen(path);
- return list;
+ return extract_path(path, pend);
}
static void
-glob_free_pattern(struct glob_pattern *list)
+remove_backslashes(p)
+ char *p;
{
- while (list) {
- struct glob_pattern *tmp = list;
- list = list->next;
- if (tmp->str)
- free(tmp->str);
- free(tmp);
- }
-}
+ char *pend = p + strlen(p);
+ char *t = p;
-static char *
-join_path(const char *path, int dirsep, const char *name)
-{
- long len = strlen(path);
- char *buf = GLOB_ALLOC_N(char, len+strlen(name)+(dirsep?1:0)+1);
-
- if (!buf) return 0;
- memcpy(buf, path, len);
- if (dirsep) {
- strcpy(buf+len, "/");
- len++;
+ while (p < pend) {
+ if (*p == '\\') {
+ if (++p == pend) break;
+ }
+ *t++ = *p++;
}
- strcpy(buf+len, name);
- return buf;
+ *t = '\0';
}
-enum answer { YES, NO, UNKNOWN };
-
#ifndef S_ISDIR
# define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR)
#endif
-#ifndef S_ISLNK
-# ifndef S_IFLNK
-# define S_ISLNK(m) (0)
-# else
-# define S_ISLNK(m) ((m & S_IFMT) == S_IFLNK)
-# endif
-#endif
-
struct glob_args {
- void (*func)(const char *, VALUE);
- const char *path;
- VALUE value;
+ void (*func) _((const char*, VALUE));
+ const char *c;
+ VALUE v;
};
+static VALUE glob_func_caller _((VALUE));
+
static VALUE
-glob_func_caller(VALUE val)
+glob_func_caller(val)
+ VALUE val;
{
struct glob_args *args = (struct glob_args *)val;
- (*args->func)(args->path, args->value);
+ (*args->func)(args->c, args->v);
return Qnil;
}
#define glob_call_func(func, path, arg) (*func)(path, arg)
+static int glob_helper _((const char *path, const char *sub, int flags, int (*func)(const char *,VALUE), VALUE arg));
+
static int
-glob_helper(
- const char *path,
- int dirsep, /* '/' should be placed before appending child entry's name to 'path'. */
- enum answer exist, /* Does 'path' indicate an existing entry? */
- enum answer isdir, /* Does 'path' indicate a directory or a symlink to a directory? */
- struct glob_pattern **beg,
- struct glob_pattern **end,
- int flags,
- ruby_glob_func *func,
- VALUE arg)
+glob_helper(path, sub, flags, func, arg)
+ const char *path;
+ const char *sub;
+ int flags;
+ int (*func) _((const char *, VALUE));
+ VALUE arg;
{
struct stat st;
+ const char *p, *m;
int status = 0;
- struct glob_pattern **cur, **new_beg, **new_end;
- int plain = 0, magical = 0, recursive = 0, match_all = 0, match_dir = 0;
- int escape = !(flags & FNM_NOESCAPE);
-
- for (cur = beg; cur < end; ++cur) {
- struct glob_pattern *p = *cur;
- if (p->type == RECURSIVE) {
- recursive = 1;
- p = p->next;
- }
- switch (p->type) {
- case PLAIN:
- plain = 1;
- break;
- case MAGICAL:
- magical = 1;
- break;
- case MATCH_ALL:
- match_all = 1;
- break;
- case MATCH_DIR:
- match_dir = 1;
- break;
- case RECURSIVE:
- rb_bug("continuous RECURSIVEs");
- }
- }
-
- if (*path) {
- if (match_all && exist == UNKNOWN) {
- if (do_lstat(path, &st, flags) == 0) {
- exist = YES;
- isdir = S_ISDIR(st.st_mode) ? YES : S_ISLNK(st.st_mode) ? UNKNOWN : NO;
- }
- else {
- exist = NO;
- isdir = NO;
- }
- }
- if (match_dir && isdir == UNKNOWN) {
- if (do_stat(path, &st, flags) == 0) {
- exist = YES;
- isdir = S_ISDIR(st.st_mode) ? YES : NO;
+ char *buf = 0;
+ char *newpath = 0;
+ char *newbuf;
+
+ p = sub ? sub : path;
+ if (!has_magic(p, 0, flags)) {
+#if !defined DOSISH
+ if (!(flags & FNM_NOESCAPE))
+#endif
+ {
+ newpath = strdup(path);
+ if (!newpath) return -1;
+ if (sub) {
+ p = newpath + (sub - path);
+ remove_backslashes(newpath + (sub - path));
+ sub = p;
}
else {
- exist = NO;
- isdir = NO;
+ remove_backslashes(newpath);
+ p = path = newpath;
}
}
- if (match_all && exist == YES) {
+ if (lstat(path, &st) == 0) {
status = glob_call_func(func, path, arg);
- if (status) return status;
}
- if (match_dir && isdir == YES) {
- char *tmp = join_path(path, dirsep, "");
- if (!tmp) return -1;
- status = glob_call_func(func, tmp, arg);
- free(tmp);
- if (status) return status;
+ else if (errno != ENOENT) {
+ /* In case stat error is other than ENOENT and
+ we may want to know what is wrong. */
+ sys_warning(path);
}
+ if (newpath) free(newpath);
+ return status;
}
- if (exist == NO || isdir == NO) return 0;
-
- if (magical || recursive) {
- struct dirent *dp;
- DIR *dirp = do_opendir(*path ? path : ".", flags);
- if (dirp == NULL) return 0;
-
- for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
- char *buf = join_path(path, dirsep, dp->d_name);
- enum answer new_isdir = UNKNOWN;
-
- if (!buf) {
+ while (p && !status) {
+ if (*p == '/') p++;
+ m = strchr(p, '/');
+ if (has_magic(p, m, flags)) {
+ char *dir, *base, *magic;
+ DIR *dirp;
+ struct dirent *dp;
+ int recursive = 0;
+
+ struct d_link {
+ char *path;
+ struct d_link *next;
+ } *tmp, *link, **tail = &link;
+
+ base = extract_path(path, p);
+ if (!base) {
status = -1;
break;
}
- if (recursive && strcmp(dp->d_name, ".") != 0 && strcmp(dp->d_name, "..") != 0
- && fnmatch("*", dp->d_name, flags) == 0) {
-#ifndef _WIN32
- if (do_lstat(buf, &st, flags) == 0)
- new_isdir = S_ISDIR(st.st_mode) ? YES : S_ISLNK(st.st_mode) ? UNKNOWN : NO;
- else
- new_isdir = NO;
-#else
- new_isdir = dp->d_isdir ? (!dp->d_isrep ? YES : UNKNOWN) : NO;
-#endif
- }
+ if (path == p) dir = ".";
+ else dir = base;
- new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, (end - beg) * 2);
- if (!new_beg) {
+ magic = extract_elem(p);
+ if (!magic) {
status = -1;
break;
}
-
- for (cur = beg; cur < end; ++cur) {
- struct glob_pattern *p = *cur;
- if (p->type == RECURSIVE) {
- if (new_isdir == YES) /* not symlink but real directory */
- *new_end++ = p; /* append recursive pattern */
- p = p->next; /* 0 times recursion */
+ if (stat(dir, &st) < 0) {
+ if (errno != ENOENT)
+ sys_warning(dir);
+ free(base);
+ free(magic);
+ break;
+ }
+ if (S_ISDIR(st.st_mode)) {
+ if (m && strcmp(magic, "**") == 0) {
+ int n = strlen(base);
+ recursive = 1;
+ newbuf = GLOB_REALLOC_N(buf, char, n+strlen(m)+3);
+ if (!newbuf) {
+ status = -1;
+ goto finalize;
+ }
+ buf = newbuf;
+ sprintf(buf, "%s%s", base, *base ? m : m+1);
+ status = glob_helper(buf, buf+n, flags, func, arg);
+ if (status) goto finalize;
}
- if (p->type == PLAIN || p->type == MAGICAL) {
- if (fnmatch(p->str, dp->d_name, flags) == 0)
- *new_end++ = p->next;
+ dirp = opendir(dir);
+ if (dirp == NULL) {
+ sys_warning(dir);
+ free(base);
+ free(magic);
+ break;
}
}
+ else {
+ free(base);
+ free(magic);
+ break;
+ }
- status = glob_helper(buf, 1, YES, new_isdir, new_beg, new_end, flags, func, arg);
- free(buf);
- free(new_beg);
- if (status) break;
- }
-
- closedir(dirp);
- }
- else if (plain) {
- struct glob_pattern **copy_beg, **copy_end, **cur2;
-
- copy_beg = copy_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);
- if (!copy_beg) return -1;
- for (cur = beg; cur < end; ++cur)
- *copy_end++ = (*cur)->type == PLAIN ? *cur : 0;
-
- for (cur = copy_beg; cur < copy_end; ++cur) {
- if (*cur) {
- char *buf;
- char *name;
- name = GLOB_ALLOC_N(char, strlen((*cur)->str) + 1);
- if (!name) {
- status = -1;
- break;
- }
- strcpy(name, (*cur)->str);
- if (escape) remove_backslashes(name);
+#if defined DOSISH_DRIVE_LETTER
+#define BASE (*base && !((isdirsep(*base) && !base[1]) || (base[1] == ':' && isdirsep(base[2]) && !base[3])))
+#else
+#define BASE (*base && !(isdirsep(*base) && !base[1]))
+#endif
- new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);
- if (!new_beg) {
- free(name);
- status = -1;
- break;
+ for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
+ if (recursive) {
+ if (strcmp(".", dp->d_name) == 0 || strcmp("..", dp->d_name) == 0)
+ continue;
+ if (fnmatch("*", dp->d_name, flags) != 0)
+ continue;
+ newbuf = GLOB_REALLOC_N(buf, char, strlen(base)+NAMLEN(dp)+strlen(m)+6);
+ if (!newbuf) {
+ status = -1;
+ break;
+ }
+ buf = newbuf;
+ sprintf(buf, "%s%s%s", base, (BASE) ? "/" : "", dp->d_name);
+ if (lstat(buf, &st) < 0) {
+ if (errno != ENOENT)
+ sys_warning(buf);
+ continue;
+ }
+ if (S_ISDIR(st.st_mode)) {
+ char *t = buf+strlen(buf);
+ strcpy(t, "/**");
+ strcpy(t+3, m);
+ status = glob_helper(buf, t, flags, func, arg);
+ if (status) break;
+ continue;
+ }
+ continue;
}
- *new_end++ = (*cur)->next;
- for (cur2 = cur + 1; cur2 < copy_end; ++cur2) {
- if (*cur2 && fnmatch((*cur2)->str, name, flags) == 0) {
- *new_end++ = (*cur2)->next;
- *cur2 = 0;
+ if (fnmatch(magic, dp->d_name, flags) == 0) {
+ newbuf = GLOB_REALLOC_N(buf, char, strlen(base)+NAMLEN(dp)+2);
+ if (!newbuf) {
+ status = -1;
+ break;
+ }
+ buf = newbuf;
+ sprintf(buf, "%s%s%s", base, (BASE) ? "/" : "", dp->d_name);
+ if (!m) {
+ status = glob_call_func(func, buf, arg);
+ if (status) break;
+ continue;
+ }
+ tmp = GLOB_ALLOC(struct d_link);
+ if (!tmp) {
+ status = -1;
+ break;
}
+ tmp->path = buf;
+ buf = 0;
+ *tail = tmp;
+ tail = &tmp->next;
}
-
- buf = join_path(path, dirsep, name);
- free(name);
- if (!buf) {
- free(new_beg);
- status = -1;
- break;
+ }
+ closedir(dirp);
+ finalize:
+ *tail = 0;
+ free(base);
+ free(magic);
+ if (link) {
+ while (link) {
+ if (status == 0) {
+ if (stat(link->path, &st) == 0) {
+ if (S_ISDIR(st.st_mode)) {
+ int len = strlen(link->path);
+ int mlen = strlen(m);
+
+ newbuf = GLOB_REALLOC_N(buf, char, len+mlen+1);
+ if (!newbuf) {
+ status = -1;
+ goto next_elem;
+ }
+ buf = newbuf;
+ sprintf(buf, "%s%s", link->path, m);
+ status = glob_helper(buf, buf+len, flags, func, arg);
+ }
+ }
+ else {
+ sys_warning(link->path);
+ }
+ }
+ next_elem:
+ tmp = link;
+ link = link->next;
+ free(tmp->path);
+ free(tmp);
}
- status = glob_helper(buf, 1, UNKNOWN, UNKNOWN, new_beg, new_end, flags, func, arg);
- free(buf);
- free(new_beg);
- if (status) break;
+ break;
}
}
-
- free(copy_beg);
+ p = m;
}
-
+ if (buf) free(buf);
+ if (newpath) free(newpath);
return status;
}
-static int
-ruby_glob0(const char *path, int flags, ruby_glob_func *func, VALUE arg)
+int
+ruby_glob(path, flags, func, arg)
+ const char *path;
+ int flags;
+ int (*func) _((const char *, VALUE));
+ VALUE arg;
{
- struct glob_pattern *list;
- const char *root, *start;
- char *buf;
- int n;
- int status;
-
- start = root = path;
flags |= FNM_SYSCASE;
-#if defined DOSISH
- root = rb_path_skip_prefix(root);
-#endif
-
- if (root && *root == '/') root++;
-
- n = root - start;
- buf = GLOB_ALLOC_N(char, n + 1);
- if (!buf) return -1;
- MEMCPY(buf, start, char, n);
- buf[n] = '\0';
-
- list = glob_make_pattern(root, flags);
- if (!list) {
- free(buf);
- return -1;
- }
- status = glob_helper(buf, 0, UNKNOWN, UNKNOWN, &list, &list + 1, flags, func, arg);
- glob_free_pattern(list);
- free(buf);
-
- return status;
+ return glob_helper(path, 0, flags & ~GLOB_VERBOSE, func, arg);
}
int
-ruby_glob(const char *path, int flags, ruby_glob_func *func, VALUE arg)
+ruby_globi(path, flags, func, arg)
+ const char *path;
+ int flags;
+ int (*func) _((const char *, VALUE));
+ VALUE arg;
{
- return ruby_glob0(path, flags & ~GLOB_VERBOSE, func, arg);
+ return glob_helper(path, 0, flags | FNM_CASEFOLD, func, arg);
}
+static int rb_glob_caller _((const char *, VALUE));
+
static int
-rb_glob_caller(const char *path, VALUE a)
+rb_glob_caller(path, a)
+ const char *path;
+ VALUE a;
{
int status;
struct glob_args *args = (struct glob_args *)a;
- args->path = path;
+ args->c = path;
rb_protect(glob_func_caller, a, &status);
return status;
}
static int
-rb_glob2(const char *path, int flags, void (*func)(const char *, VALUE), VALUE arg)
+rb_glob2(path, flags, func, arg)
+ const char *path;
+ int flags;
+ void (*func) _((const char *, VALUE));
+ VALUE arg;
{
struct glob_args args;
args.func = func;
- args.value = arg;
+ args.v = arg;
- if (flags & FNM_SYSCASE) {
- rb_warning("Dir.glob() ignores File::FNM_CASEFOLD");
- }
-
- return ruby_glob0(path, flags | GLOB_VERBOSE, rb_glob_caller, (VALUE)&args);
+ flags |= FNM_SYSCASE;
+ return glob_helper(path, 0, flags | GLOB_VERBOSE, rb_glob_caller, (VALUE)&args);
}
void
-rb_glob(const char *path, void (*func)(const char *, VALUE), VALUE arg)
+rb_glob(path, func, arg)
+ const char *path;
+ void (*func) _((const char*, VALUE));
+ VALUE arg;
{
int status = rb_glob2(path, 0, func, arg);
- if (status) GLOB_JUMP_TAG(status);
+ if (status) rb_jump_tag(status);
+}
+
+void
+rb_globi(path, func, arg)
+ const char *path;
+ void (*func) _((const char*, VALUE));
+ VALUE arg;
+{
+ int status = rb_glob2(path, FNM_CASEFOLD, func, arg);
+ if (status) rb_jump_tag(status);
}
static void
-push_pattern(const char *path, VALUE ary)
+push_pattern(path, ary)
+ const char *path;
+ VALUE ary;
{
rb_ary_push(ary, rb_tainted_str_new2(path));
}
-int
-ruby_brace_expand(const char *str, int flags, ruby_glob_func *func, VALUE arg)
+static int
+push_globs(ary, s, flags)
+ VALUE ary;
+ const char *s;
+ int flags;
{
- const int escape = !(flags & FNM_NOESCAPE);
- const char *p = str;
- const char *s = p;
- const char *lbrace = 0, *rbrace = 0;
- int nest = 0, status = 0;
+ return rb_glob2(s, flags, push_pattern, ary);
+}
+static int
+push_braces(ary, str, flags)
+ VALUE ary;
+ const char *str;
+ int flags;
+{
+ char *buf = 0;
+ char *b, *newbuf;
+ const char *s, *p, *t;
+ const char *lbrace, *rbrace;
+ int nest = 0;
+ int status = 0;
+
+ s = p = str;
+ lbrace = rbrace = 0;
while (*p) {
- if (*p == '{' && nest++ == 0) {
+ if (*p == '{') {
lbrace = p;
+ break;
}
- if (*p == '}' && --nest <= 0) {
+ p++;
+ }
+ while (*p) {
+ if (*p == '{') nest++;
+ if (*p == '}' && --nest == 0) {
rbrace = p;
break;
}
- if (*p == '\\' && escape) {
- if (!*++p) break;
- }
- Inc(p);
+ p++;
}
if (lbrace && rbrace) {
- char *buf = GLOB_ALLOC_N(char, strlen(s) + 1);
- long shift;
-
- if (!buf) return -1;
- memcpy(buf, s, lbrace-s);
- shift = (lbrace-s);
+ int len = strlen(s);
p = lbrace;
- while (p < rbrace) {
- const char *t = ++p;
- nest = 0;
- while (p < rbrace && !(*p == ',' && nest == 0)) {
- if (*p == '{') nest++;
- if (*p == '}') nest--;
- if (*p == '\\' && escape) {
- if (++p == rbrace) break;
+ while (*p != '}') {
+ t = p + 1;
+ for (p = t; *p!='}' && *p!=','; p++) {
+ /* skip inner braces */
+ if (*p == '{') {
+ nest = 1;
+ while (*++p != '}' || --nest) {
+ if (*p == '{') nest++;
+ }
}
- Inc(p);
}
- memcpy(buf+shift, t, p-t);
- strcpy(buf+shift+(p-t), rbrace+1);
- status = ruby_brace_expand(buf, flags, func, arg);
+ newbuf = GLOB_REALLOC_N(buf, char, len+1);
+ if (!newbuf) {
+ status = -1;
+ break;
+ }
+ buf = newbuf;
+ memcpy(buf, s, lbrace-s);
+ b = buf + (lbrace-s);
+ memcpy(b, t, p-t);
+ strcpy(b+(p-t), rbrace+1);
+ status = push_braces(ary, buf, flags);
if (status) break;
}
- free(buf);
}
- else if (!lbrace && !rbrace) {
- status = (*func)(s, arg);
+ else {
+ status = push_globs(ary, str, flags);
}
+ if (buf) free(buf);
return status;
}
-struct brace_args {
- ruby_glob_func *func;
- VALUE value;
- int flags;
-};
-
-static int
-glob_brace(const char *path, VALUE val)
-{
- struct brace_args *arg = (struct brace_args *)val;
-
- return ruby_glob0(path, arg->flags, arg->func, arg->value);
-}
-
-static int
-ruby_brace_glob0(const char *str, int flags, ruby_glob_func *func, VALUE arg)
-{
- struct brace_args args;
-
- args.func = func;
- args.value = arg;
- args.flags = flags;
- return ruby_brace_expand(str, flags, glob_brace, (VALUE)&args);
-}
-
-int
-ruby_brace_glob(const char *str, int flags, ruby_glob_func *func, VALUE arg)
-{
- return ruby_brace_glob0(str, flags & ~GLOB_VERBOSE, func, arg);
-}
-
-static int
-push_glob(VALUE ary, const char *str, int flags)
-{
- struct glob_args args;
-
- args.func = push_pattern;
- args.value = ary;
- return ruby_brace_glob0(str, flags | GLOB_VERBOSE, rb_glob_caller, (VALUE)&args);
-}
+#define isdelim(c) ((c)=='\0')
static VALUE
-rb_push_glob(VALUE str, int flags) /* '\0' is delimiter */
+rb_push_glob(str, flags)
+ VALUE str;
+ int flags;
{
- long offset = 0;
+ const char *p, *pend, *buf;
+ int nest, maxnest;
+ int status = 0;
+ int noescape = flags & FNM_NOESCAPE;
VALUE ary;
- StringValue(str);
ary = rb_ary_new();
-
- while (offset < RSTRING_LEN(str)) {
- int status = push_glob(ary, RSTRING_PTR(str) + offset, flags);
- char *p, *pend;
- if (status) GLOB_JUMP_TAG(status);
- if (offset >= RSTRING_LEN(str)) break;
- p = RSTRING_PTR(str) + offset;
- p += strlen(p) + 1;
- pend = RSTRING_PTR(str) + RSTRING_LEN(str);
- while (p < pend && !*p)
+ SafeStringValue(str);
+ p = RSTRING(str)->ptr;
+ pend = p + RSTRING(str)->len;
+
+ while (p < pend) {
+ nest = maxnest = 0;
+ while (p < pend && isdelim(*p)) p++;
+ buf = p;
+ while (p < pend && !isdelim(*p)) {
+ if (*p == '{') nest++, maxnest++;
+ if (*p == '}') nest--;
+ if (!noescape && *p == '\\') {
+ if (++p == pend) break;
+ }
p++;
- offset = p - RSTRING_PTR(str);
+ }
+ if (maxnest == 0) {
+ status = push_globs(ary, buf, flags);
+ if (status) break;
+ }
+ else if (nest == 0) {
+ status = push_braces(ary, buf, flags);
+ if (status) break;
+ }
+ /* else unmatched braces */
}
-
- return ary;
-}
-
-static VALUE
-dir_globs(long argc, VALUE *argv, int flags)
-{
- VALUE ary = rb_ary_new();
- long i;
-
- for (i = 0; i < argc; ++i) {
- int status;
- VALUE str = argv[i];
- StringValue(str);
- status = push_glob(ary, RSTRING_PTR(str), flags);
- if (status) GLOB_JUMP_TAG(status);
+ if (status) GLOB_JUMP_TAG(status);
+ if (rb_block_given_p()) {
+ rb_ary_each(ary);
+ return Qnil;
}
-
return ary;
}
/*
* call-seq:
- * Dir[ array ] => array
- * Dir[ string [, string ...] ] => array
+ * Dir[ string ] => array
*
* Equivalent to calling
- * <code>Dir.glob(</code><i>array,</i><code>0)</code> and
- * <code>Dir.glob([</code><i>string,...</i><code>],0)</code>.
+ * <em>dir</em>.<code>glob(</code><i>string,</i><code>0)</code>.
*
*/
static VALUE
-dir_s_aref(int argc, VALUE *argv, VALUE obj)
+dir_s_aref(obj, str)
+ VALUE obj, str;
{
- if (argc == 1) {
- return rb_push_glob(argv[0], 0);
- }
- return dir_globs(argc, argv, 0);
+ return rb_push_glob(str, 0);
}
/*
* call-seq:
- * Dir.glob( pattern, [flags] ) => array
- * Dir.glob( pattern, [flags] ) {| filename | block } => nil
+ * Dir.glob( string, [flags] ) => array
+ * Dir.glob( string, [flags] ) {| filename | block } => nil
*
- * Returns the filenames found by expanding <i>pattern</i> which is
- * an +Array+ of the patterns or the pattern +String+, either as an
- * <i>array</i> or as parameters to the block. Note that this pattern
- * is not a regexp (it's closer to a shell glob). See
- * <code>File::fnmatch</code> for the meaning of the <i>flags</i>
- * parameter. Note that case sensitivity depends on your system (so
- * <code>File::FNM_CASEFOLD</code> is ignored)
+ * Returns the filenames found by expanding the pattern given in
+ * <i>string</i>, either as an <i>array</i> or as parameters to the
+ * block. Note that this pattern is not a regexp (it's closer to a
+ * shell glob). See <code>File::fnmatch</code> for the meaning of
+ * the <i>flags</i> parameter.
*
* <code>*</code>:: Matches any file. Can be restricted by
* other values in the glob. <code>*</code>
@@ -1661,9 +1434,12 @@ dir_s_aref(int argc, VALUE *argv, VALUE obj)
* Dir.glob(librbfiles) #=> ["lib/song.rb"]
*/
static VALUE
-dir_s_glob(int argc, VALUE *argv, VALUE obj)
+dir_s_glob(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
- VALUE str, rflags, ary;
+ VALUE str, rflags;
int flags;
if (rb_scan_args(argc, argv, "11", &str, &rflags) == 2)
@@ -1671,24 +1447,12 @@ dir_s_glob(int argc, VALUE *argv, VALUE obj)
else
flags = 0;
- ary = rb_check_array_type(str);
- if (NIL_P(ary)) {
- ary = rb_push_glob(str, flags);
- }
- else {
- volatile VALUE v = ary;
- ary = dir_globs(RARRAY_LEN(v), RARRAY_PTR(v), flags);
- }
-
- if (rb_block_given_p()) {
- rb_ary_each(ary);
- return Qnil;
- }
- return ary;
+ return rb_push_glob(str, flags);
}
static VALUE
-dir_open_dir(VALUE path)
+dir_open_dir(path)
+ VALUE path;
{
VALUE dir = rb_funcall(rb_cDir, rb_intern("open"), 1, path);
@@ -1719,7 +1483,8 @@ dir_open_dir(VALUE path)
*
*/
static VALUE
-dir_foreach(VALUE io, VALUE dirname)
+dir_foreach(io, dirname)
+ VALUE io, dirname;
{
VALUE dir;
@@ -1740,7 +1505,8 @@ dir_foreach(VALUE io, VALUE dirname)
*
*/
static VALUE
-dir_entries(VALUE io, VALUE dirname)
+dir_entries(io, dirname)
+ VALUE io, dirname;
{
VALUE dir;
@@ -1768,8 +1534,6 @@ dir_entries(VALUE io, VALUE dirname)
* have <code>c</code> in them (including at
* the beginning or end). Equivalent to
* <code>/ .* /x</code> in regexp.
- * <code>**</code>:: Matches directories recursively or files
- * expansively.
* <code>?</code>:: Matches any one character. Equivalent to
* <code>/.{1}/</code> in regexp.
* <code>[set]</code>:: Matches any one character in +set+.
@@ -1782,55 +1546,37 @@ dir_entries(VALUE io, VALUE dirname)
* parameters. The same glob pattern and flags are used by
* <code>Dir::glob</code>.
*
- * File.fnmatch('cat', 'cat') #=> true : match entire string
- * File.fnmatch('cat', 'category') #=> false : only match partial string
- * File.fnmatch('c{at,ub}s', 'cats') #=> false : { } isn't supported
- *
- * File.fnmatch('c?t', 'cat') #=> true : '?' match only 1 character
- * File.fnmatch('c??t', 'cat') #=> false : ditto
- * File.fnmatch('c*', 'cats') #=> true : '*' match 0 or more characters
- * File.fnmatch('c*t', 'c/a/b/t') #=> true : ditto
- * File.fnmatch('ca[a-z]', 'cat') #=> true : inclusive bracket expression
- * File.fnmatch('ca[^t]', 'cat') #=> false : exclusive bracket expression ('^' or '!')
- *
- * File.fnmatch('cat', 'CAT') #=> false : case sensitive
- * File.fnmatch('cat', 'CAT', File::FNM_CASEFOLD) #=> true : case insensitive
- *
- * File.fnmatch('?', '/', File::FNM_PATHNAME) #=> false : wildcard doesn't match '/' on FNM_PATHNAME
- * File.fnmatch('*', '/', File::FNM_PATHNAME) #=> false : ditto
- * File.fnmatch('[/]', '/', File::FNM_PATHNAME) #=> false : ditto
- *
- * File.fnmatch('\?', '?') #=> true : escaped wildcard becomes ordinary
- * File.fnmatch('\a', 'a') #=> true : escaped ordinary remains ordinary
- * File.fnmatch('\a', '\a', File::FNM_NOESCAPE) #=> true : FNM_NOESACPE makes '\' ordinary
- * File.fnmatch('[\?]', '?') #=> true : can escape inside bracket expression
- *
- * File.fnmatch('*', '.profile') #=> false : wildcard doesn't match leading
- * File.fnmatch('*', '.profile', File::FNM_DOTMATCH) #=> true period by default.
- * File.fnmatch('.*', '.profile') #=> true
- *
- * rbfiles = '**' '/' '*.rb' # you don't have to do like this. just write in single string.
- * File.fnmatch(rbfiles, 'main.rb') #=> false
- * File.fnmatch(rbfiles, './main.rb') #=> false
- * File.fnmatch(rbfiles, 'lib/song.rb') #=> true
- * File.fnmatch('**.rb', 'main.rb') #=> true
- * File.fnmatch('**.rb', './main.rb') #=> false
- * File.fnmatch('**.rb', 'lib/song.rb') #=> true
- * File.fnmatch('*', 'dave/.profile') #=> true
+ * File.fnmatch('cat', 'cat') #=> true
+ * File.fnmatch('cat', 'category') #=> false
+ * File.fnmatch('c{at,ub}s', 'cats') #=> false
+ * File.fnmatch('c{at,ub}s', 'cubs') #=> false
+ * File.fnmatch('c{at,ub}s', 'cat') #=> false
*
- * pattern = '*' '/' '*'
- * File.fnmatch(pattern, 'dave/.profile', File::FNM_PATHNAME) #=> false
- * File.fnmatch(pattern, 'dave/.profile', File::FNM_PATHNAME | File::FNM_DOTMATCH) #=> true
+ * File.fnmatch('c?t', 'cat') #=> true
+ * File.fnmatch('c\?t', 'cat') #=> false
+ * File.fnmatch('c??t', 'cat') #=> false
+ * File.fnmatch('c*', 'cats') #=> true
+ * File.fnmatch('c/ * FIXME * /t', 'c/a/b/c/t') #=> true
+ * File.fnmatch('c*t', 'cat') #=> true
+ * File.fnmatch('c\at', 'cat') #=> true
+ * File.fnmatch('c\at', 'cat', File::FNM_NOESCAPE) #=> false
+ * File.fnmatch('a?b', 'a/b') #=> true
+ * File.fnmatch('a?b', 'a/b', File::FNM_PATHNAME) #=> false
*
- * pattern = '**' '/' 'foo'
- * File.fnmatch(pattern, 'a/b/c/foo', File::FNM_PATHNAME) #=> true
- * File.fnmatch(pattern, '/a/b/c/foo', File::FNM_PATHNAME) #=> true
- * File.fnmatch(pattern, 'c:/a/b/c/foo', File::FNM_PATHNAME) #=> true
- * File.fnmatch(pattern, 'a/.b/c/foo', File::FNM_PATHNAME) #=> false
- * File.fnmatch(pattern, 'a/.b/c/foo', File::FNM_PATHNAME | File::FNM_DOTMATCH) #=> true
+ * File.fnmatch('*', '.profile') #=> false
+ * File.fnmatch('*', '.profile', File::FNM_DOTMATCH) #=> true
+ * File.fnmatch('*', 'dave/.profile') #=> true
+ * File.fnmatch('*', 'dave/.profile', File::FNM_DOTMATCH) #=> true
+ * File.fnmatch('*', 'dave/.profile', File::FNM_PATHNAME) #=> false
+ * File.fnmatch('* / FIXME *', 'dave/.profile', File::FNM_PATHNAME) #=> false
+ * STRICT = File::FNM_PATHNAME | File::FNM_DOTMATCH
+ * File.fnmatch('* / FIXME *', 'dave/.profile', STRICT) #=> true
*/
static VALUE
-file_s_fnmatch(int argc, VALUE *argv, VALUE obj)
+file_s_fnmatch(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
VALUE pattern, path;
VALUE rflags;
@@ -1844,7 +1590,7 @@ file_s_fnmatch(int argc, VALUE *argv, VALUE obj)
StringValue(pattern);
StringValue(path);
- if (fnmatch(RSTRING_PTR(pattern), RSTRING_PTR(path), flags) == 0)
+ if (fnmatch(RSTRING(pattern)->ptr, RSTRING(path)->ptr, flags) == 0)
return Qtrue;
return Qfalse;
@@ -1862,7 +1608,7 @@ file_s_fnmatch(int argc, VALUE *argv, VALUE obj)
* (<code>.</code>).
*/
void
-Init_Dir(void)
+Init_Dir()
{
rb_cDir = rb_define_class("Dir", rb_cObject);
@@ -1875,7 +1621,6 @@ Init_Dir(void)
rb_define_method(rb_cDir,"initialize", dir_initialize, 1);
rb_define_method(rb_cDir,"path", dir_path, 0);
- rb_define_method(rb_cDir,"inspect", dir_inspect, 0);
rb_define_method(rb_cDir,"read", dir_read, 0);
rb_define_method(rb_cDir,"each", dir_each, 0);
rb_define_method(rb_cDir,"rewind", dir_rewind, 0);
@@ -1895,7 +1640,7 @@ Init_Dir(void)
rb_define_singleton_method(rb_cDir,"unlink", dir_s_rmdir, 1);
rb_define_singleton_method(rb_cDir,"glob", dir_s_glob, -1);
- rb_define_singleton_method(rb_cDir,"[]", dir_s_aref, -1);
+ rb_define_singleton_method(rb_cDir,"[]", dir_s_aref, 1);
rb_define_singleton_method(rb_cFile,"fnmatch", file_s_fnmatch, -1);
rb_define_singleton_method(rb_cFile,"fnmatch?", file_s_fnmatch, -1);
diff --git a/distruby.rb b/distruby.rb
new file mode 100644
index 0000000000..613da0eb9c
--- /dev/null
+++ b/distruby.rb
@@ -0,0 +1,59 @@
+#!./miniruby
+
+if RUBY_PATCHLEVEL.zero?
+ dirname = sprintf 'ruby-%s', RUBY_VERSION
+ tagname = dirname.gsub /ruby-(\d)\.(\d)\.(\d)/, 'v\1_\2_\3'
+else
+ dirname = sprintf 'ruby-%s-p%u', RUBY_VERSION, RUBY_PATCHLEVEL
+ tagname = dirname.gsub /ruby-(\d)\.(\d)\.(\d)-p/, 'v\1_\2_\3_'
+end
+tgzname = dirname + '.tar.gz'
+tbzname = dirname + '.tar.bz2'
+zipname = dirname + '.zip'
+repos = 'http://svn.ruby-lang.org/repos/ruby/tags/' + tagname
+
+STDERR.puts 'exporting sources...'
+system 'svn', 'export', '-q', repos, dirname
+Dir.chdir dirname do
+ STDERR.puts 'generating configure...'
+ system 'autoconf'
+ system 'rm', '-rf', 'autom4te.cache'
+
+ STDERR.puts 'generating parse.c...'
+ system 'bison', '-y', '-o', 'parse.c', 'parse.y'
+end
+
+STDERR.puts 'generating tarballs...'
+ENV['GZIP'] = '-9'
+system 'tar', 'chofzp', tgzname, dirname
+system 'tar', 'chojfp', tbzname, dirname
+system 'zip', '-q9r', zipname, dirname
+
+require 'digest/md5'
+require 'digest/sha2'
+for name in [tgzname, tbzname, zipname] do
+ open name, 'rb' do |fp|
+ str = fp.read
+ md5 = Digest::MD5.hexdigest str
+ sha = Digest::SHA256.hexdigest str
+ printf "MD5(%s)= %s\nSHA256(%s)= %s\nSIZE(%s)= %s\n\n",
+ name, md5,
+ name, sha,
+ name, str.size
+ end
+end
+
+
+
+#
+# Local Variables:
+# mode: ruby
+# code: utf-8
+# indent-tabs-mode: t
+# tab-width: 3
+# ruby-indent-level: 3
+# fill-column: 79
+# default-justification: full
+# End:
+# vi: ts=3 sw=3
+
diff --git a/djgpp/configure.bat b/djgpp/configure.bat
index e6a5d79d4a..e6a5d79d4a 100644..100755
--- a/djgpp/configure.bat
+++ b/djgpp/configure.bat
diff --git a/dln.c b/dln.c
index 221e1a1f2e..016d0c12a2 100644
--- a/dln.c
+++ b/dln.c
@@ -2,8 +2,8 @@
dln.c -
- $Author$
- $Date$
+ $Author: matz $
+ $Date: 2006/08/07 03:43:39 $
created at: Tue Jan 18 17:05:06 JST 1994
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -101,7 +101,9 @@ char *getenv();
#endif
static int
-init_funcname_len(char **buf, const char *file)
+init_funcname_len(buf, file)
+ char **buf;
+ const char *file;
{
char *p;
const char *slash;
@@ -182,7 +184,10 @@ static st_table *undef_tbl;
static int load_lib();
static int
-load_header(int fd, struct exec *hdrp, long disp)
+load_header(fd, hdrp, disp)
+ int fd;
+ struct exec *hdrp;
+ long disp;
{
int size;
@@ -252,7 +257,10 @@ static int reloc_r_length[] = {
#endif
static struct relocation_info *
-load_reloc(int fd, struct exec *hdrp, long disp)
+load_reloc(fd, hdrp, disp)
+ int fd;
+ struct exec *hdrp;
+ long disp;
{
struct relocation_info *reloc;
int size;
@@ -275,7 +283,10 @@ load_reloc(int fd, struct exec *hdrp, long disp)
}
static struct nlist *
-load_sym(int fd, struct exec *hdrp, long disp)
+load_sym(fd, hdrp, disp)
+ int fd;
+ struct exec *hdrp;
+ long disp;
{
struct nlist * buffer;
struct nlist * sym;
@@ -316,7 +327,9 @@ load_sym(int fd, struct exec *hdrp, long disp)
}
static st_table *
-sym_hash(struct exec *hdrp, struct nlist *syms)
+sym_hash(hdrp, syms)
+ struct exec *hdrp;
+ struct nlist *syms;
{
st_table *tbl;
struct nlist *sym = syms;
@@ -336,7 +349,8 @@ sym_hash(struct exec *hdrp, struct nlist *syms)
}
static int
-dln_init(const char *prog)
+dln_init(prog)
+ const char *prog;
{
char *file;
int fd;
@@ -410,7 +424,11 @@ dln_init(const char *prog)
}
static long
-load_text_data(int fd, struct exec *hdrp, int bss, long disp)
+load_text_data(fd, hdrp, bss, disp)
+ int fd;
+ struct exec *hdrp;
+ int bss;
+ long disp;
{
int size;
unsigned char* addr;
@@ -444,7 +462,8 @@ load_text_data(int fd, struct exec *hdrp, int bss, long disp)
}
static int
-undef_print(char *key, char *value)
+undef_print(key, value)
+ char *key, *value;
{
fprintf(stderr, " %s\n", key);
return ST_CONTINUE;
@@ -481,7 +500,10 @@ struct undef {
static st_table *reloc_tbl = NULL;
static void
-link_undef(const char *name, long base, struct relocation_info *reloc)
+link_undef(name, base, reloc)
+ const char *name;
+ long base;
+ struct relocation_info *reloc;
{
static int u_no = 0;
struct undef *obj;
@@ -514,7 +536,10 @@ struct reloc_arg {
};
static int
-reloc_undef(int no, struct undef *undef, struct reloc_arg *arg)
+reloc_undef(no, undef, arg)
+ int no;
+ struct undef *undef;
+ struct reloc_arg *arg;
{
int datum;
char *address;
@@ -575,7 +600,9 @@ reloc_undef(int no, struct undef *undef, struct reloc_arg *arg)
}
static void
-unlink_undef(const char *name, long value)
+unlink_undef(name, value)
+ const char *name;
+ long value;
{
struct reloc_arg arg;
@@ -590,7 +617,10 @@ struct indr_data {
};
static int
-reloc_repl(int no, struct undef *undef, struct indr_data *data)
+reloc_repl(no, undef, data)
+ int no;
+ struct undef *undef;
+ struct indr_data *data;
{
if (strcmp(data->name0, undef->name) == 0) {
free(undef->name);
@@ -601,7 +631,10 @@ reloc_repl(int no, struct undef *undef, struct indr_data *data)
#endif
static int
-load_1(int fd, long disp, const char *need_init)
+load_1(fd, disp, need_init)
+ int fd;
+ long disp;
+ const char *need_init;
{
static char *libc = LIBC_NAME;
struct exec hdr;
@@ -882,7 +915,10 @@ load_1(int fd, long disp, const char *need_init)
static int target_offset;
static int
-search_undef(const char *key, int value, st_table *lib_tbl)
+search_undef(key, value, lib_tbl)
+ const char *key;
+ int value;
+ st_table *lib_tbl;
{
long offset;
@@ -899,7 +935,8 @@ struct symdef {
char *dln_librrb_ary_path = DLN_DEFAULT_LIB_PATH;
static int
-load_lib(const char *lib)
+load_lib(lib)
+ const char *lib;
{
char *path, *file;
char armagic[SARMAG];
@@ -1036,7 +1073,8 @@ load_lib(const char *lib)
}
static int
-load(const char *file)
+load(file)
+ const char *file;
{
int fd;
int result;
@@ -1061,7 +1099,8 @@ load(const char *file)
}
void*
-dln_sym(const char *name)
+dln_sym(name)
+ const char *name;
{
struct nlist *sym;
@@ -1073,7 +1112,12 @@ dln_sym(const char *name)
#endif /* USE_DLN_A_OUT */
#ifdef USE_DLN_DLOPEN
-# include <dlfcn.h>
+# if defined(__NetBSD__) && defined(__NetBSD_Version__) && __NetBSD_Version__ < 105000000
+# include <nlist.h>
+# include <link.h>
+# else
+# include <dlfcn.h>
+# endif
#endif
#ifdef __hpux
@@ -1116,7 +1160,7 @@ dln_sym(const char *name)
#endif
static const char *
-dln_strerror(void)
+dln_strerror()
{
#ifdef USE_DLN_A_OUT
char *strerror();
@@ -1214,10 +1258,24 @@ aix_loaderror(const char *pathname)
}
#endif
+#if defined(__VMS)
+#include <starlet.h>
+#include <rms.h>
+#include <stsdef.h>
+#include <unixlib.h>
+#include <descrip.h>
+#include <lib$routines.h>
+
+static char *vms_filespec;
+static int vms_fileact(char *filespec, int type);
+static long vms_fisexh(long *sigarr, long *mecarr);
+#endif
+
#endif /* NO_DLN_LOAD */
void*
-dln_load(const char *file)
+dln_load(file)
+ const char *file;
{
#ifdef NO_DLN_LOAD
rb_raise(rb_eLoadError, "this executable file can't load extension libraries");
@@ -1519,9 +1577,16 @@ dln_load(const char *file)
#if defined(__VMS)
#define DLN_DEFINED
{
- void *handle, (*init_fct)();
+ long status;
+ void (*init_fct)();
char *fname, *p1, *p2;
+ $DESCRIPTOR(fname_d, "");
+ $DESCRIPTOR(image_d, "");
+ $DESCRIPTOR(buf_d, "");
+
+ decc$to_vms(file, vms_fileact, 0, 0);
+
fname = (char *)__alloca(strlen(file)+1);
strcpy(fname,file);
if (p1 = strrchr(fname,'/'))
@@ -1529,19 +1594,35 @@ dln_load(const char *file)
if (p2 = strrchr(fname,'.'))
*p2 = '\0';
- if ((handle = (void*)dlopen(fname, 0)) == NULL) {
+ fname_d.dsc$w_length = strlen(fname);
+ fname_d.dsc$a_pointer = fname;
+ image_d.dsc$w_length = strlen(vms_filespec);
+ image_d.dsc$a_pointer = vms_filespec;
+ buf_d.dsc$w_length = strlen(buf);
+ buf_d.dsc$a_pointer = buf;
+
+ lib$establish(vms_fisexh);
+
+ status = lib$find_image_symbol (
+ &fname_d,
+ &buf_d,
+ &init_fct,
+ &image_d);
+
+ lib$establish(0);
+
+ if (status == RMS$_FNF) {
error = dln_strerror();
goto failed;
- }
-
- if ((init_fct = (void (*)())dlsym(handle, buf)) == NULL) {
+ } else if (!$VMS_STATUS_SUCCESS(status)) {
error = DLN_ERROR();
- dlclose(handle);
goto failed;
}
+
/* Call the init code */
(*init_fct)();
- return handle;
+
+ return 1;
}
#endif /* __VMS */
@@ -1560,10 +1641,12 @@ dln_load(const char *file)
return 0; /* dummy return */
}
-static char *dln_find_1(const char *fname, const char *path, int exe_flag);
+static char *dln_find_1();
char *
-dln_find_exe(const char *fname, const char *path)
+dln_find_exe(fname, path)
+ const char *fname;
+ const char *path;
{
if (!path) {
path = getenv(PATH_ENV);
@@ -1580,7 +1663,9 @@ dln_find_exe(const char *fname, const char *path)
}
char *
-dln_find_file(const char *fname, const char *path)
+dln_find_file(fname, path)
+ const char *fname;
+ const char *path;
{
#ifndef __MACOS__
if (!path) path = ".";
@@ -1593,7 +1678,10 @@ dln_find_file(const char *fname, const char *path)
#if defined(__CYGWIN32__)
const char *
-conv_to_posix_path(char *win32, char *posix, int len)
+conv_to_posix_path(win32, posix, len)
+ char *win32;
+ char *posix;
+ int len;
{
char *first = win32;
char *p = win32;
@@ -1620,33 +1708,34 @@ conv_to_posix_path(char *win32, char *posix, int len)
static char fbuf[MAXPATHLEN];
static char *
-dln_find_1(const char *fname, const char *path, int exe_flag /* non 0 if looking for executable. */)
+dln_find_1(fname, path, exe_flag)
+ char *fname;
+ char *path;
+ int exe_flag; /* non 0 if looking for executable. */
{
- register const char *dp;
- register const char *ep;
+ register char *dp;
+ register char *ep;
register char *bp;
struct stat st;
#ifdef __MACOS__
const char* mac_fullpath;
#endif
-#define RETURN_IF(expr) if (expr) return (char *)fname;
-
- RETURN_IF(!fname);
- RETURN_IF(fname[0] == '/');
- RETURN_IF(strncmp("./", fname, 2) == 0 || strncmp("../", fname, 3) == 0);
- RETURN_IF(exe_flag && strchr(fname, '/'));
+ if (!fname) return fname;
+ if (fname[0] == '/') return fname;
+ if (strncmp("./", fname, 2) == 0 || strncmp("../", fname, 3) == 0)
+ return fname;
+ if (exe_flag && strchr(fname, '/')) return fname;
#ifdef DOSISH
- RETURN_IF(fname[0] == '\\');
+ if (fname[0] == '\\') return fname;
# ifdef DOSISH_DRIVE_LETTER
- RETURN_IF(strlen(fname) > 2 && fname[1] == ':');
+ if (strlen(fname) > 2 && fname[1] == ':') return fname;
# endif
- RETURN_IF(strncmp(".\\", fname, 2) == 0 || strncmp("..\\", fname, 3) == 0);
- RETURN_IF(exe_flag && strchr(fname, '\\'));
+ if (strncmp(".\\", fname, 2) == 0 || strncmp("..\\", fname, 3) == 0)
+ return fname;
+ if (exe_flag && strchr(fname, '\\')) return fname;
#endif
-#undef RETURN_IF
-
for (dp = path;; dp = ++ep) {
register int l;
int i;
@@ -1777,3 +1866,24 @@ dln_find_1(const char *fname, const char *path, int exe_flag /* non 0 if looking
/* otherwise try the next component in the search path */
}
}
+
+#if defined(__VMS)
+
+/* action routine for decc$to_vms */
+static int vms_fileact(char *filespec, int type)
+{
+ if (vms_filespec)
+ free(vms_filespec);
+ vms_filespec = malloc(strlen(filespec)+1);
+ strcpy(vms_filespec, filespec);
+ return 1;
+}
+
+/* exception handler for LIB$FIND_IMAGE_SYMBOL */
+static long vms_fisexh(long *sigarr, long *mecarr)
+{
+ sys$unwind(1, 0);
+ return 1;
+}
+
+#endif /* __VMS */
diff --git a/dln.h b/dln.h
index 4fd51cbee0..3d52ea2827 100644
--- a/dln.h
+++ b/dln.h
@@ -2,8 +2,8 @@
dln.h -
- $Author$
- $Date$
+ $Author: michal $
+ $Date: 2003/01/16 07:34:01 $
created at: Wed Jan 19 16:53:09 JST 1994
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -29,12 +29,12 @@
# define _(args) ()
#endif
-char *dln_find_exe(const char*,const char*);
-char *dln_find_file(const char*,const char*);
+char *dln_find_exe _((const char*,const char*));
+char *dln_find_file _((const char*,const char*));
#ifdef USE_DLN_A_OUT
extern char *dln_argv0;
#endif
-void *dln_load(const char*);
+void *dln_load _((const char*));
#endif
diff --git a/dmyext.c b/dmyext.c
index 4d273f7faf..4120d493c3 100644
--- a/dmyext.c
+++ b/dmyext.c
@@ -1,4 +1,4 @@
void
-Init_ext(void)
+Init_ext()
{
}
diff --git a/doc/forwardable.rd b/doc/forwardable.rd
index 7272c374b6..f9c8234761 100644
--- a/doc/forwardable.rd
+++ b/doc/forwardable.rd
@@ -1,8 +1,8 @@
-- forwardable.rb
$Release Version: 1.1 $
- $Revision$
- $Date$
+ $Revision: 1.2 $
+ $Date: 2001/05/07 23:52:57 $
Original version by Tosh
=begin
diff --git a/doc/forwardable.rd.ja b/doc/forwardable.rd.ja
index d928fddc5e..a56823dd1a 100644
--- a/doc/forwardable.rd.ja
+++ b/doc/forwardable.rd.ja
@@ -1,7 +1,7 @@
-- forwatable.rb
$Release Version: 1.1 $
- $Revision$
- $Date$
+ $Revision: 1.1 $
+ $Date: 2001/07/19 05:42:06 $
=begin
= Forwardable
diff --git a/doc/irb/irb-tools.rd.ja b/doc/irb/irb-tools.rd.ja
index 64d9ab29c8..38145576dc 100644
--- a/doc/irb/irb-tools.rd.ja
+++ b/doc/irb/irb-tools.rd.ja
@@ -1,7 +1,7 @@
irb´ØÏ¢¤ª¤Þ¤±¥³¥Þ¥ó¥É¤È¥é¥¤¥Ö¥é¥ê
$Release Version: 0.7.1 $
- $Revision$
- $Date$
+ $Revision: 1.1 $
+ $Date: 2001/07/19 05:42:06 $
by Keiju ISHITSUKA(Nihon Rational Co.,Ltd.)
=begin
diff --git a/doc/irb/irb.rd b/doc/irb/irb.rd
index a42cd46680..f56e8b60e0 100644
--- a/doc/irb/irb.rd
+++ b/doc/irb/irb.rd
@@ -1,7 +1,7 @@
irb -- interactive ruby
$Release Version: 0.9 $
- $Revision$
- $Date$
+ $Revision: 1.6 $
+ $Date: 2003/07/31 16:34:07 $
by Keiju ISHITSUKA(keiju@ishitsuka.com)
by gotoken-san who is original translater from japanese version
diff --git a/doc/irb/irb.rd.ja b/doc/irb/irb.rd.ja
index 338dcc644e..aa3c0e13aa 100644
--- a/doc/irb/irb.rd.ja
+++ b/doc/irb/irb.rd.ja
@@ -1,7 +1,7 @@
irb -- interactive ruby
$Release Version: 0.9.5 $
- $Revision$
- $Date$
+ $Revision: 1.3.2.1 $
+ $Date: 2005/04/19 19:24:56 $
by Keiju ISHITSUKA(keiju@ruby-lang.org)
=begin
= irb¤È¤Ï?
diff --git a/doc/shell.rd b/doc/shell.rd
index 02ee1b020a..ae6855cbd8 100644
--- a/doc/shell.rd
+++ b/doc/shell.rd
@@ -1,7 +1,7 @@
-- shell.rb
$Release Version: 0.6.0 $
- $Revision$
- $Date$
+ $Revision: 1.2 $
+ $Date: 2001/05/17 10:09:49 $
by Keiju ISHITSUKA(keiju@ishitsuka.com)
=begin
diff --git a/doc/shell.rd.ja b/doc/shell.rd.ja
index 073e71ea42..aab9e5c7d2 100644
--- a/doc/shell.rd.ja
+++ b/doc/shell.rd.ja
@@ -1,7 +1,7 @@
-- shell.rb
$Release Version: 0.6.0 $
- $Revision$
- $Date$
+ $Revision: 1.1 $
+ $Date: 2001/07/19 05:42:06 $
by Keiju ISHITSUKA(keiju@ishitsuka.com)
=begin
diff --git a/enum.c b/enum.c
index 4836aef72b..112a5f820b 100644
--- a/enum.c
+++ b/enum.c
@@ -2,8 +2,8 @@
enum.c -
- $Author$
- $Date$
+ $Author: drbrain $
+ $Date: 2006/06/15 01:24:40 $
created at: Fri Oct 1 15:15:19 JST 1993
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -17,8 +17,16 @@
VALUE rb_mEnumerable;
static ID id_each, id_eqq, id_cmp;
+VALUE
+rb_each(obj)
+ VALUE obj;
+{
+ return rb_funcall(obj, id_each, 0, 0);
+}
+
static VALUE
-grep_i(VALUE i, VALUE *arg)
+grep_i(i, arg)
+ VALUE i, *arg;
{
if (RTEST(rb_funcall(arg[0], id_eqq, 1, i))) {
rb_ary_push(arg[1], i);
@@ -27,7 +35,8 @@ grep_i(VALUE i, VALUE *arg)
}
static VALUE
-grep_iter_i(VALUE i, VALUE *arg)
+grep_iter_i(i, arg)
+ VALUE i, *arg;
{
if (RTEST(rb_funcall(arg[0], id_eqq, 1, i))) {
rb_ary_push(arg[1], rb_yield(i));
@@ -54,7 +63,8 @@ grep_iter_i(VALUE i, VALUE *arg)
*/
static VALUE
-enum_grep(VALUE obj, VALUE pat)
+enum_grep(obj, pat)
+ VALUE obj, pat;
{
VALUE ary = rb_ary_new();
VALUE arg[2];
@@ -62,68 +72,15 @@ enum_grep(VALUE obj, VALUE pat)
arg[0] = pat;
arg[1] = ary;
- rb_block_call(obj, id_each, 0, 0, rb_block_given_p() ? grep_iter_i : grep_i, (VALUE)arg);
+ rb_iterate(rb_each, obj, rb_block_given_p() ? grep_iter_i : grep_i, (VALUE)arg);
return ary;
}
static VALUE
-count_i(VALUE i, VALUE *arg)
-{
- if (rb_equal(i, arg[0])) {
- arg[1]++;
- }
- return Qnil;
-}
-
-static VALUE
-count_iter_i(VALUE i, long *n)
-{
- if (RTEST(rb_yield(i))) {
- (*n)++;
- }
- return Qnil;
-}
-
-/*
- * call-seq:
- * enum.count(item) => int
- * enum.count {| obj | block } => int
- *
- * Returns the number of items in <i>enum</i> for which equals to <i>item</i>.
- * If a block is given, counts the number of elements yielding a true value.
- *
- * ary = [1, 2, 4, 2]
- * ary.count(2) # => 2
- * ary.count{|x|x%2==0} # => 3
- *
- */
-
-static VALUE
-enum_count(int argc, VALUE *argv, VALUE obj)
-{
- if (argc == 1) {
- VALUE item, args[2];
-
- if (rb_block_given_p()) {
- rb_warn("given block not used");
- }
- rb_scan_args(argc, argv, "1", &item);
- args[0] = item;
- args[1] = 0;
- rb_block_call(obj, id_each, 0, 0, count_i, (VALUE)&args);
- return INT2NUM(args[1]);
- }
- else {
- long n = 0;
-
- rb_block_call(obj, id_each, 0, 0, count_iter_i, (VALUE)&n);
- return INT2NUM(n);
- }
-}
-
-static VALUE
-find_i(VALUE i, VALUE *memo)
+find_i(i, memo)
+ VALUE i;
+ VALUE *memo;
{
if (RTEST(rb_yield(i))) {
*memo = i;
@@ -148,14 +105,16 @@ find_i(VALUE i, VALUE *memo)
*/
static VALUE
-enum_find(int argc, VALUE *argv, VALUE obj)
+enum_find(argc, argv, obj)
+ int argc;
+ VALUE* argv;
+ VALUE obj;
{
VALUE memo = Qundef;
VALUE if_none;
rb_scan_args(argc, argv, "01", &if_none);
- RETURN_ENUMERATOR(obj, argc, argv);
- rb_block_call(obj, id_each, 0, 0, find_i, (VALUE)&memo);
+ rb_iterate(rb_each, obj, find_i, (VALUE)&memo);
if (memo != Qundef) {
return memo;
}
@@ -166,46 +125,8 @@ enum_find(int argc, VALUE *argv, VALUE obj)
}
static VALUE
-find_index_i(VALUE i, VALUE *memo)
-{
- if (RTEST(rb_yield(i))) {
- memo[0] = UINT2NUM(memo[1]);
- rb_iter_break();
- }
- memo[1]++;
- return Qnil;
-}
-
-/*
- * call-seq:
- * enum.find_index(ifnone = nil) {| obj | block } => int
- *
- * Passes each entry in <i>enum</i> to <em>block</em>. Returns the
- * index for the first for which <em>block</em> is not <code>false</code>.
- * If no object matches, returns <code>nil</code>
- *
- * (1..10).find_index {|i| i % 5 == 0 and i % 7 == 0 } #=> nil
- * (1..100).find_index {|i| i % 5 == 0 and i % 7 == 0 } #=> 35
- *
- */
-
-static VALUE
-enum_find_index(VALUE obj)
-{
- VALUE memo[2];
-
- RETURN_ENUMERATOR(obj, 0, 0);
- memo[0] = Qundef;
- memo[1] = 0;
- rb_block_call(obj, id_each, 0, 0, find_index_i, (VALUE)memo);
- if (memo[0] != Qundef) {
- return memo[0];
- }
- return Qnil;
-}
-
-static VALUE
-find_all_i(VALUE i, VALUE ary)
+find_all_i(i, ary)
+ VALUE i, ary;
{
if (RTEST(rb_yield(i))) {
rb_ary_push(ary, i);
@@ -227,20 +148,19 @@ find_all_i(VALUE i, VALUE ary)
*/
static VALUE
-enum_find_all(VALUE obj)
+enum_find_all(obj)
+ VALUE obj;
{
- VALUE ary;
+ VALUE ary = rb_ary_new();
- RETURN_ENUMERATOR(obj, 0, 0);
-
- ary = rb_ary_new();
- rb_block_call(obj, id_each, 0, 0, find_all_i, ary);
+ rb_iterate(rb_each, obj, find_all_i, ary);
return ary;
}
static VALUE
-reject_i(VALUE i, VALUE ary)
+reject_i(i, ary)
+ VALUE i, ary;
{
if (!RTEST(rb_yield(i))) {
rb_ary_push(ary, i);
@@ -260,20 +180,19 @@ reject_i(VALUE i, VALUE ary)
*/
static VALUE
-enum_reject(VALUE obj)
+enum_reject(obj)
+ VALUE obj;
{
- VALUE ary;
+ VALUE ary = rb_ary_new();
- RETURN_ENUMERATOR(obj, 0, 0);
-
- ary = rb_ary_new();
- rb_block_call(obj, id_each, 0, 0, reject_i, ary);
+ rb_iterate(rb_each, obj, reject_i, ary);
return ary;
}
static VALUE
-collect_i(VALUE i, VALUE ary)
+collect_i(i, ary)
+ VALUE i, ary;
{
rb_ary_push(ary, rb_yield(i));
@@ -281,7 +200,8 @@ collect_i(VALUE i, VALUE ary)
}
static VALUE
-collect_all(VALUE i, VALUE ary)
+collect_all(i, ary)
+ VALUE i, ary;
{
rb_ary_push(ary, i);
@@ -302,14 +222,12 @@ collect_all(VALUE i, VALUE ary)
*/
static VALUE
-enum_collect(VALUE obj)
+enum_collect(obj)
+ VALUE obj;
{
- VALUE ary;
-
- RETURN_ENUMERATOR(obj, 0, 0);
+ VALUE ary = rb_ary_new();
- ary = rb_ary_new();
- rb_block_call(obj, id_each, 0, 0, collect_i, ary);
+ rb_iterate(rb_each, obj, rb_block_given_p() ? collect_i : collect_all, ary);
return ary;
}
@@ -325,17 +243,20 @@ enum_collect(VALUE obj)
* { 'a'=>1, 'b'=>2, 'c'=>3 }.to_a #=> [["a", 1], ["b", 2], ["c", 3]]
*/
static VALUE
-enum_to_a(VALUE obj)
+enum_to_a(obj)
+ VALUE obj;
{
VALUE ary = rb_ary_new();
- rb_block_call(obj, id_each, 0, 0, collect_all, ary);
+ rb_iterate(rb_each, obj, collect_all, ary);
return ary;
}
static VALUE
-inject_i(VALUE i, VALUE *memo)
+inject_i(i, memo)
+ VALUE i;
+ VALUE *memo;
{
if (*memo == Qundef) {
*memo = i;
@@ -378,19 +299,22 @@ inject_i(VALUE i, VALUE *memo)
*/
static VALUE
-enum_inject(int argc, VALUE *argv, VALUE obj)
+enum_inject(argc, argv, obj)
+ int argc;
+ VALUE *argv, obj;
{
VALUE memo = Qundef;
if (rb_scan_args(argc, argv, "01", &memo) == 0)
memo = Qundef;
- rb_block_call(obj, id_each, 0, 0, inject_i, (VALUE)&memo);
+ rb_iterate(rb_each, obj, inject_i, (VALUE)&memo);
if (memo == Qundef) return Qnil;
return memo;
}
static VALUE
-partition_i(VALUE i, VALUE *ary)
+partition_i(i, ary)
+ VALUE i, *ary;
{
if (RTEST(rb_yield(i))) {
rb_ary_push(ary[0], i);
@@ -414,111 +338,18 @@ partition_i(VALUE i, VALUE *ary)
*/
static VALUE
-enum_partition(VALUE obj)
+enum_partition(obj)
+ VALUE obj;
{
VALUE ary[2];
- RETURN_ENUMERATOR(obj, 0, 0);
-
ary[0] = rb_ary_new();
ary[1] = rb_ary_new();
- rb_block_call(obj, id_each, 0, 0, partition_i, (VALUE)ary);
+ rb_iterate(rb_each, obj, partition_i, (VALUE)ary);
return rb_assoc_new(ary[0], ary[1]);
}
-static VALUE
-group_by_i(VALUE i, VALUE hash)
-{
- VALUE group = rb_yield(i);
- VALUE values;
-
- values = rb_hash_aref(hash, group);
- if (NIL_P(values)) {
- values = rb_ary_new3(1, i);
- rb_hash_aset(hash, group, values);
- }
- else {
- rb_ary_push(values, i);
- }
- return Qnil;
-}
-
-/*
- * call-seq:
- * enum.group_by {| obj | block } => a_hash
- *
- * Returns a hash, which keys are evaluated result from the
- * block, and values are arrays of elements in <i>enum</i>
- * corresponding to the key.
- *
- * (1..6).group_by {|i| i%3} #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
- *
- */
-
-static VALUE
-enum_group_by(VALUE obj)
-{
- VALUE hash;
-
- RETURN_ENUMERATOR(obj, 0, 0);
-
- hash = rb_hash_new();
- rb_block_call(obj, id_each, 0, 0, group_by_i, hash);
-
- return hash;
-}
-
-static VALUE
-first_i(VALUE i, VALUE *ary)
-{
- if (NIL_P(ary[0])) {
- ary[1] = i;
- rb_iter_break();
- }
- else {
- long n = NUM2LONG(ary[0]);
-
- if (n <= 0) {
- rb_iter_break();
- }
- rb_ary_push(ary[1], i);
- n--;
- ary[0] = INT2NUM(n);
- }
- return Qnil;
-}
-
-/*
- * call-seq:
- * enum.first -> obj or nil
- * enum.first(n) -> an_array
- *
- * Returns the first element, or the first +n+ elements, of the enumerable.
- * If the enumerable is empty, the first form returns <code>nil</code>, and the
- * second form returns an empty array.
- *
- */
-
-static VALUE
-enum_first(int argc, VALUE *argv, VALUE obj)
-{
- VALUE n, ary[2];
-
- rb_scan_args(argc, argv, "01", &n);
-
- if (NIL_P(n)) {
- ary[0] = ary[1] = Qnil;
- }
- else {
- ary[0] = n;
- ary[1] = rb_ary_new2(NUM2LONG(n));
- }
- rb_block_call(obj, id_each, 0, 0, first_i, (VALUE)ary);
-
- return ary[1];
-}
-
/*
* call-seq:
* enum.sort => array
@@ -537,13 +368,15 @@ enum_first(int argc, VALUE *argv, VALUE obj)
*/
static VALUE
-enum_sort(VALUE obj)
+enum_sort(obj)
+ VALUE obj;
{
return rb_ary_sort(enum_to_a(obj));
}
static VALUE
-sort_by_i(VALUE i, VALUE ary)
+sort_by_i(i, ary)
+ VALUE i, ary;
{
VALUE v;
NODE *memo;
@@ -558,10 +391,11 @@ sort_by_i(VALUE i, VALUE ary)
}
static int
-sort_by_cmp(const void *ap, const void *bp, void *data)
+sort_by_cmp(aa, bb)
+ NODE **aa, **bb;
{
- VALUE a = (*(NODE *const *)ap)->u1.value;
- VALUE b = (*(NODE *const *)bp)->u1.value;
+ VALUE a = aa[0]->u1.value;
+ VALUE b = bb[0]->u1.value;
return rb_cmpint(rb_funcall(a, id_cmp, 1, b), a, b);
}
@@ -574,7 +408,7 @@ sort_by_cmp(const void *ap, const void *bp, void *data)
* values in <i>enum</i> through the given block.
*
* %w{ apple pear fig }.sort_by {|word| word.length}
- #=> ["fig", "pear", "apple"]
+ #=> ["fig", "pear", "apple"]
*
* The current implementation of <code>sort_by</code> generates an
* array of tuples containing the original collection element and the
@@ -636,36 +470,37 @@ sort_by_cmp(const void *ap, const void *bp, void *data)
*/
static VALUE
-enum_sort_by(VALUE obj)
+enum_sort_by(obj)
+ VALUE obj;
{
VALUE ary;
long i;
- RETURN_ENUMERATOR(obj, 0, 0);
-
if (TYPE(obj) == T_ARRAY) {
- ary = rb_ary_new2(RARRAY_LEN(obj));
+ ary = rb_ary_new2(RARRAY(obj)->len);
}
else {
ary = rb_ary_new();
}
RBASIC(ary)->klass = 0;
- rb_block_call(obj, id_each, 0, 0, sort_by_i, ary);
- if (RARRAY_LEN(ary) > 1) {
- ruby_qsort(RARRAY_PTR(ary), RARRAY_LEN(ary), sizeof(VALUE), sort_by_cmp, 0);
+ rb_iterate(rb_each, obj, sort_by_i, ary);
+ if (RARRAY(ary)->len > 1) {
+ qsort(RARRAY(ary)->ptr, RARRAY(ary)->len, sizeof(VALUE), sort_by_cmp, 0);
}
if (RBASIC(ary)->klass) {
rb_raise(rb_eRuntimeError, "sort_by reentered");
}
- for (i=0; i<RARRAY_LEN(ary); i++) {
- RARRAY_PTR(ary)[i] = RNODE(RARRAY_PTR(ary)[i])->u2.value;
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ RARRAY(ary)->ptr[i] = RNODE(RARRAY(ary)->ptr[i])->u2.value;
}
RBASIC(ary)->klass = rb_cArray;
return ary;
}
static VALUE
-all_iter_i(VALUE i, VALUE *memo)
+all_iter_i(i, memo)
+ VALUE i;
+ VALUE *memo;
{
if (!RTEST(rb_yield(i))) {
*memo = Qfalse;
@@ -675,7 +510,9 @@ all_iter_i(VALUE i, VALUE *memo)
}
static VALUE
-all_i(VALUE i, VALUE *memo)
+all_i(i, memo)
+ VALUE i;
+ VALUE *memo;
{
if (!RTEST(i)) {
*memo = Qfalse;
@@ -695,23 +532,26 @@ all_i(VALUE i, VALUE *memo)
* <code>all?</code> will return <code>true</code> only if none of the
* collection members are <code>false</code> or <code>nil</code>.)
*
- * %w{ant bear cat}.all? {|word| word.length >= 3} #=> true
- * %w{ant bear cat}.all? {|word| word.length >= 4} #=> false
- * [ nil, true, 99 ].all? #=> false
+ * %w{ ant bear cat}.all? {|word| word.length >= 3} #=> true
+ * %w{ ant bear cat}.all? {|word| word.length >= 4} #=> false
+ * [ nil, true, 99 ].all? #=> false
*
*/
static VALUE
-enum_all(VALUE obj)
+enum_all(obj)
+ VALUE obj;
{
VALUE result = Qtrue;
- rb_block_call(obj, id_each, 0, 0, rb_block_given_p() ? all_iter_i : all_i, (VALUE)&result);
+ rb_iterate(rb_each, obj, rb_block_given_p() ? all_iter_i : all_i, (VALUE)&result);
return result;
}
static VALUE
-any_iter_i(VALUE i, VALUE *memo)
+any_iter_i(i, memo)
+ VALUE i;
+ VALUE *memo;
{
if (RTEST(rb_yield(i))) {
*memo = Qtrue;
@@ -721,7 +561,9 @@ any_iter_i(VALUE i, VALUE *memo)
}
static VALUE
-any_i(VALUE i, VALUE *memo)
+any_i(i, memo)
+ VALUE i;
+ VALUE *memo;
{
if (RTEST(i)) {
*memo = Qtrue;
@@ -742,121 +584,26 @@ any_i(VALUE i, VALUE *memo)
* of the collection members is not <code>false</code> or
* <code>nil</code>.
*
- * %w{ant bear cat}.any? {|word| word.length >= 3} #=> true
- * %w{ant bear cat}.any? {|word| word.length >= 4} #=> true
- * [ nil, true, 99 ].any? #=> true
+ * %w{ ant bear cat}.any? {|word| word.length >= 3} #=> true
+ * %w{ ant bear cat}.any? {|word| word.length >= 4} #=> true
+ * [ nil, true, 99 ].any? #=> true
*
*/
static VALUE
-enum_any(VALUE obj)
+enum_any(obj)
+ VALUE obj;
{
VALUE result = Qfalse;
- rb_block_call(obj, id_each, 0, 0, rb_block_given_p() ? any_iter_i : any_i, (VALUE)&result);
+ rb_iterate(rb_each, obj, rb_block_given_p() ? any_iter_i : any_i, (VALUE)&result);
return result;
}
static VALUE
-one_iter_i(VALUE i, VALUE *memo)
-{
- if (RTEST(rb_yield(i))) {
- if (*memo == Qundef) {
- *memo = Qtrue;
- }
- else if (*memo == Qtrue) {
- *memo = Qfalse;
- }
- }
- return Qnil;
-}
-
-static VALUE
-one_i(VALUE i, VALUE *memo)
-{
- if (RTEST(i)) {
- if (*memo == Qundef) {
- *memo = Qtrue;
- }
- else if (*memo == Qtrue) {
- *memo = Qfalse;
- }
- }
- return Qnil;
-}
-
-/*
- * call-seq:
- * enum.one? [{|obj| block }] => true or false
- *
- * Passes each element of the collection to the given block. The method
- * returns <code>true</code> if the block returns <code>true</code>
- * exactly once. If the block is not given, <code>one?</code> will return
- * <code>true</code> only if exactly one of the collection members are
- * true.
- *
- * %w{ant bear cat}.one? {|word| word.length == 4} #=> true
- * %w{ant bear cat}.one? {|word| word.length >= 4} #=> false
- * [ nil, true, 99 ].one? #=> true
- *
- */
-
-static VALUE
-enum_one(VALUE obj)
-{
- VALUE result = Qundef;
-
- rb_block_call(obj, id_each, 0, 0, rb_block_given_p() ? one_iter_i : one_i, (VALUE)&result);
- if (result == Qundef) return Qfalse;
- return result;
-}
-
-static VALUE
-none_iter_i(VALUE i, VALUE *memo)
-{
- if (RTEST(rb_yield(i))) {
- *memo = Qfalse;
- rb_iter_break();
- }
- return Qnil;
-}
-
-static VALUE
-none_i(VALUE i, VALUE *memo)
-{
- if (RTEST(i)) {
- *memo = Qfalse;
- rb_iter_break();
- }
- return Qnil;
-}
-
-/*
- * call-seq:
- * enum.none? [{|obj| block }] => true or false
- *
- * Passes each element of the collection to the given block. The method
- * returns <code>true</code> if the block never returns <code>true</code>
- * for all elements. If the block is not given, <code>one?</code> will return
- * <code>true</code> only if any of the collection members is true.
- *
- * %w{ant bear cat}.one? {|word| word.length == 4} #=> true
- * %w{ant bear cat}.one? {|word| word.length >= 4} #=> false
- * [ nil, true, 99 ].one? #=> true
- *
- */
-
-static VALUE
-enum_none(VALUE obj)
-{
- VALUE result = Qtrue;
-
- rb_block_call(obj, id_each, 0, 0, rb_block_given_p() ? none_iter_i : none_i, (VALUE)&result);
- return result;
-}
-
-static VALUE
-min_i(VALUE i, VALUE *memo)
+min_i(i, memo)
+ VALUE i;
+ VALUE *memo;
{
VALUE cmp;
@@ -873,7 +620,9 @@ min_i(VALUE i, VALUE *memo)
}
static VALUE
-min_ii(VALUE i, VALUE *memo)
+min_ii(i, memo)
+ VALUE i;
+ VALUE *memo;
{
VALUE cmp;
@@ -905,17 +654,34 @@ min_ii(VALUE i, VALUE *memo)
*/
static VALUE
-enum_min(VALUE obj)
+enum_min(obj)
+ VALUE obj;
{
VALUE result = Qundef;
- rb_block_call(obj, id_each, 0, 0, rb_block_given_p() ? min_ii : min_i, (VALUE)&result);
+ rb_iterate(rb_each, obj, rb_block_given_p() ? min_ii : min_i, (VALUE)&result);
if (result == Qundef) return Qnil;
return result;
}
+/*
+ * call-seq:
+ * enum.max => obj
+ * enum.max {| a,b | block } => obj
+ *
+ * Returns the object in <i>enum</i> with the maximum value. The
+ * first form assumes all objects implement <code>Comparable</code>;
+ * the second uses the block to return <em>a <=> b</em>.
+ *
+ * a = %w(albatross dog horse)
+ * a.max #=> "horse"
+ * a.max {|a,b| a.length <=> b.length } #=> "albatross"
+ */
+
static VALUE
-max_i(VALUE i, VALUE *memo)
+max_i(i, memo)
+ VALUE i;
+ VALUE *memo;
{
VALUE cmp;
@@ -932,7 +698,9 @@ max_i(VALUE i, VALUE *memo)
}
static VALUE
-max_ii(VALUE i, VALUE *memo)
+max_ii(i, memo)
+ VALUE i;
+ VALUE *memo;
{
VALUE cmp;
@@ -963,99 +731,20 @@ max_ii(VALUE i, VALUE *memo)
*/
static VALUE
-enum_max(VALUE obj)
+enum_max(obj)
+ VALUE obj;
{
VALUE result = Qundef;
- rb_block_call(obj, id_each, 0, 0, rb_block_given_p() ? max_ii : max_i, (VALUE)&result);
+ rb_iterate(rb_each, obj, rb_block_given_p() ? max_ii : max_i, (VALUE)&result);
if (result == Qundef) return Qnil;
return result;
}
static VALUE
-min_by_i(VALUE i, VALUE *memo)
-{
- VALUE v;
-
- v = rb_yield(i);
- if (memo[0] == Qundef) {
- memo[0] = v;
- memo[1] = i;
- }
- else if (rb_cmpint(rb_funcall(v, id_cmp, 1, memo[0]), v, memo[0]) < 0) {
- memo[0] = v;
- memo[1] = i;
- }
- return Qnil;
-}
-
-/*
- * call-seq:
- * enum.min_by {| obj| block } => obj
- *
- * Returns the object in <i>enum</i> that gives the minimum
- * value from the given block.
- *
- * a = %w(albatross dog horse)
- * a.min_by {|x| x.length } #=> "dog"
- */
-
-static VALUE
-enum_min_by(VALUE obj)
-{
- VALUE memo[2];
-
- RETURN_ENUMERATOR(obj, 0, 0);
-
- memo[0] = Qundef;
- memo[1] = Qnil;
- rb_block_call(obj, id_each, 0, 0, min_by_i, (VALUE)memo);
- return memo[1];
-}
-
-static VALUE
-max_by_i(VALUE i, VALUE *memo)
-{
- VALUE v;
-
- v = rb_yield(i);
- if (memo[0] == Qundef) {
- memo[0] = v;
- memo[1] = i;
- }
- else if (rb_cmpint(rb_funcall(v, id_cmp, 1, memo[0]), v, memo[0]) > 0) {
- memo[0] = v;
- memo[1] = i;
- }
- return Qnil;
-}
-
-/*
- * call-seq:
- * enum.max_by {| obj| block } => obj
- *
- * Returns the object in <i>enum</i> that gives the maximum
- * value from the given block.
- *
- * a = %w(albatross dog horse)
- * a.max_by {|x| x.length } #=> "albatross"
- */
-
-static VALUE
-enum_max_by(VALUE obj)
-{
- VALUE memo[2];
-
- RETURN_ENUMERATOR(obj, 0, 0);
-
- memo[0] = Qundef;
- memo[1] = Qnil;
- rb_block_call(obj, id_each, 0, 0, max_by_i, (VALUE)memo);
- return memo[1];
-}
-
-static VALUE
-member_i(VALUE item, VALUE *memo)
+member_i(item, memo)
+ VALUE item;
+ VALUE *memo;
{
if (rb_equal(item, memo[0])) {
memo[1] = Qtrue;
@@ -1078,18 +767,21 @@ member_i(VALUE item, VALUE *memo)
*/
static VALUE
-enum_member(VALUE obj, VALUE val)
+enum_member(obj, val)
+ VALUE obj, val;
{
VALUE memo[2];
memo[0] = val;
memo[1] = Qfalse;
- rb_block_call(obj, id_each, 0, 0, member_i, (VALUE)memo);
+ rb_iterate(rb_each, obj, member_i, (VALUE)memo);
return memo[1];
}
static VALUE
-each_with_index_i(VALUE val, VALUE *memo)
+each_with_index_i(val, memo)
+ VALUE val;
+ VALUE *memo;
{
rb_yield_values(2, val, INT2FIX(*memo));
++*memo;
@@ -1112,18 +804,20 @@ each_with_index_i(VALUE val, VALUE *memo)
*/
static VALUE
-enum_each_with_index(VALUE obj)
+enum_each_with_index(obj)
+ VALUE obj;
{
VALUE memo = 0;
- RETURN_ENUMERATOR(obj, 0, 0);
-
- rb_block_call(obj, id_each, 0, 0, each_with_index_i, (VALUE)&memo);
+ rb_need_block();
+ rb_iterate(rb_each, obj, each_with_index_i, (VALUE)&memo);
return obj;
}
static VALUE
-zip_i(VALUE val, VALUE *memo)
+zip_i(val, memo)
+ VALUE val;
+ VALUE *memo;
{
VALUE result = memo[0];
VALUE args = memo[1];
@@ -1131,10 +825,10 @@ zip_i(VALUE val, VALUE *memo)
VALUE tmp;
int i;
- tmp = rb_ary_new2(RARRAY_LEN(args) + 1);
+ tmp = rb_ary_new2(RARRAY(args)->len + 1);
rb_ary_store(tmp, 0, val);
- for (i=0; i<RARRAY_LEN(args); i++) {
- rb_ary_push(tmp, rb_ary_entry(RARRAY_PTR(args)[i], idx));
+ for (i=0; i<RARRAY(args)->len; i++) {
+ rb_ary_push(tmp, rb_ary_entry(RARRAY(args)->ptr[i], idx));
}
if (rb_block_given_p()) {
rb_yield(tmp);
@@ -1169,7 +863,10 @@ zip_i(VALUE val, VALUE *memo)
*/
static VALUE
-enum_zip(int argc, VALUE *argv, VALUE obj)
+enum_zip(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
int i;
VALUE result;
@@ -1178,12 +875,11 @@ enum_zip(int argc, VALUE *argv, VALUE obj)
for (i=0; i<argc; i++) {
argv[i] = rb_convert_type(argv[i], T_ARRAY, "Array", "to_a");
}
- RETURN_ENUMERATOR(obj, argc, argv);
result = rb_block_given_p() ? Qnil : rb_ary_new();
memo[0] = result;
memo[1] = rb_ary_new4(argc, argv);
memo[2] = 0;
- rb_block_call(obj, id_each, 0, 0, zip_i, (VALUE)memo);
+ rb_iterate(rb_each, obj, zip_i, (VALUE)memo);
return result;
}
@@ -1200,7 +896,7 @@ enum_zip(int argc, VALUE *argv, VALUE obj)
*/
void
-Init_Enumerable(void)
+Init_Enumerable()
{
rb_mEnumerable = rb_define_module("Enumerable");
@@ -1210,10 +906,8 @@ Init_Enumerable(void)
rb_define_method(rb_mEnumerable,"sort", enum_sort, 0);
rb_define_method(rb_mEnumerable,"sort_by", enum_sort_by, 0);
rb_define_method(rb_mEnumerable,"grep", enum_grep, 1);
- rb_define_method(rb_mEnumerable,"count", enum_count, -1);
rb_define_method(rb_mEnumerable,"find", enum_find, -1);
rb_define_method(rb_mEnumerable,"detect", enum_find, -1);
- rb_define_method(rb_mEnumerable,"find_index", enum_find_index, 0);
rb_define_method(rb_mEnumerable,"find_all", enum_find_all, 0);
rb_define_method(rb_mEnumerable,"select", enum_find_all, 0);
rb_define_method(rb_mEnumerable,"reject", enum_reject, 0);
@@ -1221,16 +915,10 @@ Init_Enumerable(void)
rb_define_method(rb_mEnumerable,"map", enum_collect, 0);
rb_define_method(rb_mEnumerable,"inject", enum_inject, -1);
rb_define_method(rb_mEnumerable,"partition", enum_partition, 0);
- rb_define_method(rb_mEnumerable,"group_by", enum_group_by, 0);
- rb_define_method(rb_mEnumerable,"first", enum_first, -1);
rb_define_method(rb_mEnumerable,"all?", enum_all, 0);
rb_define_method(rb_mEnumerable,"any?", enum_any, 0);
- rb_define_method(rb_mEnumerable,"one?", enum_one, 0);
- rb_define_method(rb_mEnumerable,"none?", enum_none, 0);
rb_define_method(rb_mEnumerable,"min", enum_min, 0);
rb_define_method(rb_mEnumerable,"max", enum_max, 0);
- rb_define_method(rb_mEnumerable,"min_by", enum_min_by, 0);
- rb_define_method(rb_mEnumerable,"max_by", enum_max_by, 0);
rb_define_method(rb_mEnumerable,"member?", enum_member, 1);
rb_define_method(rb_mEnumerable,"include?", enum_member, 1);
rb_define_method(rb_mEnumerable,"each_with_index", enum_each_with_index, 0);
diff --git a/enumerator.c b/enumerator.c
deleted file mode 100644
index 3f176a77a9..0000000000
--- a/enumerator.c
+++ /dev/null
@@ -1,364 +0,0 @@
-/************************************************
-
- enumerator.c - provides Enumerator class
-
- $Author$
-
- Copyright (C) 2001-2003 Akinori MUSHA
-
- $Idaemons: /home/cvs/rb/enumerator/enumerator.c,v 1.1.1.1 2001/07/15 10:12:48 knu Exp $
- $RoughId: enumerator.c,v 1.6 2003/07/27 11:03:24 nobu Exp $
- $Id$
-
-************************************************/
-
-#include "ruby.h"
-
-/*
- * Document-class: Enumerable::Enumerator
- *
- * A class which provides a method `each' to be used as an Enumerable
- * object.
- */
-static VALUE rb_cEnumerator;
-static VALUE sym_each, sym_each_with_index, sym_each_slice, sym_each_cons;
-
-static VALUE
-proc_call(VALUE proc, VALUE args)
-{
- if (TYPE(args) != T_ARRAY) {
- args = rb_ary_new3(1, args);
- }
- return rb_proc_call(proc, args);
-}
-
-struct enumerator {
- VALUE method;
- VALUE proc;
- VALUE args;
- VALUE (*iter)(VALUE, struct enumerator *);
-};
-
-static void
-enumerator_mark(void *p)
-{
- struct enumerator *ptr = p;
- rb_gc_mark(ptr->method);
- rb_gc_mark(ptr->proc);
- rb_gc_mark(ptr->args);
-}
-
-static struct enumerator *
-enumerator_ptr(VALUE obj)
-{
- struct enumerator *ptr;
-
- Data_Get_Struct(obj, struct enumerator, ptr);
- if (RDATA(obj)->dmark != enumerator_mark) {
- rb_raise(rb_eTypeError,
- "wrong argument type %s (expected Enumerable::Enumerator)",
- rb_obj_classname(obj));
- }
- if (!ptr) {
- rb_raise(rb_eArgError, "uninitialized enumerator");
- }
- return ptr;
-}
-
-static VALUE
-enumerator_iter_i(VALUE i, struct enumerator *e)
-{
- return rb_yield(proc_call(e->proc, i));
-}
-
-/*
- * call-seq:
- * obj.to_enum(method = :each, *args)
- * obj.enum_for(method = :each, *args)
- *
- * Returns Enumerable::Enumerator.new(self, method, *args).
- *
- * e.g.:
- * str = "xyz"
- *
- * enum = str.enum_for(:each_byte)
- * a = enum.map {|b| '%02x' % b } #=> ["78", "79", "7a"]
- *
- * # protects an array from being modified
- * a = [1, 2, 3]
- * some_method(a.to_enum)
- *
- */
-static VALUE
-obj_to_enum(int argc, VALUE *argv, VALUE obj)
-{
- VALUE meth = sym_each;
-
- if (argc > 0) {
- --argc;
- meth = *argv++;
- }
- return rb_enumeratorize(obj, meth, argc, argv);
-}
-
-static VALUE
-each_slice_i(VALUE val, VALUE *memo)
-{
- VALUE ary = memo[0];
- VALUE v = Qnil;
- long size = (long)memo[1];
-
- rb_ary_push(ary, val);
-
- if (RARRAY_LEN(ary) == size) {
- v = rb_yield(ary);
- memo[0] = rb_ary_new2(size);
- }
-
- return v;
-}
-
-/*
- * call-seq:
- * e.each_slice(n) {...}
- *
- * Iterates the given block for each slice of <n> elements.
- *
- * e.g.:
- * (1..10).each_slice(3) {|a| p a}
- * # outputs below
- * [1, 2, 3]
- * [4, 5, 6]
- * [7, 8, 9]
- * [10]
- *
- */
-static VALUE
-enum_each_slice(VALUE obj, VALUE n)
-{
- long size = NUM2LONG(n);
- VALUE args[2], ary;
-
- if (size <= 0) rb_raise(rb_eArgError, "invalid slice size");
- RETURN_ENUMERATOR(obj, 1, &n);
- args[0] = rb_ary_new2(size);
- args[1] = (VALUE)size;
-
- rb_block_call(obj, rb_intern("each"), 0, 0, each_slice_i, (VALUE)args);
-
- ary = args[0];
- if (RARRAY_LEN(ary) > 0) rb_yield(ary);
-
- return Qnil;
-}
-
-static VALUE
-each_cons_i(VALUE val, VALUE *memo)
-{
- VALUE ary = memo[0];
- VALUE v = Qnil;
- long size = (long)memo[1];
-
- if (RARRAY_LEN(ary) == size) {
- rb_ary_shift(ary);
- }
- rb_ary_push(ary, val);
- if (RARRAY_LEN(ary) == size) {
- v = rb_yield(rb_ary_dup(ary));
- }
- return v;
-}
-
-/*
- * call-seq:
- * each_cons(n) {...}
- *
- * Iterates the given block for each array of consecutive <n>
- * elements.
- *
- * e.g.:
- * (1..10).each_cons(3) {|a| p a}
- * # outputs below
- * [1, 2, 3]
- * [2, 3, 4]
- * [3, 4, 5]
- * [4, 5, 6]
- * [5, 6, 7]
- * [6, 7, 8]
- * [7, 8, 9]
- * [8, 9, 10]
- *
- */
-static VALUE
-enum_each_cons(VALUE obj, VALUE n)
-{
- long size = NUM2LONG(n);
- VALUE args[2];
-
- if (size <= 0) rb_raise(rb_eArgError, "invalid size");
- RETURN_ENUMERATOR(obj, 1, &n);
- args[0] = rb_ary_new2(size);
- args[1] = (VALUE)size;
-
- rb_block_call(obj, rb_intern("each"), 0, 0, each_cons_i, (VALUE)args);
-
- return Qnil;
-}
-
-static VALUE
-enumerator_allocate(VALUE klass)
-{
- struct enumerator *ptr;
- return Data_Make_Struct(klass, struct enumerator,
- enumerator_mark, -1, ptr);
-}
-
-static VALUE
-enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv)
-{
- struct enumerator *ptr = enumerator_ptr(enum_obj);
-
- ptr->method = rb_obj_method(obj, meth);
- if (rb_block_given_p()) {
- ptr->proc = rb_block_proc();
- ptr->iter = enumerator_iter_i;
- }
- else {
- ptr->iter = (VALUE (*)(VALUE, struct enumerator *))rb_yield;
- }
- if (argc) ptr->args = rb_ary_new4(argc, argv);
-
- return enum_obj;
-}
-
-/*
- * call-seq:
- * Enumerable::Enumerator.new(obj, method = :each, *args)
- *
- * Creates a new Enumerable::Enumerator object, which is to be
- * used as an Enumerable object using the given object's given
- * method with the given arguments.
- *
- * e.g.:
- * str = "xyz"
- *
- * enum = Enumerable::Enumerator.new(str, :each_byte)
- * a = enum.map {|b| '%02x' % b } #=> ["78", "79", "7a"]
- *
- */
-static VALUE
-enumerator_initialize(int argc, VALUE *argv, VALUE obj)
-{
- VALUE recv, meth = sym_each;
-
- if (argc == 0)
- rb_raise(rb_eArgError, "wrong number of argument (0 for 1)");
- recv = *argv++;
- if (--argc) {
- meth = *argv++;
- --argc;
- }
- return enumerator_init(obj, recv, meth, argc, argv);
-}
-
-VALUE
-rb_enumeratorize(VALUE obj, VALUE meth, int argc, VALUE *argv)
-{
- return enumerator_init(enumerator_allocate(rb_cEnumerator), obj, meth, argc, argv);
-}
-
-/*
- * call-seq:
- * enum.each {...}
- *
- * Iterates the given block using the object and the method specified
- * in the first place.
- *
- */
-static VALUE
-enumerator_each(VALUE obj)
-{
- struct enumerator *e;
- int argc = 0;
- VALUE *argv = 0;
-
- if (!rb_block_given_p()) return obj;
- e = enumerator_ptr(obj);
- if (e->args) {
- argc = RARRAY_LEN(e->args);
- argv = RARRAY_PTR(e->args);
- }
- return rb_block_call(e->method, rb_intern("call"), argc, argv, e->iter, (VALUE)e);
-}
-
-static VALUE
-enumerator_with_index_i(VALUE val, VALUE *memo)
-{
- val = rb_yield_values(2, val, INT2FIX(*memo));
- ++*memo;
- return val;
-}
-
-/*
- * call-seq:
- * e.with_index {|(*args), idx| ... }
- *
- * Iterates the given block for each elements with an index, which
- * start from 0.
- *
- */
-static VALUE
-enumerator_with_index(VALUE obj)
-{
- struct enumerator *e = enumerator_ptr(obj);
- VALUE memo = 0;
- int argc = 0;
- VALUE *argv = 0;
-
-/* RETURN_ENUMERATOR(obj, 0, 0); ?? */
- if (e->args) {
- argc = RARRAY_LEN(e->args);
- argv = RARRAY_PTR(e->args);
- }
- return rb_block_call(e->method, rb_intern("call"), argc, argv,
- enumerator_with_index_i, (VALUE)&memo);
-}
-
-/*
- * call-seq:
- * e.to_splat => array
- *
- * Convert this enumerator object to an array to splat.
- */
-
-static VALUE
-enumerator_to_splat(VALUE range)
-{
- return rb_convert_type(range, T_ARRAY, "Array", "to_a");
-}
-
-void
-Init_Enumerator(void)
-{
- rb_define_method(rb_mKernel, "to_enum", obj_to_enum, -1);
- rb_define_method(rb_mKernel, "enum_for", obj_to_enum, -1);
-
- rb_define_method(rb_mEnumerable, "each_slice", enum_each_slice, 1);
- rb_define_method(rb_mEnumerable, "each_cons", enum_each_cons, 1);
-
- rb_cEnumerator = rb_define_class_under(rb_mEnumerable, "Enumerator", rb_cObject);
- rb_include_module(rb_cEnumerator, rb_mEnumerable);
-
- rb_define_alloc_func(rb_cEnumerator, enumerator_allocate);
- rb_define_method(rb_cEnumerator, "initialize", enumerator_initialize, -1);
- rb_define_method(rb_cEnumerator, "each", enumerator_each, 0);
- rb_define_method(rb_cEnumerator, "with_index", enumerator_with_index, 0);
- rb_define_method(rb_cEnumerator, "to_splat", enumerator_to_splat, 0);
-
- sym_each = ID2SYM(rb_intern("each"));
- sym_each_with_index = ID2SYM(rb_intern("each_with_index"));
- sym_each_slice = ID2SYM(rb_intern("each_slice"));
- sym_each_cons = ID2SYM(rb_intern("each_cons"));
-
- rb_provide("enumerator.so"); /* for backward compatibility */
-}
diff --git a/env.h b/env.h
index c6b079d301..196090f387 100644
--- a/env.h
+++ b/env.h
@@ -2,8 +2,8 @@
env.h -
- $Author$
- $Date$
+ $Author: matz $
+ $Date: 2006/02/13 09:10:55 $
created at: Mon Jul 11 11:53:03 JST 1994
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -13,26 +13,26 @@
#ifndef ENV_H
#define ENV_H
-RUBY_EXTERN struct FRAME {
+extern struct FRAME {
VALUE self;
int argc;
- ID callee;
- ID this_func;
- VALUE this_class;
+ ID last_func;
+ ID orig_func;
+ VALUE last_class;
struct FRAME *prev;
struct FRAME *tmp;
struct RNode *node;
- struct BLOCK *block;
+ int iter;
int flags;
unsigned long uniq;
} *ruby_frame;
-void rb_gc_mark_frame(struct FRAME *);
+void rb_gc_mark_frame _((struct FRAME *));
#define FRAME_DMETH 1
#define FRAME_FUNC 2
-RUBY_EXTERN struct SCOPE {
+extern struct SCOPE {
struct RBasic super;
ID *local_tbl;
VALUE *local_vars;
@@ -43,10 +43,11 @@ RUBY_EXTERN struct SCOPE {
#define SCOPE_MALLOC 1
#define SCOPE_NOSTACK 2
#define SCOPE_DONT_RECYCLE 4
+#define SCOPE_CLONE 8
-RUBY_EXTERN int ruby_in_eval;
-VALUE ruby_current_class_object(void);
-#define ruby_class ruby_current_class_object()
+extern int ruby_in_eval;
+
+extern VALUE ruby_class;
struct RVarmap {
struct RBasic super;
@@ -54,37 +55,6 @@ struct RVarmap {
VALUE val;
struct RVarmap *next;
};
-RUBY_EXTERN struct RVarmap *ruby_dyna_vars;
-
-struct METHOD {
- VALUE klass, rklass;
- VALUE recv;
- ID id, oid;
- int safe_level;
- struct RNode *body;
-};
-
-struct BLOCK {
- struct RNode *var;
- struct RNode *body;
- VALUE self;
- struct FRAME frame;
- struct SCOPE *scope;
- VALUE klass;
- struct RNode *cref;
- int vmode;
- int flags;
- int uniq;
- struct RVarmap *dyna_vars;
- VALUE orig_thread;
- VALUE wrapper;
- VALUE block_obj;
-};
-
-#define BLOCK_D_SCOPE 1
-#define BLOCK_LAMBDA 2
-#define BLOCK_FROM_METHOD 4
-
-RUBY_EXTERN VALUE ruby_wrapper;
+extern struct RVarmap *ruby_dyna_vars;
#endif /* ENV_H */
diff --git a/error.c b/error.c
index 87ac7a7132..93093e0e0f 100644
--- a/error.c
+++ b/error.c
@@ -2,8 +2,8 @@
error.c -
- $Author$
- $Date$
+ $Author: matz $
+ $Date: 2006/07/20 07:04:13 $
created at: Mon Aug 9 16:11:34 JST 1993
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -15,7 +15,13 @@
#include "st.h"
#include <stdio.h>
+#ifdef HAVE_STDARG_PROTOTYPES
#include <stdarg.h>
+#define va_init_list(a,b) va_start(a,b)
+#else
+#include <varargs.h>
+#define va_init_list(a,b) va_start(a)
+#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
@@ -28,7 +34,9 @@ extern const char ruby_version[], ruby_release_date[], ruby_platform[];
int ruby_nerrs;
static int
-err_position(char *buf, long len)
+err_position(buf, len)
+ char *buf;
+ long len;
{
ruby_set_current_source();
if (!ruby_sourcefile) {
@@ -43,7 +51,11 @@ err_position(char *buf, long len)
}
static void
-err_snprintf(char *buf, long len, const char *fmt, va_list args)
+err_snprintf(buf, len, fmt, args)
+ char *buf;
+ long len;
+ const char *fmt;
+ va_list args;
{
long n;
@@ -53,9 +65,11 @@ err_snprintf(char *buf, long len, const char *fmt, va_list args)
}
}
-static void err_append(const char*);
+static void err_append _((const char*));
static void
-err_print(const char *fmt, va_list args)
+err_print(fmt, args)
+ const char *fmt;
+ va_list args;
{
char buf[BUFSIZ];
@@ -64,30 +78,44 @@ err_print(const char *fmt, va_list args)
}
void
+#ifdef HAVE_STDARG_PROTOTYPES
rb_compile_error(const char *fmt, ...)
+#else
+rb_compile_error(fmt, va_alist)
+ const char *fmt;
+ va_dcl
+#endif
{
va_list args;
- va_start(args, fmt);
+ va_init_list(args, fmt);
err_print(fmt, args);
va_end(args);
ruby_nerrs++;
}
void
+#ifdef HAVE_STDARG_PROTOTYPES
rb_compile_error_append(const char *fmt, ...)
+#else
+rb_compile_error_append(fmt, va_alist)
+ const char *fmt;
+ va_dcl
+#endif
{
va_list args;
char buf[BUFSIZ];
- va_start(args, fmt);
+ va_init_list(args, fmt);
vsnprintf(buf, BUFSIZ, fmt, args);
va_end(args);
err_append(buf);
}
static void
-warn_print(const char *fmt, va_list args)
+warn_print(fmt, args)
+ const char *fmt;
+ va_list args;
{
char buf[BUFSIZ];
int len;
@@ -99,7 +127,13 @@ warn_print(const char *fmt, va_list args)
}
void
+#ifdef HAVE_STDARG_PROTOTYPES
rb_warn(const char *fmt, ...)
+#else
+rb_warn(fmt, va_alist)
+ const char *fmt;
+ va_dcl
+#endif
{
char buf[BUFSIZ];
va_list args;
@@ -108,14 +142,20 @@ rb_warn(const char *fmt, ...)
snprintf(buf, BUFSIZ, "warning: %s", fmt);
- va_start(args, fmt);
+ va_init_list(args, fmt);
warn_print(buf, args);
va_end(args);
}
/* rb_warning() reports only in verbose mode */
void
+#ifdef HAVE_STDARG_PROTOTYPES
rb_warning(const char *fmt, ...)
+#else
+rb_warning(fmt, va_alist)
+ const char *fmt;
+ va_dcl
+#endif
{
char buf[BUFSIZ];
va_list args;
@@ -124,7 +164,7 @@ rb_warning(const char *fmt, ...)
snprintf(buf, BUFSIZ, "warning: %s", fmt);
- va_start(args, fmt);
+ va_init_list(args, fmt);
warn_print(buf, args);
va_end(args);
}
@@ -138,7 +178,8 @@ rb_warning(const char *fmt, ...)
*/
static VALUE
-rb_warn_m(VALUE self, VALUE mesg)
+rb_warn_m(self, mesg)
+ VALUE self, mesg;
{
if (!NIL_P(ruby_verbose)) {
rb_io_write(rb_stderr, mesg);
@@ -148,7 +189,13 @@ rb_warn_m(VALUE self, VALUE mesg)
}
void
+#ifdef HAVE_STDARG_PROTOTYPES
rb_bug(const char *fmt, ...)
+#else
+rb_bug(fmt, va_alist)
+ const char *fmt;
+ va_dcl
+#endif
{
char buf[BUFSIZ];
va_list args;
@@ -158,7 +205,7 @@ rb_bug(const char *fmt, ...)
if (fwrite(buf, 1, len, out) == len ||
fwrite(buf, 1, len, (out = stdout)) == len) {
fputs("[BUG] ", out);
- va_start(args, fmt);
+ va_init_list(args, fmt);
vfprintf(out, fmt, args);
va_end(args);
fprintf(out, "\nruby %s (%s) [%s]\n\n",
@@ -198,7 +245,9 @@ static struct types {
};
void
-rb_check_type(VALUE x, int t)
+rb_check_type(x, t)
+ VALUE x;
+ int t;
{
struct types *type = builtin_types;
@@ -209,7 +258,7 @@ rb_check_type(VALUE x, int t)
if (TYPE(x) != t) {
while (type->type >= 0) {
if (type->type == t) {
- const char *etype;
+ char *etype;
if (NIL_P(x)) {
etype = "nil";
@@ -221,7 +270,7 @@ rb_check_type(VALUE x, int t)
etype = "Symbol";
}
else if (rb_special_const_p(x)) {
- etype = RSTRING_PTR(rb_obj_as_string(x));
+ etype = RSTRING(rb_obj_as_string(x))->ptr;
}
else {
etype = rb_obj_classname(x);
@@ -231,7 +280,7 @@ rb_check_type(VALUE x, int t)
}
type++;
}
- rb_bug("unknown type 0x%x (0x%x given)", t, TYPE(x));
+ rb_bug("unknown type 0x%x", t);
}
}
@@ -248,7 +297,6 @@ VALUE rb_eRuntimeError;
VALUE rb_eTypeError;
VALUE rb_eArgError;
VALUE rb_eIndexError;
-VALUE rb_eKeyError;
VALUE rb_eRangeError;
VALUE rb_eNameError;
VALUE rb_eNoMethodError;
@@ -263,25 +311,30 @@ VALUE rb_eLoadError;
VALUE rb_eSystemCallError;
VALUE rb_mErrno;
-static VALUE eNOERROR;
VALUE
-rb_exc_new(VALUE etype, const char *ptr, long len)
+rb_exc_new(etype, ptr, len)
+ VALUE etype;
+ const char *ptr;
+ long len;
{
return rb_funcall(etype, rb_intern("new"), 1, rb_str_new(ptr, len));
}
VALUE
-rb_exc_new2(VALUE etype, const char *s)
+rb_exc_new2(etype, s)
+ VALUE etype;
+ const char *s;
{
return rb_exc_new(etype, s, strlen(s));
}
VALUE
-rb_exc_new3(VALUE etype, VALUE str)
+rb_exc_new3(etype, str)
+ VALUE etype, str;
{
StringValue(str);
- return rb_funcall(etype, rb_intern("new"), 1, str);
+ return rb_exc_new(etype, RSTRING(str)->ptr, RSTRING(str)->len);
}
/*
@@ -293,7 +346,10 @@ rb_exc_new3(VALUE etype, VALUE str)
*/
static VALUE
-exc_initialize(int argc, VALUE *argv, VALUE exc)
+exc_initialize(argc, argv, exc)
+ int argc;
+ VALUE *argv;
+ VALUE exc;
{
VALUE arg;
@@ -318,7 +374,10 @@ exc_initialize(int argc, VALUE *argv, VALUE exc)
*/
static VALUE
-exc_exception(int argc, VALUE *argv, VALUE self)
+exc_exception(argc, argv, self)
+ int argc;
+ VALUE *argv;
+ VALUE self;
{
VALUE exc;
@@ -339,7 +398,8 @@ exc_exception(int argc, VALUE *argv, VALUE self)
*/
static VALUE
-exc_to_s(VALUE exc)
+exc_to_s(exc)
+ VALUE exc;
{
VALUE mesg = rb_attr_get(exc, rb_intern("mesg"));
@@ -351,6 +411,7 @@ exc_to_s(VALUE exc)
/*
* call-seq:
* exception.message => string
+ * exception.to_str => string
*
* Returns the result of invoking <code>exception.to_s</code>.
* Normally this returns the exception's message or name. By
@@ -359,7 +420,8 @@ exc_to_s(VALUE exc)
*/
static VALUE
-exc_message(VALUE exc)
+exc_to_str(exc)
+ VALUE exc;
{
return rb_funcall(exc, rb_intern("to_s"), 0, 0);
}
@@ -372,13 +434,14 @@ exc_message(VALUE exc)
*/
static VALUE
-exc_inspect(VALUE exc)
+exc_inspect(exc)
+ VALUE exc;
{
VALUE str, klass;
klass = CLASS_OF(exc);
exc = rb_obj_as_string(exc);
- if (RSTRING_LEN(exc) == 0) {
+ if (RSTRING(exc)->len == 0) {
return rb_str_dup(rb_class_name(klass));
}
@@ -422,7 +485,8 @@ exc_inspect(VALUE exc)
*/
static VALUE
-exc_backtrace(VALUE exc)
+exc_backtrace(exc)
+ VALUE exc;
{
ID bt = rb_intern("bt");
@@ -431,10 +495,11 @@ exc_backtrace(VALUE exc)
}
static VALUE
-check_backtrace(VALUE bt)
+check_backtrace(bt)
+ VALUE bt;
{
long i;
- static const char *err = "backtrace must be Array of String";
+ static char *err = "backtrace must be Array of String";
if (!NIL_P(bt)) {
int t = TYPE(bt);
@@ -443,8 +508,8 @@ check_backtrace(VALUE bt)
if (t != T_ARRAY) {
rb_raise(rb_eTypeError, err);
}
- for (i=0;i<RARRAY_LEN(bt);i++) {
- if (TYPE(RARRAY_PTR(bt)[i]) != T_STRING) {
+ for (i=0;i<RARRAY(bt)->len;i++) {
+ if (TYPE(RARRAY(bt)->ptr[i]) != T_STRING) {
rb_raise(rb_eTypeError, err);
}
}
@@ -463,36 +528,14 @@ check_backtrace(VALUE bt)
*/
static VALUE
-exc_set_backtrace(VALUE exc, VALUE bt)
+exc_set_backtrace(exc, bt)
+ VALUE exc;
+ VALUE bt;
{
return rb_iv_set(exc, "bt", check_backtrace(bt));
}
/*
- * call-seq:
- * exc == obj => true or false
- *
- * Equality---If <i>obj</i> is not an <code>Exception</code>, returns
- * <code>false</code>. Otherwise, returns <code>true</code> if <i>exc</i> and
- * <i>obj</i> share same class, messages, and backtrace.
- */
-
-static VALUE
-exc_equal(VALUE exc, VALUE obj)
-{
- ID id_mesg = rb_intern("mesg");
-
- if (exc == obj) return Qtrue;
- if (rb_obj_class(exc) != rb_obj_class(obj))
- return Qfalse;
- if (!rb_equal(rb_attr_get(exc, id_mesg), rb_attr_get(obj, id_mesg)))
- return Qfalse;
- if (!rb_equal(exc_backtrace(exc), exc_backtrace(obj)))
- return Qfalse;
- return Qtrue;
-}
-
-/*
* call-seq:
* SystemExit.new(status=0) => system_exit
*
@@ -500,7 +543,10 @@ exc_equal(VALUE exc, VALUE obj)
*/
static VALUE
-exit_initialize(int argc, VALUE *argv, VALUE exc)
+exit_initialize(argc, argv, exc)
+ int argc;
+ VALUE *argv;
+ VALUE exc;
{
VALUE status = INT2FIX(EXIT_SUCCESS);
if (argc > 0 && FIXNUM_P(argv[0])) {
@@ -521,7 +567,8 @@ exit_initialize(int argc, VALUE *argv, VALUE exc)
*/
static VALUE
-exit_status(VALUE exc)
+exit_status(exc)
+ VALUE exc;
{
return rb_attr_get(exc, rb_intern("status"));
}
@@ -535,7 +582,8 @@ exit_status(VALUE exc)
*/
static VALUE
-exit_success_p(VALUE exc)
+exit_success_p(exc)
+ VALUE exc;
{
VALUE status = rb_attr_get(exc, rb_intern("status"));
if (NIL_P(status)) return Qtrue;
@@ -544,13 +592,20 @@ exit_success_p(VALUE exc)
}
void
+#ifdef HAVE_STDARG_PROTOTYPES
rb_name_error(ID id, const char *fmt, ...)
+#else
+rb_name_error(id, fmt, va_alist)
+ ID id;
+ const char *fmt;
+ va_dcl
+#endif
{
VALUE exc, argv[2];
va_list args;
char buf[BUFSIZ];
- va_start(args, fmt);
+ va_init_list(args, fmt);
vsnprintf(buf, BUFSIZ, fmt, args);
va_end(args);
@@ -570,7 +625,10 @@ rb_name_error(ID id, const char *fmt, ...)
*/
static VALUE
-name_err_initialize(int argc, VALUE *argv, VALUE self)
+name_err_initialize(argc, argv, self)
+ int argc;
+ VALUE *argv;
+ VALUE self;
{
VALUE name;
@@ -588,7 +646,8 @@ name_err_initialize(int argc, VALUE *argv, VALUE self)
*/
static VALUE
-name_err_name(VALUE self)
+name_err_name(self)
+ VALUE self;
{
return rb_attr_get(self, rb_intern("name"));
}
@@ -601,10 +660,10 @@ name_err_name(VALUE self)
*/
static VALUE
-name_err_to_s(VALUE exc)
+name_err_to_s(exc)
+ VALUE exc;
{
- VALUE mesg = rb_attr_get(exc, rb_intern("mesg"));
- VALUE str = mesg;
+ VALUE mesg = rb_attr_get(exc, rb_intern("mesg")), str = mesg;
if (NIL_P(mesg)) return rb_class_name(CLASS_OF(exc));
StringValue(str);
@@ -626,7 +685,10 @@ name_err_to_s(VALUE exc)
*/
static VALUE
-nometh_err_initialize(int argc, VALUE *argv, VALUE self)
+nometh_err_initialize(argc, argv, self)
+ int argc;
+ VALUE *argv;
+ VALUE self;
{
VALUE args = (argc > 2) ? argv[--argc] : Qnil;
name_err_initialize(argc, argv, self);
@@ -636,14 +698,16 @@ nometh_err_initialize(int argc, VALUE *argv, VALUE self)
/* :nodoc: */
static void
-name_err_mesg_mark(VALUE *ptr)
+name_err_mesg_mark(ptr)
+ VALUE *ptr;
{
rb_gc_mark_locations(ptr, ptr+3);
}
/* :nodoc: */
static VALUE
-name_err_mesg_new(VALUE obj, VALUE mesg, VALUE recv, VALUE method)
+name_err_mesg_new(obj, mesg, recv, method)
+ VALUE obj, mesg, recv, method;
{
VALUE *ptr = ALLOC_N(VALUE, 3);
@@ -655,27 +719,8 @@ name_err_mesg_new(VALUE obj, VALUE mesg, VALUE recv, VALUE method)
/* :nodoc: */
static VALUE
-name_err_mesg_equal(VALUE obj1, VALUE obj2)
-{
- VALUE *ptr1, *ptr2;
- int i;
-
- if (obj1 == obj2) return Qtrue;
- if (rb_obj_class(obj2) != rb_cNameErrorMesg)
- return Qfalse;
-
- Data_Get_Struct(obj1, VALUE, ptr1);
- Data_Get_Struct(obj2, VALUE, ptr2);
- for (i=0; i<3; i++) {
- if (!rb_equal(ptr1[i], ptr2[i]))
- return Qfalse;
- }
- return Qtrue;
-}
-
-/* :nodoc: */
-static VALUE
-name_err_mesg_to_str(VALUE obj)
+name_err_mesg_to_str(obj)
+ VALUE obj;
{
VALUE *ptr, mesg;
Data_Get_Struct(obj, VALUE, ptr);
@@ -683,7 +728,7 @@ name_err_mesg_to_str(VALUE obj)
mesg = ptr[0];
if (NIL_P(mesg)) return Qnil;
else {
- const char *desc = 0;
+ char *desc = 0;
VALUE d = 0, args[3];
obj = ptr[1];
@@ -699,10 +744,10 @@ name_err_mesg_to_str(VALUE obj)
break;
default:
d = rb_protect(rb_inspect, obj, 0);
- if (NIL_P(d) || RSTRING_LEN(d) > 65) {
+ if (NIL_P(d) || RSTRING(d)->len > 65) {
d = rb_any_to_s(obj);
}
- desc = RSTRING_PTR(d);
+ desc = RSTRING(d)->ptr;
break;
}
if (desc && desc[0] != '#') {
@@ -721,7 +766,8 @@ name_err_mesg_to_str(VALUE obj)
/* :nodoc: */
static VALUE
-name_err_mesg_load(VALUE klass, VALUE str)
+name_err_mesg_load(klass, str)
+ VALUE klass, str;
{
return str;
}
@@ -735,17 +781,19 @@ name_err_mesg_load(VALUE klass, VALUE str)
*/
static VALUE
-nometh_err_args(VALUE self)
+nometh_err_args(self)
+ VALUE self;
{
return rb_attr_get(self, rb_intern("args"));
}
void
-rb_invalid_str(const char *str, const char *type)
+rb_invalid_str(str, type)
+ const char *str, *type;
{
VALUE s = rb_str_inspect(rb_str_new2(str));
- rb_raise(rb_eArgError, "invalid value for %s: %s", type, RSTRING_PTR(s));
+ rb_raise(rb_eArgError, "invalid value for %s: %s", type, RSTRING(s)->ptr);
}
/*
@@ -782,7 +830,9 @@ rb_invalid_str(const char *str, const char *type)
static st_table *syserr_tbl;
static VALUE
-set_syserr(int n, const char *name)
+set_syserr(n, name)
+ int n;
+ const char *name;
{
VALUE error;
@@ -798,7 +848,8 @@ set_syserr(int n, const char *name)
}
static VALUE
-get_syserr(int n)
+get_syserr(n)
+ int n;
{
VALUE error;
@@ -823,12 +874,15 @@ get_syserr(int n)
*/
static VALUE
-syserr_initialize(int argc, VALUE *argv, VALUE self)
+syserr_initialize(argc, argv, self)
+ int argc;
+ VALUE *argv;
+ VALUE self;
{
#if !defined(_WIN32) && !defined(__VMS)
char *strerror();
#endif
- const char *err;
+ char *err;
VALUE mesg, error;
VALUE klass = rb_obj_class(self);
@@ -853,10 +907,14 @@ syserr_initialize(int argc, VALUE *argv, VALUE self)
else err = "unknown error";
if (!NIL_P(mesg)) {
VALUE str = mesg;
+ size_t len;
StringValue(str);
- mesg = rb_sprintf("%s - %.*s", err,
- (int)RSTRING_LEN(str), RSTRING_PTR(str));
+ len = strlen(err)+RSTRING(str)->len+3;
+ mesg = rb_str_new(0, len);
+ snprintf(RSTRING(mesg)->ptr, len+1, "%s - %.*s", err,
+ (int)RSTRING(str)->len, RSTRING(str)->ptr);
+ rb_str_resize(mesg, strlen(RSTRING(mesg)->ptr));
}
else {
mesg = rb_str_new2(err);
@@ -874,7 +932,8 @@ syserr_initialize(int argc, VALUE *argv, VALUE self)
*/
static VALUE
-syserr_errno(VALUE self)
+syserr_errno(self)
+ VALUE self;
{
return rb_attr_get(self, rb_intern("errno"));
}
@@ -887,8 +946,10 @@ syserr_errno(VALUE self)
* if the error numbers _self_ and _other_ are the same.
*/
+
static VALUE
-syserr_eqq(VALUE self, VALUE exc)
+syserr_eqq(self, exc)
+ VALUE self, exc;
{
VALUE num, e;
@@ -911,18 +972,6 @@ syserr_eqq(VALUE self, VALUE exc)
}
/*
- * call-seq:
- * Errno.const_missing => SystemCallError
- *
- * Returns default SystemCallError class.
- */
-static VALUE
-errno_missing(VALUE self, VALUE id)
-{
- return eNOERROR;
-}
-
-/*
* Descendents of class <code>Exception</code> are used to communicate
* between <code>raise</code> methods and <code>rescue</code>
* statements in <code>begin/end</code> blocks. <code>Exception</code>
@@ -933,15 +982,15 @@ errno_missing(VALUE self, VALUE id)
*/
void
-Init_Exception(void)
+Init_Exception()
{
rb_eException = rb_define_class("Exception", rb_cObject);
rb_define_singleton_method(rb_eException, "exception", rb_class_new_instance, -1);
rb_define_method(rb_eException, "exception", exc_exception, -1);
rb_define_method(rb_eException, "initialize", exc_initialize, -1);
- rb_define_method(rb_eException, "==", exc_equal, 1);
rb_define_method(rb_eException, "to_s", exc_to_s, 0);
- rb_define_method(rb_eException, "message", exc_message, 0);
+ rb_define_method(rb_eException, "to_str", exc_to_str, 0);
+ rb_define_method(rb_eException, "message", exc_to_str, 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);
@@ -959,21 +1008,13 @@ Init_Exception(void)
rb_eTypeError = rb_define_class("TypeError", rb_eStandardError);
rb_eArgError = rb_define_class("ArgumentError", rb_eStandardError);
rb_eIndexError = rb_define_class("IndexError", rb_eStandardError);
- rb_eKeyError = rb_define_class("KeyError", rb_eIndexError);
rb_eRangeError = rb_define_class("RangeError", rb_eStandardError);
-
- rb_eScriptError = rb_define_class("ScriptError", rb_eException);
- rb_eSyntaxError = rb_define_class("SyntaxError", rb_eScriptError);
- rb_eLoadError = rb_define_class("LoadError", rb_eScriptError);
- rb_eNotImpError = rb_define_class("NotImplementedError", rb_eScriptError);
-
- rb_eNameError = rb_define_class("NameError", rb_eScriptError);
+ rb_eNameError = rb_define_class("NameError", rb_eStandardError);
rb_define_method(rb_eNameError, "initialize", name_err_initialize, -1);
rb_define_method(rb_eNameError, "name", name_err_name, 0);
rb_define_method(rb_eNameError, "to_s", name_err_to_s, 0);
rb_cNameErrorMesg = rb_define_class_under(rb_eNameError, "message", rb_cData);
rb_define_singleton_method(rb_cNameErrorMesg, "!", name_err_mesg_new, 3);
- rb_define_method(rb_cNameErrorMesg, "==", name_err_mesg_equal, 1);
rb_define_method(rb_cNameErrorMesg, "to_str", name_err_mesg_to_str, 0);
rb_define_method(rb_cNameErrorMesg, "_dump", name_err_mesg_to_str, 1);
rb_define_singleton_method(rb_cNameErrorMesg, "_load", name_err_mesg_load, 1);
@@ -981,6 +1022,11 @@ Init_Exception(void)
rb_define_method(rb_eNoMethodError, "initialize", nometh_err_initialize, -1);
rb_define_method(rb_eNoMethodError, "args", nometh_err_args, 0);
+ rb_eScriptError = rb_define_class("ScriptError", rb_eException);
+ rb_eSyntaxError = rb_define_class("SyntaxError", rb_eScriptError);
+ rb_eLoadError = rb_define_class("LoadError", rb_eScriptError);
+ rb_eNotImpError = rb_define_class("NotImplementedError", rb_eScriptError);
+
rb_eRuntimeError = rb_define_class("RuntimeError", rb_eStandardError);
rb_eSecurityError = rb_define_class("SecurityError", rb_eStandardError);
rb_eNoMemError = rb_define_class("NoMemoryError", rb_eException);
@@ -992,50 +1038,68 @@ Init_Exception(void)
rb_define_singleton_method(rb_eSystemCallError, "===", syserr_eqq, 1);
rb_mErrno = rb_define_module("Errno");
- rb_define_singleton_method(rb_mErrno, "const_missing", errno_missing, 1);
rb_define_global_function("warn", rb_warn_m, 1);
}
void
+#ifdef HAVE_STDARG_PROTOTYPES
rb_raise(VALUE exc, const char *fmt, ...)
+#else
+rb_raise(exc, fmt, va_alist)
+ VALUE exc;
+ const char *fmt;
+ va_dcl
+#endif
{
va_list args;
char buf[BUFSIZ];
- va_start(args,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
rb_loaderror(const char *fmt, ...)
+#else
+rb_loaderror(fmt, va_alist)
+ const char *fmt;
+ va_dcl
+#endif
{
va_list args;
char buf[BUFSIZ];
- va_start(args, 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(void)
+rb_notimplement()
{
rb_raise(rb_eNotImpError,
- "The %s() function is unimplemented on this machine",
- rb_id2name(ruby_frame->callee));
+ "%s() function is unimplemented on this machine",
+ rb_id2name(ruby_frame->last_func));
}
void
+#ifdef HAVE_STDARG_PROTOTYPES
rb_fatal(const char *fmt, ...)
+#else
+rb_fatal(fmt, va_alist)
+ const char *fmt;
+ va_dcl
+#endif
{
va_list args;
char buf[BUFSIZ];
- va_start(args, fmt);
+ va_init_list(args, fmt);
vsnprintf(buf, BUFSIZ, fmt, args);
va_end(args);
@@ -1044,7 +1108,8 @@ rb_fatal(const char *fmt, ...)
}
void
-rb_sys_fail(const char *mesg)
+rb_sys_fail(mesg)
+ const char *mesg;
{
int n = errno;
VALUE arg;
@@ -1059,7 +1124,13 @@ rb_sys_fail(const char *mesg)
}
void
+#ifdef HAVE_STDARG_PROTOTYPES
rb_sys_warning(const char *fmt, ...)
+#else
+rb_sys_warning(fmt, va_alist)
+ const char *fmt;
+ va_dcl
+#endif
{
char buf[BUFSIZ];
va_list args;
@@ -1072,32 +1143,35 @@ rb_sys_warning(const char *fmt, ...)
snprintf(buf, BUFSIZ, "warning: %s", fmt);
snprintf(buf+strlen(buf), BUFSIZ-strlen(buf), ": %s", strerror(errno_save));
- va_start(args, fmt);
+ va_init_list(args, fmt);
warn_print(buf, args);
va_end(args);
errno = errno_save;
}
void
-rb_load_fail(const char *path)
+rb_load_fail(path)
+ const char *path;
{
rb_loaderror("%s -- %s", strerror(errno), path);
}
void
-rb_error_frozen(const char *what)
+rb_error_frozen(what)
+ const char *what;
{
- rb_raise(rb_eRuntimeError, "can't modify frozen %s", what);
+ rb_raise(rb_eTypeError, "can't modify frozen %s", what);
}
void
-rb_check_frozen(VALUE obj)
+rb_check_frozen(obj)
+ VALUE obj;
{
if (OBJ_FROZEN(obj)) rb_error_frozen(rb_obj_classname(obj));
}
void
-Init_syserr(void)
+Init_syserr()
{
#ifdef EPERM
set_syserr(EPERM, "EPERM");
@@ -1465,11 +1539,11 @@ Init_syserr(void)
#ifdef EDQUOT
set_syserr(EDQUOT, "EDQUOT");
#endif
- eNOERROR = set_syserr(0, "NOERROR");
}
static void
-err_append(const char *s)
+err_append(s)
+ const char *s;
{
extern VALUE ruby_errinfo;
diff --git a/euc_jp.c b/euc_jp.c
deleted file mode 100644
index 71c81ee9fe..0000000000
--- a/euc_jp.c
+++ /dev/null
@@ -1,228 +0,0 @@
-/**********************************************************************
- euc_jp.c - Oniguruma (regular expression library)
-**********************************************************************/
-/*-
- * Copyright (c) 2002-2005 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "regenc.h"
-
-#define eucjp_islead(c) ((UChar )((c) - 0xa1) > 0xfe - 0xa1)
-
-static const int EncLen_EUCJP[] = {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
-};
-
-static int
-eucjp_mbc_enc_len(const UChar* p)
-{
- return EncLen_EUCJP[*p];
-}
-
-static OnigCodePoint
-eucjp_mbc_to_code(const UChar* p, const UChar* end)
-{
- int c, i, len;
- OnigCodePoint n;
-
- len = enc_len(ONIG_ENCODING_EUC_JP, p);
- n = (OnigCodePoint )*p++;
- if (len == 1) return n;
-
- for (i = 1; i < len; i++) {
- if (p >= end) break;
- c = *p++;
- n <<= 8; n += c;
- }
- return n;
-}
-
-static int
-eucjp_code_to_mbclen(OnigCodePoint code)
-{
- if (ONIGENC_IS_CODE_ASCII(code)) return 1;
- else if ((code & 0xff0000) != 0) return 3;
- else if ((code & 0xff00) != 0) return 2;
- else return 0;
-}
-
-#if 0
-static int
-eucjp_code_to_mbc_first(OnigCodePoint code)
-{
- int first;
-
- if ((code & 0xff0000) != 0) {
- first = (code >> 16) & 0xff;
- }
- else if ((code & 0xff00) != 0) {
- first = (code >> 8) & 0xff;
- }
- else {
- return (int )code;
- }
- return first;
-}
-#endif
-
-static int
-eucjp_code_to_mbc(OnigCodePoint code, UChar *buf)
-{
- UChar *p = buf;
-
- if ((code & 0xff0000) != 0) *p++ = (UChar )(((code >> 16) & 0xff));
- if ((code & 0xff00) != 0) *p++ = (UChar )(((code >> 8) & 0xff));
- *p++ = (UChar )(code & 0xff);
-
-#if 1
- if (enc_len(ONIG_ENCODING_EUC_JP, buf) != (p - buf))
- return ONIGENCERR_INVALID_WIDE_CHAR_VALUE;
-#endif
- return p - buf;
-}
-
-static int
-eucjp_mbc_to_normalize(OnigAmbigType flag,
- const UChar** pp, const UChar* end, UChar* lower)
-{
- int len;
- const UChar* p = *pp;
-
- if (ONIGENC_IS_MBC_ASCII(p)) {
- if ((flag & ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE) != 0) {
- *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p);
- }
- else {
- *lower = *p;
- }
-
- (*pp)++;
- return 1;
- }
- else {
- len = enc_len(ONIG_ENCODING_EUC_JP, p);
- if (lower != p) {
- int i;
- for (i = 0; i < len; i++) {
- *lower++ = *p++;
- }
- }
- (*pp) += len;
- return len; /* return byte length of converted char to lower */
- }
-}
-
-static int
-eucjp_is_mbc_ambiguous(OnigAmbigType flag, const UChar** pp, const UChar* end)
-{
- return onigenc_mbn_is_mbc_ambiguous(ONIG_ENCODING_EUC_JP, flag, pp, end);
-}
-
-static int
-eucjp_is_code_ctype(OnigCodePoint code, unsigned int ctype)
-{
- if (code < 128)
- return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);
- else {
- if ((ctype & (ONIGENC_CTYPE_WORD |
- ONIGENC_CTYPE_GRAPH | ONIGENC_CTYPE_PRINT)) != 0) {
- return (eucjp_code_to_mbclen(code) > 1 ? TRUE : FALSE);
- }
- }
-
- return FALSE;
-}
-
-static UChar*
-eucjp_left_adjust_char_head(const UChar* start, const UChar* s)
-{
- /* In this encoding
- mb-trail bytes doesn't mix with single bytes.
- */
- const UChar *p;
- int len;
-
- if (s <= start) return (UChar* )s;
- p = s;
-
- while (!eucjp_islead(*p) && p > start) p--;
- len = enc_len(ONIG_ENCODING_EUC_JP, p);
- if (p + len > s) return (UChar* )p;
- p += len;
- return (UChar* )(p + ((s - p) & ~1));
-}
-
-static int
-eucjp_is_allowed_reverse_match(const UChar* s, const UChar* end)
-{
- const UChar c = *s;
- if (c <= 0x7e || c == 0x8e || c == 0x8f)
- return TRUE;
- else
- return FALSE;
-}
-
-OnigEncodingType OnigEncodingEUC_JP = {
- eucjp_mbc_enc_len,
- "EUC-JP", /* name */
- 3, /* max enc length */
- 1, /* min enc length */
- ONIGENC_AMBIGUOUS_MATCH_ASCII_CASE,
- {
- (OnigCodePoint )'\\' /* esc */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
- , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
- },
- onigenc_is_mbc_newline_0x0a,
- eucjp_mbc_to_code,
- eucjp_code_to_mbclen,
- eucjp_code_to_mbc,
- eucjp_mbc_to_normalize,
- eucjp_is_mbc_ambiguous,
- onigenc_ascii_get_all_pair_ambig_codes,
- onigenc_nothing_get_all_comp_ambig_codes,
- eucjp_is_code_ctype,
- onigenc_not_support_get_ctype_code_range,
- eucjp_left_adjust_char_head,
- eucjp_is_allowed_reverse_match
-};
diff --git a/eval.c b/eval.c
index b9c0c71b56..520eb987af 100644
--- a/eval.c
+++ b/eval.c
@@ -2,8 +2,8 @@
eval.c -
- $Author$
- $Date$
+ $Author: shyouhei $
+ $Date: 2007/01/27 15:45:49 $
created at: Thu Jun 10 14:22:17 JST 1993
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -29,6 +29,11 @@
#endif
#include <stdio.h>
+#if defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT)
+#include <ucontext.h>
+#define USE_CONTEXT
+#endif
+#include <setjmp.h>
#include "st.h"
#include "dln.h"
@@ -56,7 +61,17 @@ void *alloca ();
# endif /* HAVE_ALLOCA_H */
#endif /* __GNUC__ */
+#ifdef HAVE_STDARG_PROTOTYPES
#include <stdarg.h>
+#define va_init_list(a,b) va_start(a,b)
+#else
+#include <varargs.h>
+#define va_init_list(a,b) va_start(a)
+#endif
+
+#ifndef HAVE_STRING_H
+char *strrchr _((const char*,const char));
+#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@@ -75,10 +90,16 @@ void *alloca ();
#endif
#ifdef USE_CONTEXT
+typedef struct {
+ ucontext_t context;
+ volatile int status;
+} rb_jmpbuf_t[1];
NORETURN(static void rb_jump_context(rb_jmpbuf_t, int));
static inline void
-rb_jump_context(rb_jmpbuf_t env, int val)
+rb_jump_context(env, val)
+ rb_jmpbuf_t env;
+ int val;
{
env->status = val;
setcontext(&env->context);
@@ -106,7 +127,7 @@ rb_jump_context(rb_jmpbuf_t env, int val)
* But it has not the problem because gcc knows setjmp may return twice.
* gcc detects setjmp and generates setjmp safe code.
*
- * So setjmp calls before and after getcontext call makes the code
+ * So setjmp calls before and after the getcontext call makes the code
* somewhat safe.
* It fix the problem on IA64.
* It is not required that setjmp is called at run time, since the problem is
@@ -135,13 +156,13 @@ rb_jump_context(rb_jmpbuf_t env, int val)
({ __asm__ volatile ("" : : : \
"%o0", "%o1", "%o2", "%o3", "%o4", "%o5", "%o7", \
"%l0", "%l1", "%l2", "%l3", "%l4", "%l5", "%l6", \
- "%i0", "%i1", "%i2", "%i3", "%i4", "%i5", "%i7"); }),
+ "%i0", "%i1", "%i2", "%i3", "%i4", "%i5", "%i7"); })
# else
# define PRE_GETCONTEXT \
({ __asm__ volatile ("" : : : \
"%o0", "%o1", "%o2", "%o3", "%o4", "%o5", "%o7", \
"%l0", "%l1", "%l2", "%l3", "%l4", "%l5", "%l6", "%l7", \
- "%i0", "%i1", "%i2", "%i3", "%i4", "%i5", "%i7"); }),
+ "%i0", "%i1", "%i2", "%i3", "%i4", "%i5", "%i7"); })
# endif
# define POST_GETCONTEXT PRE_GETCONTEXT
# elif GCC_VERSION_BEFORE(4,0,3) && defined(__ia64)
@@ -151,11 +172,11 @@ int function_call_may_return_twice_false_2 = 0;
# define PRE_GETCONTEXT \
(function_call_may_return_twice_false_1 ? \
setjmp(function_call_may_return_twice_jmp_buf) : \
- 0),
+ 0)
# define POST_GETCONTEXT \
(function_call_may_return_twice_false_2 ? \
setjmp(function_call_may_return_twice_jmp_buf) : \
- 0),
+ 0)
# elif defined(__FreeBSD__) && __FreeBSD__ < 7
/*
* workaround for FreeBSD/i386 getcontext/setcontext bug.
@@ -165,29 +186,27 @@ int function_call_may_return_twice_false_2 = 0;
*/
static int volatile freebsd_clear_carry_flag = 0;
# define PRE_GETCONTEXT \
- (freebsd_clear_carry_flag ? (freebsd_clear_carry_flag = 0) : 0),
+ (freebsd_clear_carry_flag ? (freebsd_clear_carry_flag = 0) : 0)
# endif
# ifndef PRE_GETCONTEXT
-# define PRE_GETCONTEXT
+# define PRE_GETCONTEXT 0
# endif
# ifndef POST_GETCONTEXT
-# define POST_GETCONTEXT
+# define POST_GETCONTEXT 0
# endif
# define ruby_longjmp(env, val) rb_jump_context(env, val)
-# define ruby_setjmp(just_before_setjmp, j) ((j)->status = 0, \
- (just_before_setjmp), \
- PRE_GETCONTEXT \
+# define ruby_setjmp(j) ((j)->status = 0, \
+ PRE_GETCONTEXT, \
getcontext(&(j)->context), \
- POST_GETCONTEXT \
+ POST_GETCONTEXT, \
(j)->status)
#else
+typedef jmp_buf rb_jmpbuf_t;
# if !defined(setjmp) && defined(HAVE__SETJMP)
-# define ruby_setjmp(just_before_setjmp, env) \
- ((just_before_setjmp), _setjmp(env))
+# define ruby_setjmp(env) _setjmp(env)
# define ruby_longjmp(env,val) _longjmp(env,val)
# else
-# define ruby_setjmp(just_before_setjmp, env) \
- ((just_before_setjmp), setjmp(env))
+# define ruby_setjmp(env) setjmp(env)
# define ruby_longjmp(env,val) longjmp(env,val)
# endif
#endif
@@ -204,56 +223,33 @@ static int volatile freebsd_clear_carry_flag = 0;
#include <sys/select.h>
#endif
-/*
- Solaris sys/select.h switches select to select_large_fdset to support larger
- file descriptors if FD_SETSIZE is larger than 1024 on 32bit environment.
- But Ruby doesn't change FD_SETSIZE because fd_set is allocated dynamically.
- So following definition is required to use select_large_fdset.
-*/
-#ifdef HAVE_SELECT_LARGE_FDSET
-#define select(n, r, w, e, t) select_large_fdset(n, r, w, e, t)
-#endif
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
#include <sys/stat.h>
VALUE rb_cProc;
VALUE rb_cBinding;
-static VALUE proc_alloc(VALUE,struct BLOCK*,int);
-static VALUE proc_invoke(VALUE,VALUE,VALUE,VALUE,int);
-#define INVOKE_CALL (YIELD_CALL|YIELD_VALUES)
-#define INVOKE_VALUES YIELD_VALUES
-
-static VALUE proc_lambda(void);
-static VALUE rb_f_binding(VALUE);
-static void rb_f_END(void);
-static struct BLOCK *passing_block(VALUE,struct BLOCK*);
-static int block_orphan(struct BLOCK *data);
+static VALUE proc_invoke _((VALUE,VALUE,VALUE,VALUE));
+static VALUE rb_f_binding _((VALUE));
+static void rb_f_END _((void));
+static VALUE rb_f_block_given_p _((void));
+static VALUE block_pass _((VALUE,NODE*));
VALUE rb_cMethod;
+static VALUE method_call _((int, VALUE*, VALUE));
VALUE rb_cUnboundMethod;
-static VALUE umethod_bind(VALUE, VALUE);
-static VALUE rb_mod_define_method(int, VALUE*, VALUE);
-static VALUE rb_obj_define_method(int, VALUE*, VALUE);
-NORETURN(static void rb_raise_jump(VALUE));
-static VALUE rb_make_exception(int argc, VALUE *argv);
-
-static int vis_mode;
-#define VIS_PUBLIC 0
-#define VIS_PRIVATE 1
-#define VIS_PROTECTED 2
-#define VIS_MODFUNC 5
-#define VIS_LOCAL 8
-#define VIS_MASK 15
-#define VIS_SET(f) (vis_mode=(f))
-#define VIS_TEST(f) (vis_mode&(f))
-#define VIS_MODE() (vis_mode)
-
-VALUE (*ruby_sandbox_save)(struct thread *) = NULL;
-VALUE (*ruby_sandbox_restore)(struct thread *) = NULL;
+static VALUE umethod_bind _((VALUE, VALUE));
+static VALUE rb_mod_define_method _((int, VALUE*, VALUE));
+NORETURN(static void rb_raise_jump _((VALUE)));
+static VALUE rb_make_exception _((int argc, VALUE *argv));
+
+static int scope_vmode;
+#define SCOPE_PUBLIC 0
+#define SCOPE_PRIVATE 1
+#define SCOPE_PROTECTED 2
+#define SCOPE_MODFUNC 5
+#define SCOPE_MASK 7
+#define SCOPE_SET(f) (scope_vmode=(f))
+#define SCOPE_TEST(f) (scope_vmode&(f))
+
NODE* ruby_current_node;
int ruby_safe_level = 0;
/* safe-level:
@@ -264,16 +260,17 @@ int ruby_safe_level = 0;
4 - no global (non-tainted) variable modification/no direct output
*/
-static VALUE safe_getter(void);
-static void safe_setter(VALUE val);
+static VALUE safe_getter _((void));
+static void safe_setter _((VALUE val));
void
-rb_secure(int level)
+rb_secure(level)
+ int level;
{
if (level <= ruby_safe_level) {
- if (ruby_frame->callee) {
+ if (ruby_frame->last_func) {
rb_raise(rb_eSecurityError, "Insecure operation `%s' at level %d",
- rb_id2name(ruby_frame->callee), ruby_safe_level);
+ rb_id2name(ruby_frame->last_func), ruby_safe_level);
}
else {
rb_raise(rb_eSecurityError, "Insecure operation at level %d", ruby_safe_level);
@@ -282,18 +279,20 @@ rb_secure(int level)
}
void
-rb_secure_update(VALUE obj)
+rb_secure_update(obj)
+ VALUE obj;
{
if (!OBJ_TAINTED(obj)) rb_secure(4);
}
void
-rb_check_safe_obj(VALUE x)
+rb_check_safe_obj(x)
+ VALUE x;
{
if (ruby_safe_level > 0 && OBJ_TAINTED(x)){
- if (ruby_frame->callee) {
+ if (ruby_frame->last_func) {
rb_raise(rb_eSecurityError, "Insecure operation - %s",
- rb_id2name(ruby_frame->callee));
+ rb_id2name(ruby_frame->last_func));
}
else {
rb_raise(rb_eSecurityError, "Insecure operation: -r");
@@ -303,7 +302,8 @@ rb_check_safe_obj(VALUE x)
}
void
-rb_check_safe_str(VALUE x)
+rb_check_safe_str(x)
+ VALUE x;
{
rb_check_safe_obj(x);
if (TYPE(x)!= T_STRING) {
@@ -312,9 +312,11 @@ rb_check_safe_str(VALUE x)
}
}
-NORETURN(static void raise_undef(VALUE, ID));
+NORETURN(static void print_undef _((VALUE, ID)));
static void
-raise_undef(VALUE klass, ID id)
+print_undef(klass, id)
+ VALUE klass;
+ ID id;
{
rb_name_error(id, "undefined method `%s' for %s `%s'",
rb_id2name(id),
@@ -328,7 +330,7 @@ static ID removed, singleton_removed, undefined, singleton_undefined;
#define CACHE_MASK 0x7ff
#define EXPR1(c,m) ((((c)>>3)^(m))&CACHE_MASK)
-struct cache_entry { /* method hash table. */
+struct cache_entry { /* method hash table. */
ID mid; /* method's id */
ID mid0; /* method's original id */
VALUE klass; /* receiver's class */
@@ -337,79 +339,87 @@ struct cache_entry { /* method hash table. */
int noex;
};
-static struct cache_entry cache[2][CACHE_SIZE];
+static struct cache_entry cache[CACHE_SIZE];
static int ruby_running = 0;
void
rb_clear_cache()
{
- int i;
+ struct cache_entry *ent, *end;
if (!ruby_running) return;
- for (i=0; i<CACHE_SIZE; i++) {
- cache[0][i].mid = cache[1][i].mid = 0;
+ ent = cache; end = ent + CACHE_SIZE;
+ while (ent < end) {
+ ent->mid = 0;
+ ent++;
}
}
static void
-rb_clear_cache_for_remove(VALUE klass, ID id)
+rb_clear_cache_for_undef(klass, id)
+ VALUE klass;
+ ID id;
{
- int i, j;
+ struct cache_entry *ent, *end;
if (!ruby_running) return;
- for (i=0; i<CACHE_SIZE; i++) {
- for (j=0; j<2; j++) {
- struct cache_entry *ent = cache[j]+i;
- if (ent->mid == id &&
- RCLASS(ent->origin)->m_tbl == RCLASS(klass)->m_tbl) {
- ent->mid = 0;
- }
+ ent = cache; end = ent + CACHE_SIZE;
+ while (ent < end) {
+ if (ent->mid == id &&
+ RCLASS(ent->origin)->m_tbl == RCLASS(klass)->m_tbl) {
+ ent->mid = 0;
}
+ ent++;
}
}
static void
-rb_clear_cache_by_id(ID id)
+rb_clear_cache_by_id(id)
+ ID id;
{
- int i, j;
+ struct cache_entry *ent, *end;
if (!ruby_running) return;
- for (i=0; i<CACHE_SIZE; i++) {
- for (j=0; j<2; j++) {
- struct cache_entry *ent = cache[j]+i;
- if (ent->mid == id) {
- ent->mid = 0;
- }
+ ent = cache; end = ent + CACHE_SIZE;
+ while (ent < end) {
+ if (ent->mid == id) {
+ ent->mid = 0;
}
+ ent++;
}
}
void
-rb_clear_cache_by_class(VALUE klass)
+rb_clear_cache_by_class(klass)
+ VALUE klass;
{
- int i, j;
+ struct cache_entry *ent, *end;
if (!ruby_running) return;
- for (i=0; i<CACHE_SIZE; i++) {
- for (j=0; j<2; j++) {
- struct cache_entry *ent = cache[j]+i;
- if (ent->klass == klass || ent->origin == klass) {
- ent->mid = 0;
- }
+ ent = cache; end = ent + CACHE_SIZE;
+ while (ent < end) {
+ if (ent->klass == klass || ent->origin == klass) {
+ ent->mid = 0;
}
+ ent++;
}
}
static ID init, eqq, each, aref, aset, match, missing;
static ID added, singleton_added;
-static ID object_id, __send, __send_bang, respond_to;
+static ID __id__, __send__, respond_to;
-#define NOEX_SAFE(n) ((n) >> 5)
-#define NOEX_WITH(n, v) ((n) | (v) << 5)
+#define NOEX_TAINTED 8
+#define NOEX_SAFE(n) ((n) >> 4)
+#define NOEX_WITH(n, v) ((n) | (v) << 4)
#define NOEX_WITH_SAFE(n) NOEX_WITH(n, ruby_safe_level)
void
-rb_add_method(VALUE klass, ID mid, NODE *node, int noex)
+rb_add_method(klass, mid, node, noex)
+ VALUE klass;
+ ID mid;
+ NODE *node;
+ int noex;
{
NODE *body;
@@ -443,62 +453,54 @@ rb_add_method(VALUE klass, ID mid, NODE *node, int noex)
}
void
-rb_define_alloc_func(VALUE klass, VALUE (*func) (VALUE))
+rb_define_alloc_func(klass, func)
+ VALUE klass;
+ VALUE (*func) _((VALUE));
{
Check_Type(klass, T_CLASS);
rb_add_method(CLASS_OF(klass), ID_ALLOCATOR, NEW_CFUNC(func, 0), NOEX_PRIVATE);
}
void
-rb_undef_alloc_func(VALUE klass)
+rb_undef_alloc_func(klass)
+ VALUE klass;
{
Check_Type(klass, T_CLASS);
rb_add_method(CLASS_OF(klass), ID_ALLOCATOR, 0, NOEX_UNDEF);
}
-#define LOOKUP_NORMAL 0
-#define LOOKUP_FCALL 1
-#define LOOKUP_NOSKIP 2
-#define LOOKUP_LOCAL 1
-
static NODE*
-search_method(VALUE klass, ID id, VALUE *origin, int flag, int *out)
+search_method(klass, id, origin)
+ VALUE klass, *origin;
+ ID id;
{
NODE *body;
- if (flag == LOOKUP_FCALL && ruby_frame->this_class) {
- if (st_lookup(RCLASS(ruby_frame->this_class)->m_tbl, id, (st_data_t *)&body) &&
- body->nd_noex == NOEX_LOCAL) {
- if (origin) *origin = ruby_frame->this_class;
- if (out) *out = LOOKUP_LOCAL;
- return body;
- }
- }
- for (;klass; klass = RCLASS(klass)->super) {
- if (st_lookup(RCLASS(klass)->m_tbl, id, (st_data_t *)&body) &&
- (flag == LOOKUP_NOSKIP || body->nd_noex != NOEX_LOCAL)) {
- if (origin) *origin = klass;
- if (out) *out = LOOKUP_NORMAL;
- return body;
- }
+ if (!klass) return 0;
+ while (!st_lookup(RCLASS(klass)->m_tbl, id, (st_data_t *)&body)) {
+ klass = RCLASS(klass)->super;
+ if (!klass) return 0;
}
- return 0;
+
+ if (origin) *origin = klass;
+ return body;
}
static NODE*
-rb_get_method_body(VALUE *klassp, ID *idp, int *noexp)
+rb_get_method_body(klassp, idp, noexp)
+ VALUE *klassp;
+ ID *idp;
+ int *noexp;
{
ID id = *idp;
VALUE klass = *klassp;
VALUE origin;
NODE * volatile body;
struct cache_entry *ent;
- int noex = *noexp;
- int lc;
- if ((body = search_method(klass, id, &origin, noex, &lc)) == 0 || !body->nd_body) {
+ if ((body = search_method(klass, id, &origin)) == 0 || !body->nd_body) {
/* store empty info in cache */
- ent = cache[noex] + EXPR1(klass, id);
+ ent = cache + EXPR1(klass, id);
ent->klass = klass;
ent->origin = klass;
ent->mid = ent->mid0 = id;
@@ -509,11 +511,10 @@ rb_get_method_body(VALUE *klassp, ID *idp, int *noexp)
}
if (ruby_running) {
- VALUE c = (lc == LOOKUP_LOCAL) ? origin : klass;
/* store in cache */
- ent = cache[lc] + EXPR1(c, id);
- ent->klass = c;
- ent->noex = body->nd_noex;
+ ent = cache + EXPR1(klass, id);
+ ent->klass = klass;
+ ent->noex = body->nd_noex;
if (noexp) *noexp = body->nd_noex;
body = body->nd_body;
if (nd_type(body) == NODE_FBODY) {
@@ -547,21 +548,19 @@ rb_get_method_body(VALUE *klassp, ID *idp, int *noexp)
}
NODE*
-rb_method_node(VALUE klass, ID id)
+rb_method_node(klass, id)
+ VALUE klass;
+ ID id;
{
- int noex = LOOKUP_NORMAL;
- struct cache_entry *ent;
-
- ent = cache[0] + EXPR1(klass, id);
- if (ent->mid == id && ent->klass == klass && ent->method){
- return ent->method;
- }
+ int noex;
return rb_get_method_body(&klass, &id, &noex);
}
static void
-remove_method(VALUE klass, ID mid)
+remove_method(klass, mid)
+ VALUE klass;
+ ID mid;
{
NODE *body;
@@ -572,7 +571,7 @@ remove_method(VALUE klass, ID mid)
rb_raise(rb_eSecurityError, "Insecure: can't remove method");
}
if (OBJ_FROZEN(klass)) rb_error_frozen("class/module");
- if (mid == object_id || mid == __send || mid == __send_bang || mid == init) {
+ if (mid == __id__ || mid == __send__ || mid == init) {
rb_warn("removing `%s' may cause serious problem", rb_id2name(mid));
}
if (!st_delete(RCLASS(klass)->m_tbl, &mid, (st_data_t *)&body) ||
@@ -580,7 +579,7 @@ remove_method(VALUE klass, ID mid)
rb_name_error(mid, "method `%s' not defined in %s",
rb_id2name(mid), rb_class2name(klass));
}
- rb_clear_cache_for_remove(klass, mid);
+ rb_clear_cache_for_undef(klass, mid);
if (FL_TEST(klass, FL_SINGLETON)) {
rb_funcall(rb_iv_get(klass, "__attached__"), singleton_removed, 1, ID2SYM(mid));
}
@@ -590,7 +589,9 @@ remove_method(VALUE klass, ID mid)
}
void
-rb_remove_method(VALUE klass, const char *name)
+rb_remove_method(klass, name)
+ VALUE klass;
+ const char *name;
{
remove_method(klass, rb_intern(name));
}
@@ -604,7 +605,10 @@ rb_remove_method(VALUE klass, const char *name)
*/
static VALUE
-rb_mod_remove_method(int argc, VALUE *argv, VALUE mod)
+rb_mod_remove_method(argc, argv, mod)
+ int argc;
+ VALUE *argv;
+ VALUE mod;
{
int i;
@@ -618,19 +622,26 @@ rb_mod_remove_method(int argc, VALUE *argv, VALUE mod)
#undef rb_enable_super
void
-rb_disable_super(VALUE klass, const char *name)
+rb_disable_super(klass, name)
+ VALUE klass;
+ const char *name;
{
/* obsolete - no use */
}
void
-rb_enable_super(VALUE klass, const char *name)
+rb_enable_super(klass, name)
+ VALUE klass;
+ const char *name;
{
- rb_warning("rb_enable_super() is obsolete");
+ rb_warn("rb_enable_super() is obsolete");
}
static void
-rb_export_method(VALUE klass, ID name, ID noex)
+rb_export_method(klass, name, noex)
+ VALUE klass;
+ ID name;
+ ID noex;
{
NODE *body;
VALUE origin;
@@ -638,12 +649,12 @@ rb_export_method(VALUE klass, ID name, ID noex)
if (klass == rb_cObject) {
rb_secure(4);
}
- body = search_method(klass, name, &origin, LOOKUP_NOSKIP, 0);
+ body = search_method(klass, name, &origin);
if (!body && TYPE(klass) == T_MODULE) {
- body = search_method(rb_cObject, name, &origin, LOOKUP_NOSKIP, 0);
+ body = search_method(rb_cObject, name, &origin);
}
if (!body || !body->nd_body) {
- raise_undef(klass, name);
+ print_undef(klass, name);
}
if (body->nd_noex != noex) {
if (klass == origin) {
@@ -655,60 +666,52 @@ rb_export_method(VALUE klass, ID name, ID noex)
}
}
-static int
-method_exists(VALUE klass, ID id, int noex)
+int
+rb_method_boundp(klass, id, ex)
+ VALUE klass;
+ ID id;
+ int ex;
{
struct cache_entry *ent;
- int nx = noex;
-
- switch (noex) {
- case LOOKUP_NORMAL:
- case LOOKUP_FCALL:
- /* is it in the method cache? */
- ent = cache[noex] + EXPR1(klass, id);
- if (ent->mid == id && ent->klass == klass) {
- if (nx == LOOKUP_NORMAL) {
- if (ent->noex == NOEX_PRIVATE) return Qfalse;
- }
- else if (ent->noex != NOEX_LOCAL) {
- if (!ent->method) return Qfalse;
- return Qtrue;
- }
- }
- /* fall through */
- default:
- if (rb_get_method_body(&klass, &id, &noex)) {
- if (nx == LOOKUP_NORMAL && noex == NOEX_PRIVATE)
- return Qfalse;
- return Qtrue;
- }
- return Qfalse;
- }
-}
+ int noex;
-int
-rb_method_boundp(VALUE klass, ID id, int pub)
-{
- return method_exists(klass, id, pub ? LOOKUP_NORMAL : LOOKUP_FCALL);
+ /* is it in the method cache? */
+ ent = cache + EXPR1(klass, id);
+ if (ent->mid == id && ent->klass == klass) {
+ if (ex && (ent->noex & NOEX_PRIVATE))
+ return Qfalse;
+ if (!ent->method) return Qfalse;
+ return Qtrue;
+ }
+ if (rb_get_method_body(&klass, &id, &noex)) {
+ if (ex && (noex & NOEX_PRIVATE))
+ return Qfalse;
+ return Qtrue;
+ }
+ return Qfalse;
}
void
-rb_attr(VALUE klass, ID id, int read, int write, int noex)
+rb_attr(klass, id, read, write, ex)
+ VALUE klass;
+ ID id;
+ int read, write, ex;
{
const char *name;
char *buf;
ID attriv;
+ int noex;
size_t len;
- if (!noex) noex = NOEX_PUBLIC;
+ if (!ex) noex = NOEX_PUBLIC;
else {
- if (VIS_TEST(VIS_PRIVATE)) {
+ if (SCOPE_TEST(SCOPE_PRIVATE)) {
noex = NOEX_PRIVATE;
- rb_warning((VIS_MODE() == VIS_MODFUNC) ?
+ rb_warning((scope_vmode == SCOPE_MODFUNC) ?
"attribute accessor as module_function" :
"private attribute?");
}
- else if (VIS_TEST(VIS_PROTECTED)) {
+ else if (SCOPE_TEST(SCOPE_PROTECTED)) {
noex = NOEX_PROTECTED;
}
else {
@@ -735,7 +738,11 @@ rb_attr(VALUE klass, ID id, int read, int write, int noex)
}
}
+extern int ruby_in_compile;
+
VALUE ruby_errinfo = Qnil;
+extern NODE *ruby_eval_tree_begin;
+extern NODE *ruby_eval_tree;
extern int ruby_nerrs;
VALUE rb_eLocalJumpError;
@@ -748,21 +755,17 @@ struct SCOPE *ruby_scope;
static struct FRAME *top_frame;
static struct SCOPE *top_scope;
-static unsigned long frame_unique = 1;
+static unsigned long frame_unique = 0;
-#define PUSH_FRAME(link) do { \
+#define PUSH_FRAME() do { \
struct FRAME _frame; \
_frame.prev = ruby_frame; \
_frame.tmp = 0; \
_frame.node = ruby_current_node; \
+ _frame.iter = ruby_iter->iter; \
_frame.argc = 0; \
- _frame.self = (link)?ruby_frame->self:0;\
- _frame.block = (link)?ruby_frame->block:0;\
_frame.flags = 0; \
_frame.uniq = frame_unique++; \
- _frame.callee = 0; \
- _frame.this_func = 0; \
- _frame.this_class = 0; \
ruby_frame = &_frame
#define POP_FRAME() \
@@ -770,33 +773,59 @@ static unsigned long frame_unique = 1;
ruby_frame = _frame.prev; \
} while (0)
+struct BLOCK {
+ NODE *var;
+ NODE *body;
+ VALUE self;
+ struct FRAME frame;
+ struct SCOPE *scope;
+ VALUE klass;
+ NODE *cref;
+ int iter;
+ int vmode;
+ int flags;
+ int uniq;
+ struct RVarmap *dyna_vars;
+ VALUE orig_thread;
+ VALUE wrapper;
+ VALUE block_obj;
+ struct BLOCK *outer;
+ struct BLOCK *prev;
+};
+
+#define BLOCK_D_SCOPE 1
+#define BLOCK_LAMBDA 2
+
+static struct BLOCK *ruby_block;
static unsigned long block_unique = 1;
-#define PUSH_BLOCK(v,iv,b) do { \
+#define PUSH_BLOCK(v,b) do { \
struct BLOCK _block; \
- _block.var = (iv); \
+ _block.var = (v); \
_block.body = (b); \
_block.self = self; \
_block.frame = *ruby_frame; \
+ _block.klass = ruby_class; \
_block.cref = ruby_cref; \
_block.frame.node = ruby_current_node;\
_block.scope = ruby_scope; \
- _block.vmode = vis_mode; \
+ _block.prev = ruby_block; \
+ _block.outer = ruby_block; \
+ _block.iter = ruby_iter->iter; \
+ _block.vmode = scope_vmode; \
_block.flags = BLOCK_D_SCOPE; \
_block.dyna_vars = ruby_dyna_vars; \
_block.wrapper = ruby_wrapper; \
_block.block_obj = 0; \
+ _block.uniq = (b)?block_unique++:0; \
if (b) { \
- _block.uniq = block_unique++; \
prot_tag->blkid = _block.uniq; \
} \
- else { \
- _block.uniq = 0; \
- prot_tag->blkid = 0; \
- } \
- (v) = &_block
+ ruby_block = &_block
-#define POP_BLOCK() } while (0)
+#define POP_BLOCK() \
+ ruby_block = _block.prev; \
+} while (0)
struct RVarmap *ruby_dyna_vars;
#define PUSH_VARS() do { \
@@ -817,7 +846,10 @@ struct RVarmap *ruby_dyna_vars;
#define DMETHOD_P() (ruby_frame->flags & FRAME_DMETH)
static struct RVarmap*
-new_dvar(ID id, VALUE value, struct RVarmap *prev)
+new_dvar(id, value, prev)
+ ID id;
+ VALUE value;
+ struct RVarmap *prev;
{
NEWOBJ(vars, struct RVarmap);
OBJSETUP(vars, 0, T_VARMAP);
@@ -829,7 +861,8 @@ new_dvar(ID id, VALUE value, struct RVarmap *prev)
}
VALUE
-rb_dvar_defined(ID id)
+rb_dvar_defined(id)
+ ID id;
{
struct RVarmap *vars = ruby_dyna_vars;
@@ -841,7 +874,8 @@ rb_dvar_defined(ID id)
}
VALUE
-rb_dvar_curr(ID id)
+rb_dvar_curr(id)
+ ID id;
{
struct RVarmap *vars = ruby_dyna_vars;
@@ -854,7 +888,8 @@ rb_dvar_curr(ID id)
}
VALUE
-rb_dvar_ref(ID id)
+rb_dvar_ref(id)
+ ID id;
{
struct RVarmap *vars = ruby_dyna_vars;
@@ -868,13 +903,18 @@ rb_dvar_ref(ID id)
}
void
-rb_dvar_push(ID id, VALUE value)
+rb_dvar_push(id, value)
+ ID id;
+ VALUE value;
{
ruby_dyna_vars = new_dvar(id, value, ruby_dyna_vars);
}
static void
-dvar_asgn_internal(ID id, VALUE value, int curr)
+dvar_asgn_internal(id, value, curr)
+ ID id;
+ VALUE value;
+ int curr;
{
int n = 0;
struct RVarmap *vars = ruby_dyna_vars;
@@ -901,19 +941,24 @@ dvar_asgn_internal(ID id, VALUE value, int curr)
}
static inline void
-dvar_asgn(ID id, VALUE value)
+dvar_asgn(id, value)
+ ID id;
+ VALUE value;
{
dvar_asgn_internal(id, value, 0);
}
static inline void
-dvar_asgn_curr(ID id, VALUE value)
+dvar_asgn_curr(id, value)
+ ID id;
+ VALUE value;
{
dvar_asgn_internal(id, value, 1);
}
VALUE *
-rb_svar(int cnt)
+rb_svar(cnt)
+ int cnt;
{
struct RVarmap *vars = ruby_dyna_vars;
ID id;
@@ -929,9 +974,31 @@ rb_svar(int cnt)
return &ruby_scope->local_vars[cnt];
}
+struct iter {
+ int iter;
+ struct iter *prev;
+};
+static struct iter *ruby_iter;
+
+#define ITER_NOT 0
+#define ITER_PRE 1
+#define ITER_CUR 2
+#define ITER_PAS 3
+
+#define PUSH_ITER(i) do { \
+ struct iter _iter; \
+ _iter.prev = ruby_iter; \
+ _iter.iter = (i); \
+ ruby_iter = &_iter
+
+#define POP_ITER() \
+ ruby_iter = _iter.prev; \
+} while (0)
+
struct tag {
rb_jmpbuf_t buf;
struct FRAME *frame;
+ struct iter *iter;
VALUE tag;
VALUE retval;
struct SCOPE *scope;
@@ -945,10 +1012,11 @@ static struct tag *prot_tag;
struct tag _tag; \
_tag.retval = Qnil; \
_tag.frame = ruby_frame; \
+ _tag.iter = ruby_iter; \
_tag.prev = prot_tag; \
_tag.scope = ruby_scope; \
_tag.tag = ptag; \
- _tag.dst = -1; \
+ _tag.dst = 0; \
_tag.blkid = 0; \
prot_tag = &_tag
@@ -958,12 +1026,12 @@ static struct tag *prot_tag;
#define PROT_LOOP INT2FIX(1) /* 3 */
#define PROT_LAMBDA INT2FIX(2) /* 5 */
#define PROT_YIELD INT2FIX(3) /* 7 */
-#define PROT_TOP INT2FIX(4) /* 9 */
-#define EXEC_TAG() (FLUSH_REGISTER_WINDOWS, ruby_setjmp(((void)0), prot_tag->buf))
+#define EXEC_TAG() (FLUSH_REGISTER_WINDOWS, ruby_setjmp(prot_tag->buf))
#define JUMP_TAG(st) do { \
ruby_frame = prot_tag->frame; \
+ ruby_iter = prot_tag->iter; \
ruby_longjmp(prot_tag->buf,(st)); \
} while (0)
@@ -981,19 +1049,25 @@ static struct tag *prot_tag;
#define TAG_RAISE 0x6
#define TAG_THROW 0x7
#define TAG_FATAL 0x8
-#define TAG_CONTCALL 0x9
-#define TAG_THREAD 0xa
#define TAG_MASK 0xf
-VALUE ruby_wrapper; /* security wrapper */
+VALUE ruby_class;
+static VALUE ruby_wrapper; /* security wrapper */
+
+#define PUSH_CLASS(c) do { \
+ VALUE _class = ruby_class; \
+ ruby_class = (c)
+
+#define POP_CLASS() ruby_class = _class; \
+} while (0)
-NODE *ruby_cref = 0;
-NODE *ruby_top_cref;
+static NODE *ruby_cref = 0;
+static NODE *top_cref;
#define PUSH_CREF(c) ruby_cref = NEW_NODE(NODE_CREF,(c),0,ruby_cref)
#define POP_CREF() ruby_cref = ruby_cref->nd_next
#define PUSH_SCOPE() do { \
- volatile int _vmode = vis_mode; \
+ volatile int _vmode = scope_vmode; \
struct SCOPE * volatile _old; \
NEWOBJ(_scope, struct SCOPE); \
OBJSETUP(_scope, 0, T_SCOPE); \
@@ -1002,11 +1076,12 @@ NODE *ruby_top_cref;
_scope->flags = 0; \
_old = ruby_scope; \
ruby_scope = _scope; \
- vis_mode = VIS_PUBLIC
+ scope_vmode = SCOPE_PUBLIC
-rb_thread_t curr_thread = 0;
-rb_thread_t main_thread;
-static void scope_dup(struct SCOPE *);
+typedef struct thread * rb_thread_t;
+static rb_thread_t curr_thread = 0;
+static rb_thread_t main_thread;
+static void scope_dup _((struct SCOPE *));
#define POP_SCOPE() \
if (ruby_scope->flags & SCOPE_DONT_RECYCLE) {\
@@ -1022,57 +1097,26 @@ static void scope_dup(struct SCOPE *);
} \
ruby_scope->flags |= SCOPE_NOSTACK; \
ruby_scope = _old; \
- vis_mode = _vmode; \
+ scope_vmode = _vmode; \
} while (0)
-struct ruby_env {
- struct ruby_env *prev;
- struct FRAME *frame;
- struct SCOPE *scope;
- struct BLOCK *block;
- struct tag *tag;
- NODE *cref;
-};
-
-static void push_thread_anchor(struct ruby_env *);
-static void pop_thread_anchor(struct ruby_env *);
+static VALUE rb_eval _((VALUE,NODE*));
+static VALUE eval _((VALUE,VALUE,VALUE,char*,int));
+static NODE *compile _((VALUE, char*, int));
-#define PUSH_THREAD_TAG() PUSH_TAG(PROT_THREAD); \
- do { \
- struct ruby_env _interp; \
- push_thread_anchor(&_interp);
-#define POP_THREAD_TAG() \
- pop_thread_anchor(&_interp); \
- } while (0); \
- POP_TAG()
+static VALUE rb_yield_0 _((VALUE, VALUE, VALUE, int, int));
-static VALUE rb_eval(VALUE,NODE*);
-static VALUE eval(VALUE,VALUE,VALUE,const char*,int);
-static NODE *compile(VALUE, const char*, int);
-
-static VALUE rb_yield_0(VALUE, VALUE, VALUE, int);
-
-#define YIELD_CALL 1
-#define YIELD_VALUES 2
-#define YIELD_PROC_INVOKE 4
-#define YIELD_PUBLIC_DEF 8
+#define YIELD_LAMBDA_CALL 1
+#define YIELD_PROC_CALL 2
+#define YIELD_PUBLIC_DEF 4
#define YIELD_FUNC_AVALUE 1
#define YIELD_FUNC_SVALUE 2
-typedef enum calling_scope {
- CALLING_NORMAL,
- CALLING_FUNCALL,
- CALLING_FCALL,
- CALLING_VCALL,
- CALLING_SUPER,
-} calling_scope_t;
-
-static VALUE rb_call(VALUE,VALUE,ID,int,const VALUE*,struct BLOCK*,calling_scope_t,int,VALUE);
-static VALUE module_setup(VALUE,NODE*);
+static VALUE rb_call _((VALUE,VALUE,ID,int,const VALUE*,int));
+static VALUE module_setup _((VALUE,NODE*));
-static VALUE massign(VALUE,NODE*,VALUE,int);
-static void assign(VALUE,NODE*,VALUE,int);
-static int formal_assign(VALUE, NODE*, int, const VALUE*, VALUE*);
+static VALUE massign _((VALUE,NODE*,VALUE,int));
+static void assign _((VALUE,NODE*,VALUE,int));
typedef struct event_hook {
rb_event_hook_func_t func;
@@ -1099,7 +1143,7 @@ static rb_event_hook_t *event_hooks;
static VALUE trace_func = 0;
static int tracing = 0;
-static void call_trace_func(rb_event_t,NODE*,VALUE,ID,VALUE);
+static void call_trace_func _((rb_event_t,NODE*,VALUE,ID,VALUE));
#if 0
#define SET_CURRENT_SOURCE() (ruby_sourcefile = ruby_current_node->nd_file, \
@@ -1109,7 +1153,7 @@ static void call_trace_func(rb_event_t,NODE*,VALUE,ID,VALUE);
#endif
void
-ruby_set_current_source(void)
+ruby_set_current_source()
{
if (ruby_current_node) {
ruby_sourcefile = ruby_current_node->nd_file;
@@ -1118,84 +1162,47 @@ ruby_set_current_source(void)
}
static void
+#ifdef HAVE_STDARG_PROTOTYPES
warn_printf(const char *fmt, ...)
+#else
+warn_printf(fmt, va_alist)
+ const char *fmt;
+ va_dcl
+#endif
{
char buf[BUFSIZ];
va_list args;
- va_start(args, fmt);
+ va_init_list(args, fmt);
vsnprintf(buf, BUFSIZ, fmt, args);
va_end(args);
rb_write_error(buf);
}
-static VALUE
-error_line(struct FRAME *frame, NODE *node)
-{
- char *file;
- int line;
+#define warn_print(x) rb_write_error(x)
+#define warn_print2(x,l) rb_write_error2(x,l)
- if (node) {
- file = node->nd_file;
- line = nd_line(node);
- }
- else {
- file = ruby_sourcefile;
- line = ruby_sourceline;
- }
+static void
+error_pos()
+{
ruby_set_current_source();
if (ruby_sourcefile) {
- if (frame->callee) {
- if (frame->flags & FRAME_FUNC) {
- return rb_sprintf("%s:%d:in `%s'", file, line,
- rb_id2name(frame->this_func));
- }
- else {
- VALUE oklass = frame->this_class;
- char *rec = 0;
-
- switch (TYPE(frame->self)) {
- case T_NIL:
- rec = "nil"; break;
- case T_TRUE:
- rec = "true"; break;
- case T_FALSE:
- rec = "false"; break;
- }
- if (rec) {
- return rb_sprintf("%s:%d:in `%s.%s'", file, line, rec,
- rb_id2name(frame->this_func));
- }
- if (TYPE(oklass) == T_ICLASS) {
- oklass = RBASIC(oklass)->klass;
- }
- else if (FL_TEST(oklass, FL_SINGLETON)) {
- oklass = rb_iv_get(oklass, "__attached__");
- }
- return rb_sprintf("%s:%d:in `%s#%s'", file, line,
- rb_class2name(oklass),
- rb_id2name(frame->this_func));
- }
+ if (ruby_frame->last_func) {
+ warn_printf("%s:%d:in `%s'", ruby_sourcefile, ruby_sourceline,
+ rb_id2name(ruby_frame->orig_func));
}
- else if (!node && ruby_sourceline == 0) {
- return rb_str_new2(ruby_sourcefile);
+ else if (ruby_sourceline == 0) {
+ warn_printf("%s", ruby_sourcefile);
+ }
+ else {
+ warn_printf("%s:%d", ruby_sourcefile, ruby_sourceline);
}
}
- return rb_sprintf("%s:%d", file, line);
-}
-
-#define warn_print(x) rb_write_error(x)
-#define warn_print2(x,l) rb_write_error2(x,l)
-
-static void
-error_pos(void)
-{
- VALUE pos = error_line(ruby_frame, 0);
- warn_printf("%s", StringValueCStr(pos));
}
static VALUE
-get_backtrace(VALUE info)
+get_backtrace(info)
+ VALUE info;
{
if (NIL_P(info)) return Qnil;
info = rb_funcall(info, rb_intern("backtrace"), 0);
@@ -1204,17 +1211,18 @@ get_backtrace(VALUE info)
}
static void
-set_backtrace(VALUE info, VALUE bt)
+set_backtrace(info, bt)
+ VALUE info, bt;
{
rb_funcall(info, rb_intern("set_backtrace"), 1, bt);
}
static void
-error_print(void)
+error_print()
{
VALUE errat = Qnil; /* OK */
volatile VALUE eclass, e;
- const char *einfo;
+ char *einfo;
long elen;
if (NIL_P(ruby_errinfo)) return;
@@ -1234,24 +1242,24 @@ error_print(void)
else
warn_printf("%d", ruby_sourceline);
}
- else if (RARRAY_LEN(errat) == 0) {
+ else if (RARRAY(errat)->len == 0) {
error_pos();
}
else {
- VALUE mesg = RARRAY_PTR(errat)[0];
+ VALUE mesg = RARRAY(errat)->ptr[0];
if (NIL_P(mesg)) error_pos();
else {
- warn_print2(RSTRING_PTR(mesg), RSTRING_LEN(mesg));
+ warn_print2(RSTRING(mesg)->ptr, RSTRING(mesg)->len);
}
}
eclass = CLASS_OF(ruby_errinfo);
if (EXEC_TAG() == 0) {
- e = rb_funcall(ruby_errinfo, rb_intern("message"), 0, 0);
- StringValue(e);
- einfo = RSTRING_PTR(e);
- elen = RSTRING_LEN(e);
+ e = rb_funcall(ruby_errinfo, rb_intern("message"), 0, 0);
+ StringValue(e);
+ einfo = RSTRING(e)->ptr;
+ elen = RSTRING(e)->len;
}
else {
einfo = "";
@@ -1267,14 +1275,14 @@ error_print(void)
epath = rb_class_name(eclass);
if (elen == 0) {
warn_print(": ");
- warn_print2(RSTRING_PTR(epath), RSTRING_LEN(epath));
+ warn_print2(RSTRING(epath)->ptr, RSTRING(epath)->len);
warn_print("\n");
}
else {
char *tail = 0;
long len = elen;
- if (RSTRING_PTR(epath)[0] == '#') epath = 0;
+ if (RSTRING(epath)->ptr[0] == '#') epath = 0;
if (tail = memchr(einfo, '\n', elen)) {
len = tail - einfo;
tail++; /* skip newline */
@@ -1283,7 +1291,7 @@ error_print(void)
warn_print2(einfo, len);
if (epath) {
warn_print(" (");
- warn_print2(RSTRING_PTR(epath), RSTRING_LEN(epath));
+ warn_print2(RSTRING(epath)->ptr, RSTRING(epath)->len);
warn_print(")\n");
}
if (tail) {
@@ -1294,19 +1302,21 @@ error_print(void)
if (!NIL_P(errat)) {
long i;
+ struct RArray *ep = RARRAY(errat);
#define TRACE_MAX (TRACE_HEAD+TRACE_TAIL+5)
#define TRACE_HEAD 8
#define TRACE_TAIL 5
- for (i=1; i<RARRAY_LEN(errat); i++) {
- if (TYPE(RARRAY_PTR(errat)[i]) == T_STRING) {
- warn_printf("\tfrom %s\n", RSTRING_PTR(RARRAY_PTR(errat)[i]));
+ ep = RARRAY(errat);
+ for (i=1; i<ep->len; i++) {
+ if (TYPE(ep->ptr[i]) == T_STRING) {
+ warn_printf("\tfrom %s\n", RSTRING(ep->ptr[i])->ptr);
}
- if (i == TRACE_HEAD && RARRAY_LEN(errat) > TRACE_MAX) {
+ if (i == TRACE_HEAD && ep->len > TRACE_MAX) {
warn_printf("\t ... %ld levels...\n",
- RARRAY_LEN(errat) - TRACE_HEAD - TRACE_TAIL);
- i = RARRAY_LEN(errat) - TRACE_TAIL;
+ ep->len - TRACE_HEAD - TRACE_TAIL);
+ i = ep->len - TRACE_TAIL;
}
}
}
@@ -1321,35 +1331,34 @@ extern char **environ;
#endif
char **rb_origenviron;
-void rb_call_inits(void);
-void Init_stack(VALUE*);
-void Init_heap(void);
-void Init_ext(void);
+void rb_call_inits _((void));
+void Init_stack _((VALUE*));
+void Init_heap _((void));
+void Init_ext _((void));
#ifdef HAVE_NATIVETHREAD
static rb_nativethread_t ruby_thid;
-int
-is_ruby_native_thread(void)
-{
+int
+is_ruby_native_thread() {
return NATIVETHREAD_EQUAL(ruby_thid, NATIVETHREAD_CURRENT());
}
# ifdef HAVE_NATIVETHREAD_KILL
void
-ruby_native_thread_kill(int sig)
+ruby_native_thread_kill(sig)
+ int sig;
{
NATIVETHREAD_KILL(ruby_thid, sig);
}
# endif
#endif
-NORETURN(static void rb_thread_start_1(void));
-
void
-ruby_init(void)
+ruby_init()
{
static int initialized = 0;
static struct FRAME frame;
+ static struct iter iter;
int state;
if (initialized)
@@ -1360,6 +1369,7 @@ ruby_init(void)
#endif
ruby_frame = top_frame = &frame;
+ ruby_iter = &iter;
#ifdef __MACOS__
rb_origenviron = 0;
@@ -1370,16 +1380,19 @@ ruby_init(void)
Init_stack((void*)&state);
Init_heap();
PUSH_SCOPE();
+ ruby_scope->local_vars = 0;
+ ruby_scope->local_tbl = 0;
top_scope = ruby_scope;
/* default visibility is private at toplevel */
- VIS_SET(VIS_PRIVATE);
+ SCOPE_SET(SCOPE_PRIVATE);
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
rb_call_inits();
+ ruby_class = rb_cObject;
ruby_frame->self = ruby_top_self;
- ruby_top_cref = rb_node_newnode(NODE_CREF,rb_cObject,0,0);
- ruby_cref = ruby_top_cref;
+ top_cref = rb_node_newnode(NODE_CREF,rb_cObject,0,0);
+ ruby_cref = top_cref;
rb_define_global_const("TOPLEVEL_BINDING", rb_f_binding(ruby_top_self));
#ifdef __MACOS__
_macruby_init();
@@ -1401,39 +1414,43 @@ ruby_init(void)
}
static VALUE
-eval_node(VALUE self, NODE *node)
+eval_node(self, node)
+ VALUE self;
+ NODE *node;
{
- if (!node) return Qnil;
- if (nd_type(node) == NODE_PRELUDE) {
- rb_eval(self, node->nd_head);
- node = node->nd_body;
+ NODE *beg_tree = ruby_eval_tree_begin;
+
+ ruby_eval_tree_begin = 0;
+ if (beg_tree) {
+ rb_eval(self, beg_tree);
}
+
if (!node) return Qnil;
return rb_eval(self, node);
}
int ruby_in_eval;
-static void rb_thread_cleanup(void);
-static void rb_thread_wait_other_threads(void);
-
-static int thread_set_raised(void);
-static int thread_reset_raised(void);
+static void rb_thread_cleanup _((void));
+static void rb_thread_wait_other_threads _((void));
-static int thread_no_ensure _((void));
+static int thread_set_raised();
+static int thread_reset_raised();
static VALUE exception_error;
static VALUE sysstack_error;
static int
-sysexit_status(VALUE err)
+sysexit_status(err)
+ VALUE err;
{
VALUE st = rb_iv_get(err, "status");
return NUM2INT(st);
}
static int
-error_handle(int ex)
+error_handle(ex)
+ int ex;
{
int status = EXIT_FAILURE;
@@ -1492,30 +1509,29 @@ error_handle(int ex)
}
void
-ruby_options(int argc, char **argv)
+ruby_options(argc, argv)
+ int argc;
+ char **argv;
{
int state;
Init_stack((void*)&state);
- PUSH_THREAD_TAG();
+ PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
ruby_process_options(argc, argv);
}
else {
- if (state == TAG_THREAD) {
- rb_thread_start_1();
- }
trace_func = 0;
tracing = 0;
exit(error_handle(state));
}
- POP_THREAD_TAG();
+ POP_TAG();
}
-void rb_exec_end_proc(void);
+void rb_exec_end_proc _((void));
static void
-ruby_finalize_0(void)
+ruby_finalize_0()
{
PUSH_TAG(PROT_NONE);
if (EXEC_TAG() == 0) {
@@ -1526,7 +1542,7 @@ ruby_finalize_0(void)
}
static void
-ruby_finalize_1(void)
+ruby_finalize_1()
{
signal(SIGINT, SIG_DFL);
ruby_errinfo = 0;
@@ -1536,37 +1552,37 @@ ruby_finalize_1(void)
}
void
-ruby_finalize(void)
+ruby_finalize()
{
ruby_finalize_0();
ruby_finalize_1();
}
int
-ruby_cleanup(int ex)
+ruby_cleanup(ex)
+ int ex;
{
int state;
volatile VALUE err = ruby_errinfo;
ruby_safe_level = 0;
Init_stack((void*)&state);
- PUSH_THREAD_TAG();
+ ruby_finalize_0();
+ if (ruby_errinfo) err = ruby_errinfo;
+ PUSH_TAG(PROT_NONE);
+ PUSH_ITER(ITER_NOT);
if ((state = EXEC_TAG()) == 0) {
- ruby_finalize_0();
- if (ruby_errinfo) err = ruby_errinfo;
rb_thread_cleanup();
rb_thread_wait_other_threads();
}
- else if (state == TAG_THREAD) {
- rb_thread_start_1();
- }
else if (ex == 0) {
ex = state;
}
+ POP_ITER();
ruby_errinfo = err;
ex = error_handle(ex);
ruby_finalize_1();
- POP_THREAD_TAG();
+ POP_TAG();
if (err && rb_obj_is_kind_of(err, rb_eSystemExit)) {
VALUE st = rb_iv_get(err, "status");
@@ -1575,28 +1591,32 @@ ruby_cleanup(int ex)
return ex;
}
-extern NODE *ruby_eval_tree;
-
static int
-ruby_exec_internal(void)
+ruby_exec_internal()
{
int state;
- PUSH_THREAD_TAG();
+ PUSH_TAG(PROT_NONE);
+ PUSH_ITER(ITER_NOT);
/* default visibility is private at toplevel */
- VIS_SET(VIS_PRIVATE);
+ SCOPE_SET(SCOPE_PRIVATE);
if ((state = EXEC_TAG()) == 0) {
eval_node(ruby_top_self, ruby_eval_tree);
}
- else if (state == TAG_THREAD) {
- rb_thread_start_1();
- }
- POP_THREAD_TAG();
+ POP_ITER();
+ POP_TAG();
return state;
}
+void
+ruby_stop(ex)
+ int ex;
+{
+ exit(ruby_cleanup(ex));
+}
+
int
-ruby_exec(void)
+ruby_exec()
{
volatile NODE *tmp;
@@ -1605,13 +1625,7 @@ ruby_exec(void)
}
void
-ruby_stop(int ex)
-{
- exit(ruby_cleanup(ex));
-}
-
-void
-ruby_run(void)
+ruby_run()
{
int state;
static int ex;
@@ -1623,7 +1637,8 @@ ruby_run(void)
}
static void
-compile_error(const char *at)
+compile_error(at)
+ const char *at;
{
VALUE str;
@@ -1641,7 +1656,8 @@ compile_error(const char *at)
}
VALUE
-rb_eval_string(const char *str)
+rb_eval_string(str)
+ const char *str;
{
VALUE v;
NODE *oldsrc = ruby_current_node;
@@ -1655,24 +1671,31 @@ rb_eval_string(const char *str)
}
VALUE
-rb_eval_string_protect(const char *str, int *state)
+rb_eval_string_protect(str, state)
+ const char *str;
+ int *state;
{
- return rb_protect((VALUE (*)(VALUE))rb_eval_string, (VALUE)str, state);
+ return rb_protect((VALUE (*)_((VALUE)))rb_eval_string, (VALUE)str, state);
}
VALUE
-rb_eval_string_wrap(const char *str, int *state)
+rb_eval_string_wrap(str, state)
+ const char *str;
+ int *state;
{
int status;
VALUE self = ruby_top_self;
VALUE wrapper = ruby_wrapper;
VALUE val;
+ PUSH_CLASS(ruby_wrapper = rb_module_new());
ruby_top_self = rb_obj_clone(ruby_top_self);
rb_extend_object(ruby_top_self, ruby_wrapper);
- PUSH_FRAME(Qfalse);
+ PUSH_FRAME();
+ ruby_frame->last_func = 0;
+ ruby_frame->last_class = 0;
ruby_frame->self = self;
- PUSH_CREF(ruby_wrapper = rb_module_new());
+ PUSH_CREF(ruby_wrapper);
PUSH_SCOPE();
val = rb_eval_string_protect(str, &status);
@@ -1680,6 +1703,7 @@ rb_eval_string_wrap(const char *str, int *state)
POP_SCOPE();
POP_FRAME();
+ POP_CLASS();
ruby_wrapper = wrapper;
if (state) {
*state = status;
@@ -1690,9 +1714,12 @@ rb_eval_string_wrap(const char *str, int *state)
return val;
}
-NORETURN(static void localjump_error(const char*, VALUE, int, VALUE));
+NORETURN(static void localjump_error(const char*, VALUE, int));
static void
-localjump_error(const char *mesg, VALUE value, int reason, VALUE bt)
+localjump_error(mesg, value, reason)
+ const char *mesg;
+ VALUE value;
+ int reason;
{
VALUE exc = rb_exc_new2(rb_eLocalJumpError, mesg);
ID id;
@@ -1710,10 +1737,9 @@ localjump_error(const char *mesg, VALUE value, int reason, VALUE bt)
case TAG_RETURN:
id = rb_intern("return"); break;
default:
- id = rb_intern("yield"); break;
+ id = rb_intern("noreason"); break;
}
rb_iv_set(exc, "@reason", ID2SYM(id));
- if (bt) set_backtrace(exc, bt);
rb_exc_raise(exc);
}
@@ -1724,7 +1750,8 @@ localjump_error(const char *mesg, VALUE value, int reason, VALUE bt)
* Returns the exit value associated with this +LocalJumpError+.
*/
static VALUE
-localjump_xvalue(VALUE exc)
+localjump_xvalue(exc)
+ VALUE exc;
{
return rb_iv_get(exc, "@exit_value");
}
@@ -1734,18 +1761,21 @@ localjump_xvalue(VALUE exc)
* local_jump_error.reason => symbol
*
* The reason this block was terminated:
- * :break, :redo, :retry, :next, :return, or :yield.
+ * :break, :redo, :retry, :next, :return, or :noreason.
*/
static VALUE
-localjump_reason(VALUE exc)
+localjump_reason(exc)
+ VALUE exc;
{
return rb_iv_get(exc, "@reason");
}
-NORETURN(static void jump_tag_but_local_jump(int,VALUE));
+NORETURN(static void jump_tag_but_local_jump _((int,VALUE)));
static void
-jump_tag_but_local_jump(int state, VALUE val)
+jump_tag_but_local_jump(state, val)
+ int state;
+ VALUE val;
{
if (val == Qundef) val = prot_tag->retval;
@@ -1753,19 +1783,19 @@ jump_tag_but_local_jump(int state, VALUE val)
case 0:
break;
case TAG_RETURN:
- localjump_error("unexpected return", val, state, 0);
+ localjump_error("unexpected return", val, state);
break;
case TAG_BREAK:
- localjump_error("unexpected break", val, state, 0);
+ localjump_error("unexpected break", val, state);
break;
case TAG_NEXT:
- localjump_error("unexpected next", val, state, 0);
+ localjump_error("unexpected next", val, state);
break;
case TAG_REDO:
- localjump_error("unexpected redo", Qnil, state, 0);
+ localjump_error("unexpected redo", Qnil, state);
break;
case TAG_RETRY:
- localjump_error("retry outside of rescue clause", Qnil, state, 0);
+ localjump_error("retry outside of rescue clause", Qnil, state);
break;
default:
break;
@@ -1774,7 +1804,9 @@ jump_tag_but_local_jump(int state, VALUE val)
}
VALUE
-rb_eval_cmd(VALUE cmd, VALUE arg, int level)
+rb_eval_cmd(cmd, arg, level)
+ VALUE cmd, arg;
+ int level;
{
int state;
VALUE val = Qnil; /* OK */
@@ -1785,21 +1817,24 @@ rb_eval_cmd(VALUE cmd, VALUE arg, int level)
level = 4;
}
if (TYPE(cmd) != T_STRING) {
+ PUSH_ITER(ITER_NOT);
PUSH_TAG(PROT_NONE);
ruby_safe_level = level;
if ((state = EXEC_TAG()) == 0) {
- val = rb_funcall2(cmd, rb_intern("yield"),
- RARRAY_LEN(arg), RARRAY_PTR(arg));
+ val = rb_funcall2(cmd, rb_intern("call"), RARRAY(arg)->len, RARRAY(arg)->ptr);
}
ruby_safe_level = safe;
POP_TAG();
+ POP_ITER();
if (state) JUMP_TAG(state);
return val;
}
saved_scope = ruby_scope;
ruby_scope = top_scope;
- PUSH_FRAME(Qfalse);
+ PUSH_FRAME();
+ ruby_frame->last_func = 0;
+ ruby_frame->last_class = 0;
ruby_frame->self = ruby_top_self;
PUSH_CREF(ruby_wrapper ? ruby_wrapper : rb_cObject);
@@ -1821,30 +1856,61 @@ rb_eval_cmd(VALUE cmd, VALUE arg, int level)
}
#define ruby_cbase (ruby_cref->nd_clss)
-VALUE
-ruby_current_class_object()
-{
- return ruby_cbase;
-}
static VALUE
-ev_const_defined(ID id, VALUE self)
+ev_const_defined(cref, id, self)
+ NODE *cref;
+ ID id;
+ VALUE self;
{
- VALUE cbase = ruby_cbase;
- if (NIL_P(cbase)) cbase = rb_obj_class(self);
- return rb_const_defined_fallback(cbase, id, ruby_cref->nd_next);
+ NODE *cbase = cref;
+ VALUE result;
+
+ while (cbase && cbase->nd_next) {
+ struct RClass *klass = RCLASS(cbase->nd_clss);
+
+ if (!NIL_P(klass)) {
+ if (klass->iv_tbl && st_lookup(klass->iv_tbl, id, &result)) {
+ if (result == Qundef && NIL_P(rb_autoload_p((VALUE)klass, id))) {
+ return Qfalse;
+ }
+ return Qtrue;
+ }
+ }
+ cbase = cbase->nd_next;
+ }
+ return rb_const_defined(cref->nd_clss, id);
}
static VALUE
-ev_const_get(ID id, VALUE self)
+ev_const_get(cref, id, self)
+ NODE *cref;
+ ID id;
+ VALUE self;
{
- VALUE cbase = ruby_cbase;
- if (NIL_P(cbase)) cbase = rb_obj_class(self);
- return rb_const_get_fallback(cbase, id, ruby_cref->nd_next);
+ NODE *cbase = cref;
+ VALUE result;
+
+ while (cbase && cbase->nd_next) {
+ VALUE klass = cbase->nd_clss;
+
+ if (!NIL_P(klass)) {
+ while (RCLASS(klass)->iv_tbl &&
+ st_lookup(RCLASS(klass)->iv_tbl, id, &result)) {
+ if (result == Qundef) {
+ if (!RTEST(rb_autoload_load(klass, id))) break;
+ continue;
+ }
+ return result;
+ }
+ }
+ cbase = cbase->nd_next;
+ }
+ return rb_const_get(NIL_P(cref->nd_clss) ? CLASS_OF(self): cref->nd_clss, id);
}
static VALUE
-cvar_cbase(void)
+cvar_cbase()
{
NODE *cref = ruby_cref;
@@ -1876,7 +1942,7 @@ cvar_cbase(void)
*/
static VALUE
-rb_mod_nesting(void)
+rb_mod_nesting()
{
NODE *cbase = ruby_cref;
VALUE ary = rb_ary_new();
@@ -1885,7 +1951,7 @@ rb_mod_nesting(void)
if (!NIL_P(cbase->nd_clss)) rb_ary_push(ary, cbase->nd_clss);
cbase = cbase->nd_next;
}
- if (ruby_wrapper && RARRAY_LEN(ary) == 0) {
+ if (ruby_wrapper && RARRAY(ary)->len == 0) {
rb_ary_push(ary, ruby_wrapper);
}
return ary;
@@ -1906,7 +1972,7 @@ rb_mod_nesting(void)
*/
static VALUE
-rb_mod_s_constants(void)
+rb_mod_s_constants()
{
NODE *cbase = ruby_cref;
void *data = 0;
@@ -1918,16 +1984,17 @@ rb_mod_s_constants(void)
cbase = cbase->nd_next;
}
- if (NIL_P(ruby_cbase)) {
+ if (!NIL_P(ruby_cbase)) {
data = rb_mod_const_of(ruby_cbase, data);
}
return rb_const_list(data);
}
void
-rb_frozen_class_p(VALUE klass)
+rb_frozen_class_p(klass)
+ VALUE klass;
{
- const char *desc = "something(?!)";
+ char *desc = "something(?!)";
if (OBJ_FROZEN(klass)) {
if (FL_TEST(klass, FL_SINGLETON))
@@ -1946,7 +2013,9 @@ rb_frozen_class_p(VALUE klass)
}
void
-rb_undef(VALUE klass, ID id)
+rb_undef(klass, id)
+ VALUE klass;
+ ID id;
{
VALUE origin;
NODE *body;
@@ -1958,12 +2027,12 @@ rb_undef(VALUE klass, ID id)
rb_raise(rb_eSecurityError, "Insecure: can't undef `%s'", rb_id2name(id));
}
rb_frozen_class_p(klass);
- if (id == object_id || id == __send || id == __send_bang || id == init) {
+ if (id == __id__ || id == __send__ || id == init) {
rb_warn("undefining `%s' may cause serious problem", rb_id2name(id));
}
- body = search_method(klass, id, &origin, LOOKUP_NOSKIP, 0);
+ body = search_method(klass, id, &origin);
if (!body || !body->nd_body) {
- const char *s0 = " class";
+ char *s0 = " class";
VALUE c = klass;
if (FL_TEST(c, FL_SINGLETON)) {
@@ -2036,7 +2105,10 @@ rb_undef(VALUE klass, ID id)
*/
static VALUE
-rb_mod_undef_method(int argc, VALUE *argv, VALUE mod)
+rb_mod_undef_method(argc, argv, mod)
+ int argc;
+ VALUE *argv;
+ VALUE mod;
{
int i;
@@ -2047,7 +2119,9 @@ rb_mod_undef_method(int argc, VALUE *argv, VALUE mod)
}
void
-rb_alias(VALUE klass, ID name, ID def)
+rb_alias(klass, name, def)
+ VALUE klass;
+ ID name, def;
{
VALUE origin;
NODE *orig, *body, *node;
@@ -2058,14 +2132,14 @@ rb_alias(VALUE klass, ID name, ID def)
if (klass == rb_cObject) {
rb_secure(4);
}
- orig = search_method(klass, def, &origin, LOOKUP_NOSKIP, 0);
+ orig = search_method(klass, def, &origin);
if (!orig || !orig->nd_body) {
if (TYPE(klass) == T_MODULE) {
- orig = search_method(rb_cObject, def, &origin, LOOKUP_NOSKIP, 0);
+ orig = search_method(rb_cObject, def, &origin);
}
}
if (!orig || !orig->nd_body) {
- raise_undef(klass, def);
+ print_undef(klass, def);
}
if (FL_TEST(klass, FL_SINGLETON)) {
singleton = rb_iv_get(klass, "__attached__");
@@ -2118,17 +2192,19 @@ rb_alias(VALUE klass, ID name, ID def)
*/
static VALUE
-rb_mod_alias_method(VALUE mod, VALUE newname, VALUE oldname)
+rb_mod_alias_method(mod, newname, oldname)
+ VALUE mod, newname, oldname;
{
rb_alias(mod, rb_to_id(newname), rb_to_id(oldname));
return mod;
}
static NODE*
-copy_node_scope(NODE *node, NODE *rval)
+copy_node_scope(node, rval)
+ NODE *node;
+ NODE *rval;
{
- NODE *cref = NEW_NODE(NODE_CREF,rval->nd_clss,0,rval->nd_next);
- NODE *copy = NEW_NODE(NODE_SCOPE,0,cref,node->nd_next);
+ NODE *copy = NEW_NODE(NODE_SCOPE,0,rval,node->nd_next);
if (node->nd_tbl) {
copy->nd_tbl = ALLOC_N(ID, node->nd_tbl[0]+1);
@@ -2151,21 +2227,17 @@ copy_node_scope(NODE *node, NODE *rval)
# define TMP_ALLOC(n) ALLOCA_N(VALUE,n)
#endif
-#define CALLARGS int argc; VALUE *argv; struct BLOCK *block = 0, _block
#define SETUP_ARGS0(anode,extra) do {\
- NODE *n = anode, *bpass = 0;\
- if (n && nd_type(n) == NODE_BLOCK_PASS) {\
- bpass = n;\
- n = n->nd_head;\
- }\
+ NODE *n = anode;\
if (!n) {\
argc = 0;\
argv = 0;\
}\
else if (nd_type(n) == NODE_ARRAY) {\
- argc=n->nd_alen;\
+ argc=anode->nd_alen;\
if (argc > 0) {\
int i;\
+ n = anode;\
argv = TMP_ALLOC(argc+extra);\
for (i=0;i<argc;i++) {\
argv[i] = rb_eval(self,n->nd_head);\
@@ -2181,39 +2253,40 @@ copy_node_scope(NODE *node, NODE *rval)
VALUE args = rb_eval(self,n);\
if (TYPE(args) != T_ARRAY)\
args = rb_ary_to_ary(args);\
- argc = RARRAY_LEN(args);\
+ argc = RARRAY(args)->len;\
argv = TMP_ALLOC(argc+extra);\
- MEMCPY(argv, RARRAY_PTR(args), VALUE, argc);\
- }\
- if (bpass) {\
- volatile VALUE save_block = rb_eval(self, bpass->nd_body); \
- block = passing_block(save_block, &_block);\
+ MEMCPY(argv, RARRAY(args)->ptr, VALUE, argc);\
}\
} while (0)
#define SETUP_ARGS(anode) SETUP_ARGS0(anode,0)
-#define ZSUPER_ARGS() do {\
- argc = ruby_frame->argc;\
- if (argc && DMETHOD_P()) {\
- if (TYPE(RBASIC(ruby_scope)->klass) != T_ARRAY ||\
- RARRAY_LEN(RBASIC(ruby_scope)->klass) != argc) {\
- rb_raise(rb_eRuntimeError, \
- "super: specify arguments explicitly");\
- }\
- argv = RARRAY_PTR(RBASIC(ruby_scope)->klass);\
- }\
- else {\
- argv = ruby_scope->local_vars + 2;\
+#define BEGIN_CALLARGS do {\
+ struct BLOCK *tmp_block = ruby_block;\
+ int tmp_iter = ruby_iter->iter;\
+ switch (tmp_iter) {\
+ case ITER_PRE:\
+ ruby_block = ruby_block->outer;\
+ case ITER_PAS:\
+ tmp_iter = ITER_NOT;\
}\
-} while (0)
+ PUSH_ITER(tmp_iter)
+
+#define END_CALLARGS \
+ ruby_block = tmp_block;\
+ POP_ITER();\
+} while (0)
#define MATCH_DATA *rb_svar(node->nd_cnt)
-static const char* is_defined(VALUE, NODE*, char*, int);
+static char* is_defined _((VALUE, NODE*, char*));
static char*
-arg_defined(VALUE self, NODE *node, char *buf, char *type)
+arg_defined(self, node, buf, type)
+ VALUE self;
+ NODE *node;
+ char *buf;
+ char *type;
{
int argc;
int i;
@@ -2223,33 +2296,36 @@ arg_defined(VALUE self, NODE *node, char *buf, char *type)
argc=node->nd_alen;
if (argc > 0) {
for (i=0;i<argc;i++) {
- if (!is_defined(self, node->nd_head, buf, 0))
+ if (!is_defined(self, node->nd_head, buf))
return 0;
node = node->nd_next;
}
}
}
- else if (!is_defined(self, node, buf, 0)) {
+ else if (!is_defined(self, node, buf)) {
return 0;
}
return type;
}
-static const char*
-is_defined(VALUE self, NODE *node /* OK */, char *buf, int noeval)
+static char*
+is_defined(self, node, buf)
+ VALUE self;
+ NODE *node; /* OK */
+ char *buf;
{
VALUE val; /* OK */
- int state, noex;
- static const char *ex = "expression";
+ int state;
- if (!node) return ex;
+ again:
+ if (!node) return "expression";
switch (nd_type(node)) {
case NODE_SUPER:
case NODE_ZSUPER:
- if (ruby_frame->this_func == 0) return 0;
- else if (ruby_frame->this_class == 0) return 0;
- val = ruby_frame->this_class;
- if (method_exists(RCLASS(val)->super, ruby_frame->this_func, LOOKUP_FCALL)) {
+ if (ruby_frame->last_func == 0) return 0;
+ else if (ruby_frame->last_class == 0) return 0;
+ val = ruby_frame->last_class;
+ if (rb_method_boundp(RCLASS(val)->super, ruby_frame->orig_func, 0)) {
if (nd_type(node) == NODE_SUPER) {
return arg_defined(self, node->nd_args, buf, "super");
}
@@ -2260,30 +2336,40 @@ is_defined(VALUE self, NODE *node /* OK */, char *buf, int noeval)
case NODE_VCALL:
case NODE_FCALL:
val = self;
- noex = LOOKUP_FCALL;
goto check_bound;
case NODE_ATTRASGN:
val = self;
if (node->nd_recv == (NODE *)1) goto check_bound;
case NODE_CALL:
- if (!is_defined(self, node->nd_recv, buf, Qtrue)) return 0;
- if (noeval) return ex;
- noex = LOOKUP_NORMAL;
- val = rb_eval(self, node->nd_recv);
+ PUSH_TAG(PROT_NONE);
+ if ((state = EXEC_TAG()) == 0) {
+ val = rb_eval(self, node->nd_recv);
+ }
+ POP_TAG();
+ if (state) {
+ ruby_errinfo = Qnil;
+ return 0;
+ }
check_bound:
{
- ID id = node->nd_mid;
+ int call = nd_type(node)==NODE_CALL;
val = CLASS_OF(val);
- if (!rb_get_method_body(&val, &id, &noex))
- return 0;
- if (nd_type(node) == NODE_CALL) {
- if ((noex & NOEX_PRIVATE)) return 0;
+ if (call) {
+ int noex;
+ ID id = node->nd_mid;
+
+ if (!rb_get_method_body(&val, &id, &noex))
+ break;
+ if ((noex & NOEX_PRIVATE))
+ break;
if ((noex & NOEX_PROTECTED) &&
!rb_obj_is_kind_of(self, rb_class_real(val)))
- return 0;
+ break;
}
+ else if (!rb_method_boundp(val, node->nd_mid, call))
+ break;
return arg_defined(self, node->nd_args, buf,
nd_type(node) == NODE_ATTRASGN ?
"assignment" : "method");
@@ -2344,7 +2430,7 @@ is_defined(VALUE self, NODE *node /* OK */, char *buf, int noeval)
break;
case NODE_CONST:
- if (ev_const_defined(node->nd_vid, self)) {
+ if (ev_const_defined(ruby_cref, node->nd_vid, self)) {
return "constant";
}
break;
@@ -2356,18 +2442,26 @@ is_defined(VALUE self, NODE *node /* OK */, char *buf, int noeval)
break;
case NODE_COLON2:
- if (!is_defined(self, node->nd_recv, buf, Qtrue)) return 0;
- if (noeval) return ex;
- val = rb_eval(self, node->nd_recv);
- switch (TYPE(val)) {
- case T_CLASS:
- case T_MODULE:
- if (rb_const_defined_from(val, node->nd_mid))
- return "constant";
- break;
- default:
- if (rb_method_boundp(CLASS_OF(val), node->nd_mid, Qtrue)) {
- return "method";
+ PUSH_TAG(PROT_NONE);
+ if ((state = EXEC_TAG()) == 0) {
+ val = rb_eval(self, node->nd_head);
+ }
+ POP_TAG();
+ if (state) {
+ ruby_errinfo = Qnil;
+ return 0;
+ }
+ else {
+ switch (TYPE(val)) {
+ case T_CLASS:
+ case T_MODULE:
+ if (rb_const_defined_from(val, node->nd_mid))
+ return "constant";
+ break;
+ default:
+ if (rb_method_boundp(CLASS_OF(val), node->nd_mid, 1)) {
+ return "method";
+ }
}
}
break;
@@ -2380,7 +2474,6 @@ is_defined(VALUE self, NODE *node /* OK */, char *buf, int noeval)
case NODE_NTH_REF:
if (RTEST(rb_reg_nth_defined(node->nd_nth, MATCH_DATA))) {
- if (!buf) return ex;
sprintf(buf, "$%d", (int)node->nd_nth);
return buf;
}
@@ -2388,12 +2481,15 @@ is_defined(VALUE self, NODE *node /* OK */, char *buf, int noeval)
case NODE_BACK_REF:
if (RTEST(rb_reg_nth_defined(0, MATCH_DATA))) {
- if (!buf) return ex;
sprintf(buf, "$%c", (char)node->nd_nth);
return buf;
}
break;
+ case NODE_NEWLINE:
+ node = node->nd_next;
+ goto again;
+
default:
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
@@ -2401,7 +2497,7 @@ is_defined(VALUE self, NODE *node /* OK */, char *buf, int noeval)
}
POP_TAG();
if (!state) {
- return ex;
+ return "expression";
}
ruby_errinfo = Qnil;
break;
@@ -2409,12 +2505,13 @@ is_defined(VALUE self, NODE *node /* OK */, char *buf, int noeval)
return 0;
}
-static int handle_rescue(VALUE,NODE*);
+static int handle_rescue _((VALUE,NODE*));
-static void blk_free(struct BLOCK *data);
+static void blk_free();
static VALUE
-rb_obj_is_proc(VALUE proc)
+rb_obj_is_proc(proc)
+ VALUE proc;
{
if (TYPE(proc) == T_DATA && RDATA(proc)->dfree == (RUBY_DATA_FUNC)blk_free) {
return Qtrue;
@@ -2423,7 +2520,9 @@ rb_obj_is_proc(VALUE proc)
}
void
-rb_add_event_hook(rb_event_hook_func_t func, rb_event_t events)
+rb_add_event_hook(func, events)
+ rb_event_hook_func_t func;
+ rb_event_t events;
{
rb_event_hook_t *hook;
@@ -2435,9 +2534,9 @@ rb_add_event_hook(rb_event_hook_func_t func, rb_event_t events)
}
int
-rb_remove_event_hook(rb_event_hook_func_t func)
+rb_remove_event_hook(func)
+ rb_event_hook_func_t func;
{
-
rb_event_hook_t *prev, *hook;
prev = NULL;
@@ -2504,7 +2603,8 @@ rb_remove_event_hook(rb_event_hook_func_t func)
static VALUE
-set_trace_func(VALUE obj, VALUE trace)
+set_trace_func(obj, trace)
+ VALUE obj, trace;
{
rb_event_hook_t *hook;
@@ -2526,7 +2626,7 @@ set_trace_func(VALUE obj, VALUE trace)
return trace;
}
-static const char *
+static char *
get_event_name(rb_event_t event)
{
switch (event) {
@@ -2552,27 +2652,33 @@ get_event_name(rb_event_t event)
}
static void
-call_trace_func(rb_event_t event, NODE *node, VALUE self, ID id, VALUE klass /* OK */)
+call_trace_func(event, node, self, id, klass)
+ rb_event_t event;
+ NODE *node;
+ VALUE self;
+ ID id;
+ VALUE klass; /* OK */
{
int state, raised;
struct FRAME *prev;
NODE *node_save;
VALUE srcfile;
- const char *event_name;
+ char *event_name;
if (!trace_func) return;
if (tracing) return;
+ if (ruby_in_compile) return;
if (id == ID_ALLOCATOR) return;
- if (!node && ruby_sourceline == 0) return;
if (!(node_save = ruby_current_node)) {
- node_save = NEW_BEGIN(0);
+ node_save = NEW_NEWLINE(0);
}
tracing = 1;
prev = ruby_frame;
- PUSH_FRAME(Qfalse);
+ PUSH_FRAME();
*ruby_frame = *prev;
ruby_frame->prev = prev;
+ ruby_frame->iter = 0; /* blocks not available anyway */
if (node) {
ruby_current_node = node;
@@ -2597,9 +2703,9 @@ call_trace_func(rb_event_t event, NODE *node, VALUE self, ID id, VALUE klass /*
srcfile,
INT2FIX(ruby_sourceline),
id?ID2SYM(id):Qnil,
- self ? rb_f_binding(self) : Qnil,
- klass?klass:Qnil),
- Qundef, 0, 0);
+ self?rb_f_binding(self):Qnil,
+ klass),
+ Qundef, 0);
}
if (raised) thread_set_raised();
POP_TAG();
@@ -2612,15 +2718,46 @@ call_trace_func(rb_event_t event, NODE *node, VALUE self, ID id, VALUE klass /*
}
static VALUE
-splat(VALUE v, int strict)
+avalue_to_svalue(v)
+ VALUE v;
{
- VALUE tmp;
+ VALUE tmp, top;
+
+ tmp = rb_check_array_type(v);
+ if (NIL_P(tmp)) {
+ return v;
+ }
+ if (RARRAY(tmp)->len == 0) {
+ return Qundef;
+ }
+ if (RARRAY(tmp)->len == 1) {
+ top = rb_check_array_type(RARRAY(tmp)->ptr[0]);
+ if (NIL_P(top)) {
+ return RARRAY(tmp)->ptr[0];
+ }
+ if (RARRAY(top)->len > 1) {
+ return v;
+ }
+ return top;
+ }
+ return tmp;
+}
+
+static VALUE
+svalue_to_avalue(v)
+ VALUE v;
+{
+ VALUE tmp, top;
if (v == Qundef) return rb_ary_new2(0);
- tmp = rb_check_convert_type(v, T_ARRAY, "Array", "to_splat");
+ tmp = rb_check_array_type(v);
if (NIL_P(tmp)) {
- if (strict) {
- rb_raise(rb_eTypeError, "failed to splat");
+ return rb_ary_new3(1, v);
+ }
+ if (RARRAY(tmp)->len == 1) {
+ top = rb_check_array_type(RARRAY(tmp)->ptr[0]);
+ if (!NIL_P(top) && RARRAY(top)->len > 1) {
+ return tmp;
}
return rb_ary_new3(1, v);
}
@@ -2628,19 +2765,77 @@ splat(VALUE v, int strict)
}
static VALUE
-svalue_to_avalue(VALUE v)
+svalue_to_mrhs(v, lhs)
+ VALUE v;
+ NODE *lhs;
+{
+ VALUE tmp;
+
+ if (v == Qundef) return rb_ary_new2(0);
+ tmp = rb_check_array_type(v);
+ if (NIL_P(tmp)) {
+ return rb_ary_new3(1, v);
+ }
+ /* no lhs means splat lhs only */
+ if (!lhs) {
+ return rb_ary_new3(1, v);
+ }
+ return tmp;
+}
+
+static VALUE
+avalue_splat(v)
+ VALUE v;
{
- return splat(v, Qfalse);
+ if (RARRAY(v)->len == 0) {
+ return Qundef;
+ }
+ if (RARRAY(v)->len == 1) {
+ return RARRAY(v)->ptr[0];
+ }
+ return v;
+}
+
+#if 1
+VALUE
+rb_Array(val)
+ VALUE val;
+{
+ VALUE tmp = rb_check_array_type(val);
+
+ if (NIL_P(tmp)) {
+ /* hack to avoid invoke Object#to_a */
+ VALUE origin;
+ ID id = rb_intern("to_a");
+
+ if (search_method(CLASS_OF(val), id, &origin) &&
+ RCLASS(origin)->m_tbl != RCLASS(rb_mKernel)->m_tbl) { /* exclude Kernel#to_a */
+ val = rb_funcall(val, id, 0);
+ if (TYPE(val) != T_ARRAY) {
+ rb_raise(rb_eTypeError, "`to_a' did not return Array");
+ }
+ return val;
+ }
+ else {
+ return rb_ary_new3(1, val);
+ }
+ }
+ return tmp;
}
+#endif
static VALUE
-splat_value(VALUE v)
+splat_value(v)
+ VALUE v;
{
- return splat(v, Qtrue);
+ if (NIL_P(v)) return rb_ary_new3(1, Qnil);
+ return rb_Array(v);
}
static VALUE
-class_prefix(VALUE self, NODE *cpath)
+class_prefix(self, cpath)
+ VALUE self;
+ NODE *cpath;
{
if (!cpath) {
rb_bug("class path missing");
@@ -2653,7 +2848,7 @@ class_prefix(VALUE self, NODE *cpath)
break;
default:
rb_raise(rb_eTypeError, "%s is not a class/module",
- RSTRING_PTR(rb_obj_as_string(c)));
+ RSTRING(rb_obj_as_string(c))->ptr);
}
return c;
}
@@ -2674,80 +2869,31 @@ class_prefix(VALUE self, NODE *cpath)
}\
} while (0)
-NORETURN(static void return_jump(VALUE));
-NORETURN(static void break_jump(VALUE));
-NORETURN(static void next_jump(VALUE));
-NORETURN(static void unknown_node(NODE * volatile));
-
-static VALUE call_super(int, const VALUE*, struct BLOCK*);
-static VALUE call_super_0(VALUE, VALUE, ID mid, int argc, const VALUE*, struct BLOCK *);
+NORETURN(static void return_jump _((VALUE)));
+NORETURN(static void break_jump _((VALUE)));
+NORETURN(static void next_jump _((VALUE)));
+NORETURN(static void unknown_node _((NODE * volatile)));
static void
-unknown_node(NODE *volatile node)
+unknown_node(node)
+ NODE *volatile node;
{
ruby_current_node = 0;
if (node->flags == 0) {
- rb_bug("terminated node (%p)", node);
+ rb_bug("terminated node (0x%lx)", node);
}
else if (BUILTIN_TYPE(node) != T_NODE) {
- rb_bug("not a node 0x%02lx (%p)", BUILTIN_TYPE(node), node);
+ rb_bug("not a node 0x%02lx (0x%lx)", BUILTIN_TYPE(node), node);
}
else {
- rb_bug("unknown node type %d (%p)", nd_type(node), node);
+ rb_bug("unknown node type %d (0x%lx)", nd_type(node), node);
}
}
-static int
-when_cond(VALUE v1, VALUE v2)
-{
- if (v1 == Qundef) {
- return RTEST(v2);
- }
- return RTEST(rb_funcall2(v2, eqq, 1, &v1));
-}
-
-static int
-when_check(NODE *tag, VALUE val, VALUE self)
-{
- VALUE elm;
- long i;
-
- switch (nd_type(tag)) {
- case NODE_ARRAY:
- while (tag) {
- elm = rb_eval(self, tag->nd_head);
- if (when_cond(val, elm)) {
- return Qtrue;
- }
- tag = tag->nd_next;
- }
- break;
- case NODE_SPLAT:
- tag = tag->nd_head;
- splat:
- elm = splat_value(rb_eval(self, tag));
- for (i=0; i<RARRAY_LEN(elm); i++) {
- if (when_cond(val, RARRAY_PTR(elm)[i])) {
- return Qtrue;
- }
- }
- break;
- case NODE_ARGSCAT:
- if (when_check(tag->nd_head, val, self)) return Qtrue;
- tag = tag->nd_body;
- goto splat;
- case NODE_ARGSPUSH:
- if (when_check(tag->nd_head, val, self)) return Qtrue;
- if (when_cond(val, rb_eval(self, tag->nd_body))) return Qtrue;
- default:
- if (when_cond(val, rb_eval(self, tag))) return Qtrue;
- break;
- }
- return Qfalse;
-}
-
static VALUE
-rb_eval(VALUE self, NODE *n)
+rb_eval(self, n)
+ VALUE self;
+ NODE *n;
{
NODE * volatile contnode = 0;
NODE * volatile node = n;
@@ -2763,11 +2909,6 @@ rb_eval(VALUE self, NODE *n)
if (!node) RETURN(Qnil);
ruby_current_node = node;
- if (node->flags & NODE_NEWLINE) {
- EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node, self,
- ruby_frame->this_func,
- ruby_frame->this_class);
- }
switch (nd_type(node)) {
case NODE_BLOCK:
if (contnode) {
@@ -2779,11 +2920,7 @@ rb_eval(VALUE self, NODE *n)
goto again;
case NODE_POSTEXE:
- PUSH_FRAME(Qtrue);
- PUSH_BLOCK(ruby_frame->block, 0, node->nd_body);
rb_f_END();
- POP_BLOCK();
- POP_FRAME();
nd_set_type(node, NODE_NIL); /* exec just once */
result = Qnil;
break;
@@ -2860,13 +2997,10 @@ rb_eval(VALUE self, NODE *n)
case NODE_FALSE:
RETURN(Qfalse);
- case NODE_ERRINFO:
- RETURN(ruby_errinfo);
-
case NODE_IF:
EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node, self,
- ruby_frame->this_func,
- ruby_frame->this_class);
+ ruby_frame->last_func,
+ ruby_frame->last_class);
if (RTEST(rb_eval(self, node->nd_cond))) {
node = node->nd_body;
}
@@ -2875,23 +3009,76 @@ rb_eval(VALUE self, NODE *n)
}
goto again;
+ case NODE_WHEN:
+ while (node) {
+ NODE *tag;
+
+ if (nd_type(node) != NODE_WHEN) goto again;
+ tag = node->nd_head;
+ while (tag) {
+ EXEC_EVENT_HOOK(RUBY_EVENT_LINE, tag, self,
+ ruby_frame->last_func,
+ ruby_frame->last_class);
+ if (tag->nd_head && nd_type(tag->nd_head) == NODE_WHEN) {
+ VALUE v = rb_eval(self, tag->nd_head->nd_head);
+ long i;
+
+ if (TYPE(v) != T_ARRAY) v = rb_ary_to_ary(v);
+ for (i=0; i<RARRAY(v)->len; i++) {
+ if (RTEST(RARRAY(v)->ptr[i])) {
+ node = node->nd_body;
+ goto again;
+ }
+ }
+ tag = tag->nd_next;
+ continue;
+ }
+ if (RTEST(rb_eval(self, tag->nd_head))) {
+ node = node->nd_body;
+ goto again;
+ }
+ tag = tag->nd_next;
+ }
+ node = node->nd_next;
+ }
+ RETURN(Qnil);
+
case NODE_CASE:
{
- VALUE val = Qundef;
+ VALUE val;
- if (node->nd_head)
- val = rb_eval(self, node->nd_head);
+ val = rb_eval(self, node->nd_head);
node = node->nd_body;
while (node) {
+ NODE *tag;
+
if (nd_type(node) != NODE_WHEN) {
goto again;
}
- EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node->nd_head, self,
- ruby_frame->this_func,
- ruby_frame->this_class);
- if (when_check(node->nd_head, val, self)) {
- node = node->nd_body;
- goto again;
+ tag = node->nd_head;
+ while (tag) {
+ EXEC_EVENT_HOOK(RUBY_EVENT_LINE, tag, self,
+ ruby_frame->last_func,
+ ruby_frame->last_class);
+ if (tag->nd_head && nd_type(tag->nd_head) == NODE_WHEN) {
+ VALUE v = rb_eval(self, tag->nd_head->nd_head);
+ long i;
+
+ if (TYPE(v) != T_ARRAY) v = rb_ary_to_ary(v);
+ for (i=0; i<RARRAY(v)->len; i++) {
+ if (RTEST(rb_funcall2(RARRAY(v)->ptr[i], eqq, 1, &val))){
+ node = node->nd_body;
+ goto again;
+ }
+ }
+ tag = tag->nd_next;
+ continue;
+ }
+ if (RTEST(rb_funcall2(rb_eval(self, tag->nd_head), eqq, 1, &val))) {
+ node = node->nd_body;
+ goto again;
+ }
+ tag = tag->nd_next;
}
node = node->nd_next;
}
@@ -2968,15 +3155,53 @@ rb_eval(VALUE self, NODE *n)
if (state) JUMP_TAG(state);
RETURN(result);
- case NODE_LAMBDA:
- PUSH_TAG(PROT_LOOP);
- PUSH_FRAME(Qtrue);
- PUSH_BLOCK(ruby_frame->block, node->nd_var, node->nd_body);
- state = EXEC_TAG();
- result = proc_lambda();
- POP_BLOCK();
- POP_FRAME();
- POP_TAG();
+ case NODE_BLOCK_PASS:
+ result = block_pass(self, node);
+ break;
+
+ case NODE_ITER:
+ case NODE_FOR:
+ {
+ PUSH_TAG(PROT_LOOP);
+ PUSH_BLOCK(node->nd_var, node->nd_body);
+
+ state = EXEC_TAG();
+ if (state == 0) {
+ iter_retry:
+ PUSH_ITER(ITER_PRE);
+ if (nd_type(node) == NODE_ITER) {
+ result = rb_eval(self, node->nd_iter);
+ }
+ else {
+ VALUE recv;
+
+ _block.flags &= ~BLOCK_D_SCOPE;
+ BEGIN_CALLARGS;
+ recv = rb_eval(self, node->nd_iter);
+ END_CALLARGS;
+ ruby_current_node = node;
+ SET_CURRENT_SOURCE();
+ result = rb_call(CLASS_OF(recv),recv,each,0,0,0);
+ }
+ POP_ITER();
+ }
+ else if (state == TAG_BREAK && TAG_DST()) {
+ result = prot_tag->retval;
+ state = 0;
+ }
+ else if (state == TAG_RETRY) {
+ state = 0;
+ goto iter_retry;
+ }
+ POP_BLOCK();
+ POP_TAG();
+ switch (state) {
+ case 0:
+ break;
+ default:
+ JUMP_TAG(state);
+ }
+ }
break;
case NODE_BREAK:
@@ -3006,6 +3231,11 @@ rb_eval(VALUE self, NODE *n)
result = rb_ary_to_ary(rb_eval(self, node->nd_head));
break;
+ case NODE_SVALUE:
+ result = avalue_splat(rb_eval(self, node->nd_head));
+ if (result == Qundef) result = Qnil;
+ break;
+
case NODE_YIELD:
if (node->nd_head) {
result = rb_eval(self, node->nd_head);
@@ -3015,7 +3245,7 @@ rb_eval(VALUE self, NODE *n)
result = Qundef; /* no arg */
}
SET_CURRENT_SOURCE();
- result = rb_yield_0(result, 0, 0, node->nd_state ? YIELD_VALUES : 0);
+ result = rb_yield_0(result, 0, 0, 0, node->nd_state);
break;
case NODE_RESCUE:
@@ -3077,7 +3307,7 @@ rb_eval(VALUE self, NODE *n)
result = rb_eval(self, node->nd_head);
}
POP_TAG();
- if (node->nd_ensr && !thread_no_ensure()) {
+ if (node->nd_ensr) {
VALUE retval = prot_tag->retval; /* save retval */
VALUE errinfo = ruby_errinfo;
@@ -3111,7 +3341,7 @@ rb_eval(VALUE self, NODE *n)
VALUE beg = rb_eval(self, node->nd_beg);
VALUE end = rb_eval(self, node->nd_end);
result = rb_range_new(beg, end, nd_type(node) == NODE_DOT3);
- }
+ }
break;
case NODE_FLIP2: /* like AWK */
@@ -3174,185 +3404,105 @@ rb_eval(VALUE self, NODE *n)
case NODE_ATTRASGN:
{
VALUE recv;
- calling_scope_t scope;
- CALLARGS;
+ int argc; VALUE *argv; /* used in SETUP_ARGS */
+ int scope;
TMP_PROTECT;
+ BEGIN_CALLARGS;
if (node->nd_recv == (NODE *)1) {
recv = self;
- scope = CALLING_FCALL;
+ scope = 1;
}
else {
recv = rb_eval(self, node->nd_recv);
- scope = CALLING_NORMAL;
+ scope = 0;
}
SETUP_ARGS(node->nd_args);
+ END_CALLARGS;
ruby_current_node = node;
SET_CURRENT_SOURCE();
- rb_call(CLASS_OF(recv),recv,node->nd_mid,argc,argv,block,scope,0,self);
+ rb_call(CLASS_OF(recv),recv,node->nd_mid,argc,argv,scope);
result = argv[argc-1];
}
break;
- case NODE_FOR:
- {
- VALUE recv;
- int state;
- struct BLOCK *block;
-
- PUSH_TAG(PROT_LOOP);
- PUSH_BLOCK(block, node->nd_var, node->nd_body);
- state = EXEC_TAG();
- if (state == 0) {
- for_retry:
- block->flags &= ~BLOCK_D_SCOPE;
- recv = rb_eval(self, node->nd_iter);
- ruby_current_node = node;
- SET_CURRENT_SOURCE();
- result = rb_call(CLASS_OF(recv),recv,each,0,0,
- block,CALLING_NORMAL,1,self);
- }
- else if (state == TAG_BREAK && TAG_DST()) {
- result = prot_tag->retval;
- state = 0;
- }
- else if (state == TAG_RETRY) {
- state = 0;
- goto for_retry;
- }
- POP_BLOCK();
- POP_TAG();
- if (state) JUMP_TAG(state);
- }
- break;
-
- case NODE_ITER:
- {
- VALUE recv = self;
- calling_scope_t scope;
- struct BLOCK *block_given;
-
- PUSH_TAG(PROT_LOOP);
- PUSH_BLOCK(block_given, node->nd_var, node->nd_body);
- node = node->nd_iter; /* should be NODE_CALL */
- switch (nd_type(node)) {
- case NODE_CALL:
- scope = CALLING_NORMAL; break;
- case NODE_FCALL:
- scope = CALLING_FCALL; break;
- case NODE_VCALL:
- scope = CALLING_VCALL; break;
- case NODE_SUPER:
- case NODE_ZSUPER:
- scope = CALLING_SUPER; break;
- default:
- /* error! */
- unknown_node(node);
- }
- state = EXEC_TAG();
- if (state == 0) {
- CALLARGS;
- TMP_PROTECT;
-
- iter_retry:
- if (scope == CALLING_NORMAL) {
- recv = rb_eval(self, node->nd_recv);
- }
- if (nd_type(node) == NODE_ZSUPER) {
- ZSUPER_ARGS();
- }
- else {
- SETUP_ARGS(node->nd_args);
- ruby_current_node = node;
- }
- SET_CURRENT_SOURCE();
- switch (scope) {
- case CALLING_SUPER:
- result = call_super(argc, argv, block_given);
- break;
- default:
- result = rb_call(CLASS_OF(recv),recv,node->nd_mid,
- argc,argv,block_given,scope,1,self);
- break;
- }
- }
- else if (state == TAG_BREAK && TAG_DST()) {
- result = prot_tag->retval;
- state = 0;
- }
- else if (state == TAG_RETRY) {
- state = 0;
- goto iter_retry;
- }
- POP_BLOCK();
- POP_TAG();
- if (state) JUMP_TAG(state);
- }
- break;
-
case NODE_CALL:
{
VALUE recv;
- CALLARGS;
+ int argc; VALUE *argv; /* used in SETUP_ARGS */
TMP_PROTECT;
+ BEGIN_CALLARGS;
recv = rb_eval(self, node->nd_recv);
SETUP_ARGS(node->nd_args);
+ END_CALLARGS;
ruby_current_node = node;
SET_CURRENT_SOURCE();
- result = rb_call(CLASS_OF(recv),recv,node->nd_mid,argc,argv,
- block,CALLING_NORMAL,0,self);
+ result = rb_call(CLASS_OF(recv),recv,node->nd_mid,argc,argv,0);
}
break;
case NODE_FCALL:
{
- CALLARGS;
+ int argc; VALUE *argv; /* used in SETUP_ARGS */
TMP_PROTECT;
+ BEGIN_CALLARGS;
SETUP_ARGS(node->nd_args);
+ END_CALLARGS;
ruby_current_node = node;
SET_CURRENT_SOURCE();
- result = rb_call(CLASS_OF(self),self,node->nd_mid,argc,argv,
- block,CALLING_FCALL,0,self);
+ result = rb_call(CLASS_OF(self),self,node->nd_mid,argc,argv,1);
}
break;
case NODE_VCALL:
SET_CURRENT_SOURCE();
- result = rb_call(CLASS_OF(self),self,node->nd_mid,0,0,0,CALLING_VCALL,0,self);
+ result = rb_call(CLASS_OF(self),self,node->nd_mid,0,0,2);
break;
case NODE_SUPER:
case NODE_ZSUPER:
{
- CALLARGS;
+ int argc; VALUE *argv; /* used in SETUP_ARGS */
TMP_PROTECT;
- if (ruby_frame->this_class == 0) {
- if (ruby_frame->this_func) {
- rb_name_error(ruby_frame->callee,
+ if (ruby_frame->last_class == 0) {
+ if (ruby_frame->last_func) {
+ rb_name_error(ruby_frame->last_func,
"superclass method `%s' disabled",
- rb_id2name(ruby_frame->this_func));
+ rb_id2name(ruby_frame->orig_func));
}
else {
rb_raise(rb_eNoMethodError, "super called outside of method");
}
}
if (nd_type(node) == NODE_ZSUPER) {
- ZSUPER_ARGS();
- SET_CURRENT_SOURCE();
- result = rb_call_super(argc, argv);
+ argc = ruby_frame->argc;
+ if (argc && DMETHOD_P()) {
+ if (TYPE(RBASIC(ruby_scope)->klass) != T_ARRAY ||
+ RARRAY(RBASIC(ruby_scope)->klass)->len != argc) {
+ rb_raise(rb_eRuntimeError,
+ "super: specify arguments explicitly");
+ }
+ argv = RARRAY(RBASIC(ruby_scope)->klass)->ptr;
+ }
+ else {
+ argv = ruby_scope->local_vars + 2;
+ }
}
else {
+ BEGIN_CALLARGS;
SETUP_ARGS(node->nd_args);
+ END_CALLARGS;
ruby_current_node = node;
- SET_CURRENT_SOURCE();
- result = call_super(argc, argv, block);
}
+
+ SET_CURRENT_SOURCE();
+ result = rb_call_super(argc, argv);
}
break;
@@ -3396,14 +3546,14 @@ rb_eval(VALUE self, NODE *n)
case NODE_OP_ASGN1:
{
- CALLARGS;
+ int argc; VALUE *argv; /* used in SETUP_ARGS */
VALUE recv, val, tmp;
NODE *rval;
TMP_PROTECT;
recv = rb_eval(self, node->nd_recv);
rval = node->nd_args->nd_head;
- SETUP_ARGS0(node->nd_args->nd_body,1);
+ SETUP_ARGS0(node->nd_args->nd_body, 1);
val = rb_funcall3(recv, aref, argc, argv);
switch (node->nd_mid) {
case 0: /* OR */
@@ -3419,7 +3569,7 @@ rb_eval(VALUE self, NODE *n)
val = rb_funcall3(val, node->nd_mid, 1, &tmp);
}
argv[argc] = val;
- rb_funcall3(recv, aset, argc+1, argv);
+ rb_funcall2(recv, aset, argc+1, argv);
result = val;
}
break;
@@ -3445,7 +3595,7 @@ rb_eval(VALUE self, NODE *n)
val = rb_funcall3(val, node->nd_next->nd_mid, 1, &tmp);
}
- rb_funcall3(recv, node->nd_next->nd_aid, 1, &val);
+ rb_funcall2(recv, node->nd_next->nd_aid, 1, &val);
result = val;
}
break;
@@ -3457,7 +3607,7 @@ rb_eval(VALUE self, NODE *n)
goto again;
case NODE_OP_ASGN_OR:
- if ((node->nd_aid && !is_defined(self, node->nd_head, 0, 0)) ||
+ if ((node->nd_aid && !is_defined(self, node->nd_head, 0)) ||
!RTEST(result = rb_eval(self, node->nd_head))) {
node = node->nd_value;
goto again;
@@ -3538,7 +3688,7 @@ rb_eval(VALUE self, NODE *n)
break;
case NODE_CONST:
- result = ev_const_get(node->nd_vid, self);
+ result = ev_const_get(ruby_cref, node->nd_vid, self);
break;
case NODE_CVAR:
@@ -3570,7 +3720,7 @@ rb_eval(VALUE self, NODE *n)
break;
default:
rb_raise(rb_eTypeError, "%s is not a class/module",
- RSTRING_PTR(rb_obj_as_string(klass)));
+ RSTRING(rb_obj_as_string(klass))->ptr);
break;
}
}
@@ -3639,37 +3789,20 @@ rb_eval(VALUE self, NODE *n)
i = node->nd_alen;
ary = rb_ary_new2(i);
for (i=0;node;node=node->nd_next) {
- rb_ary_push(ary, rb_eval(self, node->nd_head));
+ RARRAY(ary)->ptr[i++] = rb_eval(self, node->nd_head);
+ RARRAY(ary)->len = i;
}
result = ary;
}
break;
- case NODE_VALUES:
- {
- VALUE val;
- long i;
-
- i = node->nd_alen;
- val = rb_ary_new2(i);
- for (i=0;node;node=node->nd_next) {
- rb_ary_push(val, rb_eval(self, node->nd_head));
- }
-
- result = val;
- }
- break;
-
case NODE_STR:
result = rb_str_new3(node->nd_lit);
break;
case NODE_EVSTR:
- if (!node->nd_body) result = rb_str_new(0,0);
- else {
- result = rb_obj_as_string(rb_eval(self, node->nd_body));
- }
+ result = rb_obj_as_string(rb_eval(self, node->nd_body));
break;
case NODE_DSTR:
@@ -3699,11 +3832,11 @@ rb_eval(VALUE self, NODE *n)
}
switch (nd_type(node)) {
case NODE_DREGX:
- result = rb_reg_new(RSTRING_PTR(str), RSTRING_LEN(str),
+ result = rb_reg_new(RSTRING(str)->ptr, RSTRING(str)->len,
node->nd_cflag);
break;
case NODE_DREGX_ONCE: /* regexp expand once */
- result = rb_reg_new(RSTRING_PTR(str), RSTRING_LEN(str),
+ result = rb_reg_new(RSTRING(str)->ptr, RSTRING(str)->len,
node->nd_cflag);
nd_set_type(node, NODE_LIT);
node->nd_lit = result;
@@ -3738,46 +3871,41 @@ rb_eval(VALUE self, NODE *n)
VALUE origin;
int noex;
- if (NIL_P(ruby_cbase)) {
- rb_raise(rb_eTypeError, "no class/module to define method");
+ if (NIL_P(ruby_class)) {
+ rb_raise(rb_eTypeError, "no class/module to add method");
}
- if (ruby_cbase == rb_cObject && node->nd_mid == init) {
+ if (ruby_class == rb_cObject && node->nd_mid == init) {
rb_warn("redefining Object#initialize may cause infinite loop");
}
- if (node->nd_mid == object_id ||
- node->nd_mid == __send || node->nd_mid == __send_bang) {
+ if (node->nd_mid == __id__ || node->nd_mid == __send__) {
rb_warn("redefining `%s' may cause serious problem",
rb_id2name(node->nd_mid));
}
- rb_frozen_class_p(ruby_cbase);
- body = search_method(ruby_cbase, node->nd_mid, &origin, LOOKUP_NOSKIP, 0);
+ rb_frozen_class_p(ruby_class);
+ body = search_method(ruby_class, node->nd_mid, &origin);
if (body){
- if (RTEST(ruby_verbose) && ruby_cbase == origin &&
- body->nd_cnt == 0 && body->nd_body) {
+ if (RTEST(ruby_verbose) && ruby_class == origin && body->nd_cnt == 0 && body->nd_body) {
rb_warning("method redefined; discarding old %s", rb_id2name(node->nd_mid));
}
}
- if (VIS_TEST(VIS_PRIVATE) || node->nd_mid == init) {
+ if (SCOPE_TEST(SCOPE_PRIVATE) || node->nd_mid == init) {
noex = NOEX_PRIVATE;
}
- else if (VIS_TEST(VIS_LOCAL)) {
- noex = NOEX_LOCAL;
- }
- else if (VIS_TEST(VIS_PROTECTED)) {
+ else if (SCOPE_TEST(SCOPE_PROTECTED)) {
noex = NOEX_PROTECTED;
}
else {
noex = NOEX_PUBLIC;
}
- if (body && origin == ruby_cbase && body->nd_body == 0) {
+ if (body && origin == ruby_class && body->nd_body == 0) {
noex |= NOEX_NOSUPER;
}
defn = copy_node_scope(node->nd_defn, ruby_cref);
- rb_add_method(ruby_cbase, node->nd_mid, defn, noex);
- if (VIS_MODE() == VIS_MODFUNC) {
- rb_add_method(rb_singleton_class(ruby_cbase),
+ rb_add_method(ruby_class, node->nd_mid, defn, noex);
+ if (scope_vmode == SCOPE_MODFUNC) {
+ rb_add_method(rb_singleton_class(ruby_class),
node->nd_mid, defn, NOEX_PUBLIC);
}
result = Qnil;
@@ -3818,18 +3946,18 @@ rb_eval(VALUE self, NODE *n)
break;
case NODE_UNDEF:
- if (NIL_P(ruby_cbase)) {
+ if (NIL_P(ruby_class)) {
rb_raise(rb_eTypeError, "no class to undef method");
}
- rb_undef(ruby_cbase, rb_to_id(rb_eval(self, node->u2.node)));
+ rb_undef(ruby_class, rb_to_id(rb_eval(self, node->u2.node)));
result = Qnil;
break;
case NODE_ALIAS:
- if (NIL_P(ruby_cbase)) {
+ if (NIL_P(ruby_class)) {
rb_raise(rb_eTypeError, "no class to make alias");
}
- rb_alias(ruby_cbase, rb_to_id(rb_eval(self, node->u1.node)),
+ rb_alias(ruby_class, rb_to_id(rb_eval(self, node->u1.node)),
rb_to_id(rb_eval(self, node->u2.node)));
result = Qnil;
break;
@@ -3919,12 +4047,12 @@ rb_eval(VALUE self, NODE *n)
module = rb_define_module_id(cname);
rb_set_class_path(module, cbase, rb_id2name(cname));
rb_const_set(cbase, cname, module);
- rb_obj_call_init(module, 0, 0);
}
if (ruby_wrapper) {
rb_extend_object(module, ruby_wrapper);
rb_include_module(module, ruby_wrapper);
}
+
result = module_setup(module, node);
}
break;
@@ -3935,7 +4063,7 @@ rb_eval(VALUE self, NODE *n)
result = rb_eval(self, node->nd_recv);
if (FIXNUM_P(result) || SYMBOL_P(result)) {
- rb_raise(rb_eTypeError, "no singleton class for %s",
+ rb_raise(rb_eTypeError, "no virtual class for %s",
rb_obj_classname(result));
}
if (ruby_safe_level >= 4 && !OBJ_TAINTED(result))
@@ -3954,13 +4082,20 @@ rb_eval(VALUE self, NODE *n)
case NODE_DEFINED:
{
char buf[20];
- const char *desc = is_defined(self, node->nd_head, buf, 0);
+ char *desc = is_defined(self, node->nd_head, buf);
if (desc) result = rb_str_new2(desc);
else result = Qnil;
}
break;
+ case NODE_NEWLINE:
+ EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node, self,
+ ruby_frame->last_func,
+ ruby_frame->last_class);
+ node = node->nd_next;
+ goto again;
+
default:
unknown_node(node);
}
@@ -3975,7 +4110,9 @@ rb_eval(VALUE self, NODE *n)
}
static VALUE
-module_setup(VALUE module, NODE *n)
+module_setup(module, n)
+ VALUE module;
+ NODE *n;
{
NODE * volatile node = n->nd_body;
int state;
@@ -3987,6 +4124,7 @@ module_setup(VALUE module, NODE *n)
frame.tmp = ruby_frame;
ruby_frame = &frame;
+ PUSH_CLASS(module);
PUSH_SCOPE();
PUSH_VARS();
@@ -4003,21 +4141,21 @@ module_setup(VALUE module, NODE *n)
}
PUSH_CREF(module);
- VIS_SET(VIS_PUBLIC);
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
EXEC_EVENT_HOOK(RUBY_EVENT_CLASS, n, ruby_cbase,
- ruby_frame->this_func, ruby_frame->this_class);
+ ruby_frame->last_func, ruby_frame->last_class);
result = rb_eval(ruby_cbase, node->nd_next);
}
POP_TAG();
POP_CREF();
POP_VARS();
POP_SCOPE();
+ POP_CLASS();
ruby_frame = frame.tmp;
- EXEC_EVENT_HOOK(RUBY_EVENT_END, n, 0, ruby_frame->this_func,
- ruby_frame->this_class);
+ EXEC_EVENT_HOOK(RUBY_EVENT_END, n, 0,
+ ruby_frame->last_func, ruby_frame->last_class);
if (state) JUMP_TAG(state);
return result;
@@ -4026,7 +4164,10 @@ module_setup(VALUE module, NODE *n)
static NODE *basic_respond_to = 0;
int
-rb_obj_respond_to(VALUE obj, ID id, int priv)
+rb_obj_respond_to(obj, id, priv)
+ VALUE obj;
+ ID id;
+ int priv;
{
VALUE klass = CLASS_OF(obj);
@@ -4043,7 +4184,9 @@ rb_obj_respond_to(VALUE obj, ID id, int priv)
}
int
-rb_respond_to(VALUE obj, ID id)
+rb_respond_to(obj, id)
+ VALUE obj;
+ ID id;
{
return rb_obj_respond_to(obj, id, Qfalse);
}
@@ -4058,7 +4201,10 @@ rb_respond_to(VALUE obj, ID id)
*/
static VALUE
-obj_respond_to(int argc, VALUE *argv, VALUE obj)
+obj_respond_to(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
VALUE mid, priv;
ID id;
@@ -4073,12 +4219,11 @@ obj_respond_to(int argc, VALUE *argv, VALUE obj)
/*
* call-seq:
- * mod.method_defined?(symbol, inherit=true) => true or false
+ * mod.method_defined?(symbol) => true or false
*
* Returns +true+ if the named method is defined by
* _mod_ (or its included modules and, if _mod_ is a class,
- * its ancestors, if _inherit_ is true). Public and protected
- * methods are matched.
+ * its ancestors). Public and protected methods are matched.
*
* module A
* def method1() end
@@ -4096,27 +4241,13 @@ obj_respond_to(int argc, VALUE *argv, VALUE obj)
* C.method_defined? "method2" #=> true
* C.method_defined? "method3" #=> true
* C.method_defined? "method4" #=> false
- * C.method_defined?("method2", false) #=> false
*/
static VALUE
-rb_mod_method_defined(int argc, VALUE *argv, VALUE mod)
+rb_mod_method_defined(mod, mid)
+ VALUE mod, mid;
{
- VALUE mid, recur;
- ID id;
-
- if (argc == 1) {
- recur = Qtrue;
- mid = argv[0];
- }
- else {
- rb_scan_args(argc, argv, "11", &mid, &recur);
- }
- id = rb_to_id(mid);
- if (!RTEST(recur)) {
- return st_is_member(RCLASS(mod)->m_tbl, id) ? Qtrue : Qfalse;
- }
- return rb_method_boundp(mod, id, Qtrue);
+ return rb_method_boundp(mod, rb_to_id(mid), 1);
}
#define VISI_CHECK(x,f) (((x)&NOEX_MASK) == (f))
@@ -4148,10 +4279,11 @@ rb_mod_method_defined(int argc, VALUE *argv, VALUE mod)
*/
static VALUE
-rb_mod_public_method_defined(VALUE mod, VALUE mid)
+rb_mod_public_method_defined(mod, mid)
+ VALUE mod, mid;
{
ID id = rb_to_id(mid);
- int noex = LOOKUP_NOSKIP;
+ int noex;
if (rb_get_method_body(&mod, &id, &noex)) {
if (VISI_CHECK(noex, NOEX_PUBLIC))
@@ -4187,10 +4319,11 @@ rb_mod_public_method_defined(VALUE mod, VALUE mid)
*/
static VALUE
-rb_mod_private_method_defined(VALUE mod, VALUE mid)
+rb_mod_private_method_defined(mod, mid)
+ VALUE mod, mid;
{
ID id = rb_to_id(mid);
- int noex = LOOKUP_NOSKIP;
+ int noex;
if (rb_get_method_body(&mod, &id, &noex)) {
if (VISI_CHECK(noex, NOEX_PRIVATE))
@@ -4226,10 +4359,11 @@ rb_mod_private_method_defined(VALUE mod, VALUE mid)
*/
static VALUE
-rb_mod_protected_method_defined(VALUE mod, VALUE mid)
+rb_mod_protected_method_defined(mod, mid)
+ VALUE mod, mid;
{
ID id = rb_to_id(mid);
- int noex = LOOKUP_NOSKIP;
+ int noex;
if (rb_get_method_body(&mod, &id, &noex)) {
if (VISI_CHECK(noex, NOEX_PROTECTED))
@@ -4238,9 +4372,11 @@ rb_mod_protected_method_defined(VALUE mod, VALUE mid)
return Qfalse;
}
-NORETURN(static VALUE terminate_process(int, VALUE));
+NORETURN(static VALUE terminate_process _((int, VALUE)));
static VALUE
-terminate_process(int status, VALUE mesg)
+terminate_process(status, mesg)
+ int status;
+ VALUE mesg;
{
VALUE args[2];
args[0] = INT2NUM(status);
@@ -4250,7 +4386,8 @@ terminate_process(int status, VALUE mesg)
}
void
-rb_exit(int status)
+rb_exit(status)
+ int status;
{
if (prot_tag) {
terminate_process(status, rb_str_new("exit", 4));
@@ -4299,7 +4436,9 @@ rb_exit(int status)
*/
VALUE
-rb_f_exit(int argc, VALUE *argv)
+rb_f_exit(argc, argv)
+ int argc;
+ VALUE *argv;
{
VALUE status;
int istatus;
@@ -4341,7 +4480,9 @@ rb_f_exit(int argc, VALUE *argv)
*/
VALUE
-rb_f_abort(int argc, VALUE *argv)
+rb_f_abort(argc, argv)
+ int argc;
+ VALUE *argv;
{
rb_secure(4);
if (argc == 0) {
@@ -4362,16 +4503,18 @@ rb_f_abort(int argc, VALUE *argv)
}
void
-rb_iter_break(void)
+rb_iter_break()
{
break_jump(Qnil);
}
-NORETURN(static void rb_longjmp(int, VALUE));
-static VALUE make_backtrace(void);
+NORETURN(static void rb_longjmp _((int, VALUE)));
+static VALUE make_backtrace _((void));
static void
-rb_longjmp(int tag, VALUE mesg)
+rb_longjmp(tag, mesg)
+ int tag;
+ VALUE mesg;
{
VALUE at;
@@ -4403,11 +4546,11 @@ rb_longjmp(int tag, VALUE mesg)
PUSH_TAG(PROT_NONE);
if ((status = EXEC_TAG()) == 0) {
- e = rb_obj_as_string(e);
+ StringValue(e);
warn_printf("Exception `%s' at %s:%d - %s\n",
rb_obj_classname(ruby_errinfo),
ruby_sourcefile, ruby_sourceline,
- RSTRING_PTR(e));
+ RSTRING(e)->ptr);
}
POP_TAG();
if (status == TAG_FATAL && ruby_errinfo == exception_error) {
@@ -4423,8 +4566,8 @@ rb_longjmp(int tag, VALUE mesg)
if (tag != TAG_FATAL) {
EXEC_EVENT_HOOK(RUBY_EVENT_RAISE, ruby_current_node,
ruby_frame->self,
- ruby_frame->this_func,
- ruby_frame->this_class);
+ ruby_frame->last_func,
+ ruby_frame->last_class);
}
if (!prot_tag) {
error_print();
@@ -4434,19 +4577,21 @@ rb_longjmp(int tag, VALUE mesg)
}
void
-rb_exc_raise(VALUE mesg)
+rb_exc_raise(mesg)
+ VALUE mesg;
{
rb_longjmp(TAG_RAISE, mesg);
}
void
-rb_exc_fatal(VALUE mesg)
+rb_exc_fatal(mesg)
+ VALUE mesg;
{
rb_longjmp(TAG_FATAL, mesg);
}
void
-rb_interrupt(void)
+rb_interrupt()
{
rb_raise(rb_eInterrupt, "");
}
@@ -4476,14 +4621,18 @@ rb_interrupt(void)
*/
static VALUE
-rb_f_raise(int argc, VALUE *argv)
+rb_f_raise(argc, argv)
+ int argc;
+ VALUE *argv;
{
rb_raise_jump(rb_make_exception(argc, argv));
return Qnil; /* not reached */
}
static VALUE
-rb_make_exception(int argc, VALUE *argv)
+rb_make_exception(argc, argv)
+ int argc;
+ VALUE *argv;
{
VALUE mesg;
ID exception;
@@ -4528,10 +4677,11 @@ rb_make_exception(int argc, VALUE *argv)
}
static void
-rb_raise_jump(VALUE mesg)
+rb_raise_jump(mesg)
+ VALUE mesg;
{
if (ruby_frame != top_frame) {
- PUSH_FRAME(Qfalse); /* fake frame */
+ PUSH_FRAME(); /* fake frame */
*ruby_frame = *_frame.prev->prev;
rb_longjmp(TAG_RAISE, mesg);
POP_FRAME();
@@ -4540,20 +4690,22 @@ rb_raise_jump(VALUE mesg)
}
void
-rb_jump_tag(int tag)
+rb_jump_tag(tag)
+ int tag;
{
JUMP_TAG(tag);
}
int
-rb_block_given_p(void)
+rb_block_given_p()
{
- if (ruby_frame->block) return Qtrue;
+ if (ruby_frame->iter == ITER_CUR && ruby_block)
+ return Qtrue;
return Qfalse;
}
int
-rb_iterator_p(void)
+rb_iterator_p()
{
return rb_block_given_p();
}
@@ -4581,21 +4733,23 @@ rb_iterator_p(void)
static VALUE
-rb_f_block_given_p(void)
+rb_f_block_given_p()
{
- if (ruby_frame->prev && ruby_frame->prev->block)
+ if (ruby_frame->prev && ruby_frame->prev->iter == ITER_CUR && ruby_block)
return Qtrue;
return Qfalse;
}
-VALUE rb_eThreadError;
+static VALUE rb_eThreadError;
NORETURN(static void proc_jump_error(int, VALUE));
static void
-proc_jump_error(int state, VALUE result)
+proc_jump_error(state, result)
+ int state;
+ VALUE result;
{
char mesg[32];
- const char *statement;
+ char *statement;
switch (state) {
case TAG_BREAK:
@@ -4608,34 +4762,43 @@ proc_jump_error(int state, VALUE result)
statement = "local-jump"; break; /* should not happen */
}
snprintf(mesg, sizeof mesg, "%s from proc-closure", statement);
- localjump_error(mesg, result, state, 0);
+ localjump_error(mesg, result, state);
}
-NORETURN(static void return_jump(VALUE));
static void
-return_jump(VALUE retval)
+return_jump(retval)
+ VALUE retval;
{
struct tag *tt = prot_tag;
+ int yield = Qfalse;
if (retval == Qundef) retval = Qnil;
while (tt) {
- if ((tt->tag == PROT_FUNC && tt->frame->uniq == ruby_frame->uniq) ||
- (tt->tag == PROT_LAMBDA))
- {
+ if (tt->tag == PROT_YIELD) {
+ yield = Qtrue;
+ tt = tt->prev;
+ }
+ if (tt->tag == PROT_FUNC && tt->frame->uniq == ruby_frame->uniq) {
+ tt->dst = (VALUE)ruby_frame->uniq;
+ tt->retval = retval;
+ JUMP_TAG(TAG_RETURN);
+ }
+ if (tt->tag == PROT_LAMBDA && !yield) {
tt->dst = (VALUE)tt->frame->uniq;
tt->retval = retval;
JUMP_TAG(TAG_RETURN);
}
- if (tt->tag == PROT_THREAD && tt->prev) {
+ if (tt->tag == PROT_THREAD) {
rb_raise(rb_eThreadError, "return can't jump across threads");
}
tt = tt->prev;
}
- localjump_error("unexpected return", retval, TAG_RETURN, 0);
+ localjump_error("unexpected return", retval, TAG_RETURN);
}
static void
-break_jump(VALUE retval)
+break_jump(retval)
+ VALUE retval;
{
struct tag *tt = prot_tag;
@@ -4643,11 +4806,9 @@ break_jump(VALUE retval)
while (tt) {
switch (tt->tag) {
case PROT_THREAD:
- /* skip toplevel tag */
- if (!tt->prev) break;
case PROT_YIELD:
- case PROT_LAMBDA:
case PROT_LOOP:
+ case PROT_LAMBDA:
tt->dst = (VALUE)tt->frame->uniq;
tt->retval = retval;
JUMP_TAG(TAG_BREAK);
@@ -4660,11 +4821,12 @@ break_jump(VALUE retval)
}
tt = tt->prev;
}
- localjump_error("unexpected break", retval, TAG_BREAK, 0);
+ localjump_error("unexpected break", retval, TAG_BREAK);
}
static void
-next_jump(VALUE retval)
+next_jump(retval)
+ VALUE retval;
{
struct tag *tt = prot_tag;
@@ -4672,11 +4834,9 @@ next_jump(VALUE retval)
while (tt) {
switch (tt->tag) {
case PROT_THREAD:
- /* skip toplevel tag */
- if (!tt->prev) break;
case PROT_YIELD:
- case PROT_LAMBDA:
case PROT_LOOP:
+ case PROT_LAMBDA:
case PROT_FUNC:
tt->dst = (VALUE)tt->frame->uniq;
tt->retval = retval;
@@ -4687,24 +4847,23 @@ next_jump(VALUE retval)
}
tt = tt->prev;
}
- localjump_error("unexpected next", retval, TAG_NEXT, 0);
+ localjump_error("unexpected next", retval, TAG_NEXT);
}
-static VALUE bmcall(VALUE, VALUE);
-static int method_arity(VALUE);
-
void
-rb_need_block(void)
+rb_need_block()
{
if (!rb_block_given_p()) {
- localjump_error("no block given", Qnil, 0, 0);
+ localjump_error("no block given", Qnil, 0);
}
}
static VALUE
-rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags)
+rb_yield_0(val, self, klass, flags, avalue)
+ VALUE val, self, klass; /* OK */
+ int flags, avalue;
{
- NODE *node, *var;
+ NODE *node;
volatile VALUE result = Qnil;
volatile VALUE old_cref;
volatile VALUE old_wrapper;
@@ -4713,13 +4872,13 @@ rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags)
int old_vmode;
struct FRAME frame;
NODE *cnode = ruby_current_node;
- int lambda, call;
- int state, broken = 0;
+ int lambda = flags & YIELD_LAMBDA_CALL;
+ int state;
rb_need_block();
PUSH_VARS();
- block = ruby_frame->block;
+ block = ruby_block;
frame = block->frame;
frame.prev = ruby_frame;
frame.node = cnode;
@@ -4730,8 +4889,9 @@ rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags)
ruby_wrapper = block->wrapper;
old_scope = ruby_scope;
ruby_scope = block->scope;
- old_vmode = vis_mode;
- vis_mode = (flags & YIELD_PUBLIC_DEF) ? VIS_PUBLIC : block->vmode;
+ old_vmode = scope_vmode;
+ scope_vmode = (flags & YIELD_PUBLIC_DEF) ? SCOPE_PUBLIC : block->vmode;
+ ruby_block = block->prev;
if (block->flags & BLOCK_D_SCOPE) {
/* put place holder for dynamic (in-block) local variables */
ruby_dyna_vars = new_dvar(0, 0, block->dyna_vars);
@@ -4740,121 +4900,88 @@ rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags)
/* FOR does not introduce new scope */
ruby_dyna_vars = block->dyna_vars;
}
- if (klass) PUSH_CREF(klass);
- else {
+ PUSH_CLASS(klass ? klass : block->klass);
+ if (!klass) {
self = block->self;
}
node = block->body;
- var = block->var;
- lambda = block->flags & BLOCK_LAMBDA;
- call = flags & YIELD_CALL;
- if (var) {
+
+ if (block->var) {
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
- NODE *bvar = NULL;
- block_var:
- if (var == (NODE*)1) { /* no parameter || */
- if (lambda && val != Qundef) {
- if (TYPE(val) != T_ARRAY) {
- rb_raise(rb_eArgError, "wrong number of arguments (1 for 0)");
- }
- else if (RARRAY_LEN(val) != 0) {
- rb_raise(rb_eArgError, "wrong number of arguments (%ld for 0)",
- RARRAY_LEN(val));
- }
+ if (block->var == (NODE*)1) { /* no parameter || */
+ if (lambda && RARRAY(val)->len != 0) {
+ rb_raise(rb_eArgError, "wrong number of arguments (%ld for 0)",
+ RARRAY(val)->len);
}
}
- else if (var == (NODE*)2) {
- if (TYPE(val) == T_ARRAY && RARRAY_LEN(val) != 0) {
+ else if (block->var == (NODE*)2) {
+ if (TYPE(val) == T_ARRAY && RARRAY(val)->len != 0) {
rb_raise(rb_eArgError, "wrong number of arguments (%ld for 0)",
- RARRAY_LEN(val));
+ RARRAY(val)->len);
}
}
- else if (!bvar && nd_type(var) == NODE_BLOCK_PASS) {
- bvar = var->nd_body;
- var = var->nd_args;
- goto block_var;
- }
- else if (nd_type(var) == NODE_ARGS) {
- if (!(flags & YIELD_VALUES)) val = svalue_to_avalue(val);
- formal_assign(self, var, RARRAY_LEN(val), RARRAY_PTR(val), 0);
- }
- else if (nd_type(var) == NODE_BLOCK) {
- if (var->nd_next) {
- bvar = var->nd_next->nd_head;
+ else if (nd_type(block->var) == NODE_MASGN) {
+ if (!avalue) {
+ val = svalue_to_mrhs(val, block->var->nd_head);
}
- var = var->nd_head;
- goto block_var;
- }
- else if (nd_type(var) == NODE_MASGN) {
- massign(self, var, val, lambda);
+ massign(self, block->var, val, lambda);
}
else {
- if (lambda && val == Qundef) {
- rb_raise(rb_eArgError, "wrong number of arguments (0 for 1)");
- }
- if (call) {
- if (lambda && RARRAY_LEN(val) != 1) {
- rb_raise(rb_eArgError, "wrong number of arguments (%ld for 1)",
- RARRAY_LEN(val));
+ int len = 0;
+ if (avalue) {
+ len = RARRAY(val)->len;
+ if (len == 0) {
+ goto zero_arg;
+ }
+ if (len == 1) {
+ val = RARRAY(val)->ptr[0];
+ }
+ else {
+ goto multi_values;
}
- if (RARRAY_LEN(val) == 0)
- val = Qnil;
- else
- val = RARRAY_PTR(val)[0];
- }
- assign(self, var, val, lambda);
- }
- if (bvar) {
- struct BLOCK *b = ruby_frame->prev->prev->block;
- VALUE blk;
-
- if ((flags & YIELD_PROC_INVOKE) && b) {
- blk = proc_alloc(rb_cProc, b, lambda);
}
- else {
- blk = Qnil;
+ else if (val == Qundef) {
+ zero_arg:
+ val = Qnil;
+ multi_values:
+ {
+ ruby_current_node = block->var;
+ rb_warn("multiple values for a block parameter (%d for 1)\n\tfrom %s:%d",
+ len, cnode->nd_file, nd_line(cnode));
+ ruby_current_node = cnode;
+ }
}
- assign(self, bvar, blk, 0);
+ assign(self, block->var, val, lambda);
}
}
POP_TAG();
if (state) goto pop_state;
}
- else if (lambda && call && RARRAY_LEN(val) != 0 &&
- (!node || nd_type(node) != NODE_IFUNC ||
- node->nd_cfnc != bmcall)) {
- rb_raise(rb_eArgError, "wrong number of arguments (%ld for 0)",
- RARRAY_LEN(val));
- }
if (!node) {
state = 0;
goto pop_state;
}
ruby_current_node = node;
+ PUSH_ITER(block->iter);
PUSH_TAG(lambda ? PROT_NONE : PROT_YIELD);
if ((state = EXEC_TAG()) == 0) {
redo:
if (nd_type(node) == NODE_CFUNC || nd_type(node) == NODE_IFUNC) {
if (node->nd_state == YIELD_FUNC_AVALUE) {
- val = svalue_to_avalue(val);
+ if (!avalue) {
+ val = svalue_to_avalue(val);
+ }
}
else {
+ if (avalue) {
+ val = avalue_to_svalue(val);
+ }
if (val == Qundef && node->nd_state != YIELD_FUNC_SVALUE)
val = Qnil;
}
- if ((block->flags&BLOCK_FROM_METHOD) && RTEST(block->block_obj)) {
- struct BLOCK *data, _block;
- Data_Get_Struct(block->block_obj, struct BLOCK, data);
- _block = *data;
- _block.uniq = block_unique++;
- ruby_frame->block = &_block;
- result = (*node->nd_cfnc)(val, node->nd_tval, self);
- }
- else {
- result = (*node->nd_cfnc)(val, node->nd_tval, self);
- }
+ result = (*node->nd_cfnc)(val, node->nd_tval, self);
}
else {
result = rb_eval(self, node);
@@ -4867,13 +4994,17 @@ rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags)
CHECK_INTS;
goto redo;
case TAG_NEXT:
- state = 0;
- result = prot_tag->retval;
+ if (!lambda) {
+ state = 0;
+ result = prot_tag->retval;
+ }
break;
case TAG_BREAK:
if (TAG_DST()) {
result = prot_tag->retval;
- broken = 1;
+ }
+ else {
+ lambda = Qtrue; /* just pass TAG_BREAK */
}
break;
default:
@@ -4881,7 +5012,9 @@ rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags)
}
}
POP_TAG();
+ POP_ITER();
pop_state:
+ POP_CLASS();
if (ruby_dyna_vars && (block->flags & BLOCK_D_SCOPE) &&
!FL_TEST(ruby_dyna_vars, DVAR_DONT_RECYCLE)) {
struct RVarmap *vars = ruby_dyna_vars;
@@ -4897,23 +5030,23 @@ rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags)
}
}
POP_VARS();
+ ruby_block = block;
ruby_frame = ruby_frame->prev;
ruby_cref = (NODE*)old_cref;
ruby_wrapper = old_wrapper;
if (ruby_scope->flags & SCOPE_DONT_RECYCLE)
scope_dup(old_scope);
ruby_scope = old_scope;
- vis_mode = old_vmode;
+ scope_vmode = old_vmode;
switch (state) {
case 0:
break;
case TAG_BREAK:
- if (broken) {
+ if (!lambda) {
struct tag *tt = prot_tag;
while (tt) {
- if ((tt->tag == PROT_LOOP && tt->blkid == block->uniq) ||
- (lambda && tt->tag == PROT_LAMBDA)) {
+ if (tt->tag == PROT_LOOP && tt->blkid == ruby_block->uniq) {
tt->dst = (VALUE)tt->frame->uniq;
tt->retval = result;
JUMP_TAG(TAG_BREAK);
@@ -4921,7 +5054,8 @@ rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags)
tt = tt->prev;
}
proc_jump_error(TAG_BREAK, result);
- }
+ }
+ /* fall through */
default:
JUMP_TAG(state);
break;
@@ -4931,33 +5065,56 @@ rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags)
}
VALUE
-rb_yield(VALUE val)
+rb_yield(val)
+ VALUE val;
{
- return rb_yield_0(val, 0, 0, 0);
+ return rb_yield_0(val, 0, 0, 0, Qfalse);
}
VALUE
+#ifdef HAVE_STDARG_PROTOTYPES
rb_yield_values(int n, ...)
+#else
+rb_yield_values(n, va_alist)
+ int n;
+ va_dcl
+#endif
{
- int i;
va_list args;
- VALUE val;
+ VALUE ary;
if (n == 0) {
- return rb_yield_0(Qundef, 0, 0, 0);
+ return rb_yield_0(Qundef, 0, 0, 0, Qfalse);
}
- val = rb_ary_new2(n);
- va_start(args, n);
- for (i=0; i<n; i++) {
- rb_ary_push(val, va_arg(args, VALUE));
+ ary = rb_ary_new2(n);
+ va_init_list(args, n);
+ while (n--) {
+ rb_ary_push(ary, va_arg(args, VALUE));
}
va_end(args);
- return rb_yield_0(val, 0, 0, YIELD_VALUES);
+ return rb_yield_0(ary, 0, 0, 0, Qtrue);
+}
+
+VALUE
+rb_yield_splat(values)
+ VALUE values;
+{
+ int avalue = Qfalse;
+
+ if (TYPE(values) == T_ARRAY) {
+ if (RARRAY(values)->len == 0) {
+ values = Qundef;
+ }
+ else {
+ avalue = Qtrue;
+ }
+ }
+ return rb_yield_0(values, 0, 0, 0, avalue);
}
/*
* call-seq:
- * loop {|| block }
+ * loop {|| block }
*
* Repeatedly executes the block.
*
@@ -4970,41 +5127,29 @@ rb_yield_values(int n, ...)
*/
static VALUE
-rb_f_loop(void)
+rb_f_loop()
{
for (;;) {
- rb_yield_0(Qundef, 0, 0, 0);
+ rb_yield_0(Qundef, 0, 0, 0, Qfalse);
CHECK_INTS;
}
return Qnil; /* dummy */
}
static VALUE
-massign(VALUE self, NODE *node, VALUE val, int pcall)
+massign(self, node, val, pcall)
+ VALUE self;
+ NODE *node;
+ VALUE val;
+ int pcall;
{
NODE *list;
long i = 0, len;
- volatile VALUE tmp;
- VALUE *argv;
- if (val == Qundef) {
- argv = 0;
- len = 0;
- }
- else {
- tmp = rb_check_array_type(val);
- if (NIL_P(tmp)) {
- argv = &val;
- len = (val == Qundef) ? 0 : 1;
- }
- else {
- argv = RARRAY_PTR(tmp);
- len = RARRAY_LEN(tmp);
- }
- }
+ len = RARRAY(val)->len;
list = node->nd_head;
for (; list && i<len; i++) {
- assign(self, list->nd_head, argv[i], pcall);
+ assign(self, list->nd_head, RARRAY(val)->ptr[i], pcall);
list = list->nd_next;
}
if (pcall && list) goto arg_error;
@@ -5013,7 +5158,7 @@ massign(VALUE self, NODE *node, VALUE val, int pcall)
/* no check for mere `*' */
}
else if (!list && i<len) {
- assign(self, node->nd_args, rb_ary_new4(len-i, argv+i), pcall);
+ assign(self, node->nd_args, rb_ary_new4(len-i, RARRAY(val)->ptr+i), pcall);
}
else {
assign(self, node->nd_args, rb_ary_new2(0), pcall);
@@ -5039,7 +5184,11 @@ massign(VALUE self, NODE *node, VALUE val, int pcall)
}
static void
-assign(VALUE self, NODE *lhs, VALUE val, int pcall)
+assign(self, lhs, val, pcall)
+ VALUE self;
+ NODE *lhs;
+ VALUE val;
+ int pcall;
{
ruby_current_node = lhs;
if (val == Qundef) {
@@ -5090,28 +5239,27 @@ assign(VALUE self, NODE *lhs, VALUE val, int pcall)
break;
case NODE_MASGN:
- massign(self, lhs, val, pcall);
+ massign(self, lhs, svalue_to_mrhs(val, lhs->nd_head), pcall);
break;
case NODE_CALL:
case NODE_ATTRASGN:
{
VALUE recv;
- calling_scope_t scope;
+ int scope;
if (lhs->nd_recv == (NODE *)1) {
recv = self;
- scope = CALLING_FUNCALL;
+ scope = 1;
}
else {
recv = rb_eval(self, lhs->nd_recv);
- scope = CALLING_NORMAL;
+ scope = 0;
}
if (!lhs->nd_args) {
/* attr set */
ruby_current_node = lhs;
SET_CURRENT_SOURCE();
- rb_call(CLASS_OF(recv), recv, lhs->nd_mid, 1, &val,
- 0, scope, 0, self);
+ rb_call(CLASS_OF(recv), recv, lhs->nd_mid, 1, &val, scope);
}
else {
/* array set */
@@ -5122,41 +5270,7 @@ assign(VALUE self, NODE *lhs, VALUE val, int pcall)
ruby_current_node = lhs;
SET_CURRENT_SOURCE();
rb_call(CLASS_OF(recv), recv, lhs->nd_mid,
- RARRAY_LEN(args), RARRAY_PTR(args),
- 0, scope, 0, self);
- }
- }
- break;
-
- case NODE_POSTARG:
- {
- NODE *v = lhs->nd_head;
- int cnt;
- VALUE *p;
-
- if (lhs->nd_args && (long)(lhs->nd_args) != -1) {
- assign(self, lhs->nd_args, val, 0);
- }
- cnt = lhs->nd_head->nd_alen;
- if (RARRAY_LEN(val) < cnt) {
- if (pcall) {
- rb_raise(rb_eArgError, "wrong number of arguments");
- }
- else {
- while (RARRAY_LEN(val) < cnt) {
- v = v->nd_next;
- cnt--;
- }
- }
- }
- p = RARRAY_PTR(val) + RARRAY_LEN(val) - cnt;
- while (cnt--) {
- assign(self, v->nd_head, *p++, 0);
- v = v->nd_next;
- }
- cnt = lhs->nd_head->nd_alen;
- while (cnt--) {
- rb_ary_pop(val);
+ RARRAY(args)->len, RARRAY(args)->ptr, scope);
}
}
break;
@@ -5168,19 +5282,21 @@ assign(VALUE self, NODE *lhs, VALUE val, int pcall)
}
VALUE
-rb_iterate(VALUE (*it_proc)(VALUE), VALUE data1, VALUE (*bl_proc)(ANYARGS), VALUE data2)
+rb_iterate(it_proc, data1, bl_proc, data2)
+ VALUE (*it_proc) _((VALUE)), (*bl_proc)(ANYARGS);
+ VALUE data1, data2;
{
int state;
volatile VALUE retval = Qnil;
NODE *node = NEW_IFUNC(bl_proc, data2);
VALUE self = ruby_top_self;
+ PUSH_ITER(ITER_PRE);
PUSH_TAG(PROT_LOOP);
- PUSH_FRAME(Qtrue);
- PUSH_BLOCK(ruby_frame->block, 0, node);
+ PUSH_BLOCK(0, node);
state = EXEC_TAG();
if (state == 0) {
- iter_retry:
+ iter_retry:
retval = (*it_proc)(data1);
}
else if (state == TAG_BREAK && TAG_DST()) {
@@ -5192,8 +5308,8 @@ rb_iterate(VALUE (*it_proc)(VALUE), VALUE data1, VALUE (*bl_proc)(ANYARGS), VALU
goto iter_retry;
}
POP_BLOCK();
- POP_FRAME();
POP_TAG();
+ POP_ITER();
switch (state) {
case 0:
@@ -5204,53 +5320,22 @@ rb_iterate(VALUE (*it_proc)(VALUE), VALUE data1, VALUE (*bl_proc)(ANYARGS), VALU
return retval;
}
-struct iter_method_arg {
- VALUE obj;
- ID mid;
- int argc;
- VALUE *argv;
-};
-
-static VALUE
-iterate_method(VALUE obj)
-{
- struct iter_method_arg *arg;
-
- arg = (struct iter_method_arg*)obj;
- return rb_call(CLASS_OF(arg->obj), arg->obj, arg->mid, arg->argc, arg->argv,
- ruby_frame->block, CALLING_FUNCALL,1,Qundef);
-}
-
-VALUE
-rb_block_call(VALUE obj, ID mid, int argc, VALUE *argv, VALUE (*bl_proc)(ANYARGS), VALUE data2)
-{
- struct iter_method_arg arg;
-
- arg.obj = obj;
- arg.mid = mid;
- arg.argc = argc;
- arg.argv = argv;
- return rb_iterate(iterate_method, (VALUE)&arg, bl_proc, data2);
-}
-
-VALUE
-rb_each(VALUE obj)
-{
- return rb_call(CLASS_OF(obj), obj, rb_intern("each"), 0, 0,
- ruby_frame->block, CALLING_FUNCALL,1,Qundef);
-}
-
static int
-handle_rescue(VALUE self, NODE *node)
+handle_rescue(self, node)
+ VALUE self;
+ NODE *node;
{
- CALLARGS;
+ int argc; VALUE *argv; /* used in SETUP_ARGS */
TMP_PROTECT;
if (!node->nd_args) {
return rb_obj_is_kind_of(ruby_errinfo, rb_eStandardError);
}
+ BEGIN_CALLARGS;
SETUP_ARGS(node->nd_args);
+ END_CALLARGS;
+
while (argc--) {
if (!rb_obj_is_kind_of(argv[0], rb_cModule)) {
rb_raise(rb_eTypeError, "class or module required for rescue clause");
@@ -5262,7 +5347,14 @@ handle_rescue(VALUE self, NODE *node)
}
VALUE
+#ifdef HAVE_STDARG_PROTOTYPES
rb_rescue2(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*r_proc)(ANYARGS), VALUE data2, ...)
+#else
+rb_rescue2(b_proc, data1, r_proc, data2, va_alist)
+ VALUE (*b_proc)(ANYARGS), (*r_proc)(ANYARGS);
+ VALUE data1, data2;
+ va_dcl
+#endif
{
int state;
volatile VALUE result;
@@ -5284,7 +5376,7 @@ rb_rescue2(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*r_proc)(ANYARGS), VALU
case TAG_RAISE:
if (handle) break;
handle = Qfalse;
- va_start(args, data2);
+ va_init_list(args, data2);
while (eclass = va_arg(args, VALUE)) {
if (rb_obj_is_kind_of(ruby_errinfo, eclass)) {
handle = Qtrue;
@@ -5311,7 +5403,9 @@ rb_rescue2(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*r_proc)(ANYARGS), VALU
}
VALUE
-rb_rescue(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*r_proc)(ANYARGS), VALUE data2)
+rb_rescue(b_proc, data1, r_proc, data2)
+ VALUE (*b_proc)(), (*r_proc)();
+ VALUE data1, data2;
{
return rb_rescue2(b_proc, data1, r_proc, data2, rb_eStandardError, (VALUE)0);
}
@@ -5319,21 +5413,21 @@ rb_rescue(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*r_proc)(ANYARGS), VALUE
static VALUE cont_protect;
VALUE
-rb_protect(VALUE (*proc) (VALUE), VALUE data, int *state)
+rb_protect(proc, data, state)
+ VALUE (*proc) _((VALUE));
+ VALUE data;
+ int *state;
{
VALUE result = Qnil; /* OK */
int status;
- PUSH_THREAD_TAG();
+ PUSH_TAG(PROT_NONE);
cont_protect = (VALUE)rb_node_newnode(NODE_MEMO, cont_protect, 0, 0);
if ((status = EXEC_TAG()) == 0) {
result = (*proc)(data);
}
- else if (status == TAG_THREAD) {
- rb_thread_start_1();
- }
cont_protect = ((NODE *)cont_protect)->u1.value;
- POP_THREAD_TAG();
+ POP_TAG();
if (state) {
*state = status;
}
@@ -5345,7 +5439,11 @@ rb_protect(VALUE (*proc) (VALUE), VALUE data, int *state)
}
VALUE
-rb_ensure(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*e_proc)(ANYARGS), VALUE data2)
+rb_ensure(b_proc, data1, e_proc, data2)
+ VALUE (*b_proc)();
+ VALUE data1;
+ VALUE (*e_proc)();
+ VALUE data2;
{
int state;
volatile VALUE result = Qnil;
@@ -5357,16 +5455,16 @@ rb_ensure(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*e_proc)(ANYARGS), VALUE
}
POP_TAG();
retval = prot_tag ? prot_tag->retval : Qnil; /* save retval */
- if (!thread_no_ensure()) {
(*e_proc)(data2);
- }
if (prot_tag) return_value(retval);
if (state) JUMP_TAG(state);
return result;
}
VALUE
-rb_with_disable_interrupt(VALUE (*proc)(ANYARGS), VALUE data)
+rb_with_disable_interrupt(proc, data)
+ VALUE (*proc)();
+ VALUE data;
{
VALUE result = Qnil; /* OK */
int status;
@@ -5389,8 +5487,8 @@ rb_with_disable_interrupt(VALUE (*proc)(ANYARGS), VALUE data)
return result;
}
-static inline void
-stack_check(void)
+static void
+stack_check()
{
static int overflowing = 0;
@@ -5445,11 +5543,14 @@ static int last_call_status;
*/
static VALUE
-rb_method_missing(int argc, const VALUE *argv, VALUE obj)
+rb_method_missing(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
ID id;
VALUE exc = rb_eNoMethodError;
- const char *format = 0;
+ char *format = 0;
NODE *cnode = ruby_current_node;
if (argc == 0 || !SYMBOL_P(argv[0])) {
@@ -5497,16 +5598,19 @@ rb_method_missing(int argc, const VALUE *argv, VALUE obj)
}
static VALUE
-method_missing(VALUE obj, ID id, int argc, const VALUE *argv,
- struct BLOCK *block, int call_status)
+method_missing(obj, id, argc, argv, call_status)
+ VALUE obj;
+ ID id;
+ int argc;
+ const VALUE *argv;
+ int call_status;
{
VALUE *nargv;
last_call_status = call_status;
if (id == missing) {
- PUSH_FRAME(Qfalse);
- ruby_frame->block = block;
+ PUSH_FRAME();
rb_method_missing(argc, argv, obj);
POP_FRAME();
}
@@ -5515,29 +5619,28 @@ method_missing(VALUE obj, ID id, int argc, const VALUE *argv,
}
if (argc < 0) {
VALUE tmp;
- int n;
- argc = -argc;
- n = argc / 256 - 1;
- argc %= 256;
- tmp = svalue_to_avalue(argv[argc]);
- nargv = ALLOCA_N(VALUE, argc + RARRAY_LEN(tmp) + n + 1);
+ argc = -argc-1;
+ tmp = splat_value(argv[argc]);
+ nargv = ALLOCA_N(VALUE, argc + RARRAY(tmp)->len + 1);
MEMCPY(nargv+1, argv, VALUE, argc);
- MEMCPY(nargv+1+argc, RARRAY_PTR(tmp), VALUE, RARRAY_LEN(tmp));
- MEMCPY(nargv+1+argc+RARRAY_LEN(tmp), argv+argc+1, VALUE, n);
- argc += RARRAY_LEN(tmp)+n;
+ MEMCPY(nargv+1+argc, RARRAY(tmp)->ptr, VALUE, RARRAY(tmp)->len);
+ argc += RARRAY(tmp)->len;
}
else {
nargv = ALLOCA_N(VALUE, argc+1);
MEMCPY(nargv+1, argv, VALUE, argc);
}
nargv[0] = ID2SYM(id);
- return rb_call(CLASS_OF(obj), obj, missing, argc+1, nargv,
- block, CALLING_FUNCALL, 0, Qundef);
+ return rb_funcall2(obj, missing, argc+1, nargv);
}
static inline VALUE
-call_cfunc(VALUE (*func)(ANYARGS), VALUE recv, int len, int argc, const VALUE *argv)
+call_cfunc(func, recv, len, argc, argv)
+ VALUE (*func)();
+ VALUE recv;
+ int len, argc;
+ VALUE *argv;
{
if (len >= 0 && argc != len) {
rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)",
@@ -5620,113 +5723,39 @@ call_cfunc(VALUE (*func)(ANYARGS), VALUE recv, int len, int argc, const VALUE *a
return Qnil; /* not reached */
}
-static int
-formal_assign(VALUE recv, NODE *node, int argc, const VALUE *argv, VALUE *local_vars)
-{
- int i;
- int nopt = 0;
- int npost = 0;
-
- if (nd_type(node) != NODE_ARGS) {
- rb_bug("no argument-node");
- }
-
- i = node->nd_frml ? RARRAY_LEN(node->nd_frml) : 0;
- if (i > argc) {
- rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)", argc, i);
- }
- if (!node->nd_rest) {
- NODE *optnode = node->nd_opt;
-
- nopt = i;
- while (optnode) {
- nopt++;
- optnode = optnode->nd_next;
- }
- if (nopt < argc) {
- rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)", argc, nopt);
- }
- }
- if (local_vars) {
- if (i > 0) {
- /* +2 for $_ and $~ */
- MEMCPY(local_vars+2, argv, VALUE, i);
- }
- }
- else {
- int j;
- VALUE a = node->nd_frml;
-
- for (j=0; j<i; j++) {
- dvar_asgn_curr(SYM2ID(RARRAY_PTR(a)[j]), argv[j]);
- }
- }
- argv += i; argc -= i;
- if (node->nd_rest && nd_type(node->nd_rest) == NODE_POSTARG) {
- npost = node->nd_rest->nd_head->nd_alen;
- }
- if (node->nd_opt) {
- NODE *opt = node->nd_opt;
- int ac = argc - npost;
-
- while (opt && ac > 0) {
- assign(recv, opt->nd_head, *argv, 1);
- argv++; ac--;
- ++i;
- opt = opt->nd_next;
- }
- if (opt) {
- rb_eval(recv, opt);
- while (opt) {
- ++i;
- opt = opt->nd_next;
- }
- }
- argc = ac + npost;
- }
- if (!node->nd_rest) {
- i = nopt;
- }
- else {
- VALUE v;
- int n = 1;
-
- v = rb_ary_new4(argc,argv);
- n += npost;
- i += n*256;
- i = -i;
- assign(recv, node->nd_rest, v, 1);
- }
- return i;
-}
-
-#define PUSH_METHOD_FRAME() \
- PUSH_FRAME(Qfalse);\
- ruby_frame->callee = id;\
- ruby_frame->this_func = oid;\
- ruby_frame->this_class = (flags & NOEX_NOSUPER)?0:klass;\
- ruby_frame->self = recv;\
- ruby_frame->argc = argc;\
- ruby_frame->block = block;\
- ruby_frame->flags = (flags & NOEX_RECV) ? FRAME_FUNC : 0;
-
static VALUE
-rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
- int argc /* OK */, const VALUE *argv /* OK */,
- struct BLOCK *block,
- NODE *volatile body, int flags)
+rb_call0(klass, recv, id, oid, argc, argv, body, flags)
+ VALUE klass, recv;
+ ID id;
+ ID oid;
+ int argc; /* OK */
+ VALUE *argv; /* OK */
+ NODE * volatile body;
+ int flags;
{
NODE *b2; /* OK */
volatile VALUE result = Qnil;
+ int itr;
static int tick;
- volatile int safe = -1;
TMP_PROTECT;
+ volatile int safe = -1;
if (NOEX_SAFE(flags) > ruby_safe_level &&
- ruby_safe_level == 0 && NOEX_SAFE(flags) > 2) {
+ !(flags&NOEX_TAINTED) && ruby_safe_level == 0 && NOEX_SAFE(flags) > 2) {
rb_raise(rb_eSecurityError, "calling insecure method: %s",
rb_id2name(id));
}
+ switch (ruby_iter->iter) {
+ case ITER_PRE:
+ case ITER_PAS:
+ itr = ITER_CUR;
+ break;
+ case ITER_CUR:
+ default:
+ itr = ITER_NOT;
+ break;
+ }
+
if ((++tick & 0xff) == 0) {
CHECK_INTS; /* better than nothing */
stack_check();
@@ -5735,19 +5764,25 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
if (argc < 0) {
VALUE tmp;
VALUE *nargv;
- int n;
- argc = -argc;
- n = argc / 256 - 1;
- argc %= 256;
- tmp = svalue_to_avalue(argv[argc]);
- nargv = TMP_ALLOC(argc + RARRAY_LEN(tmp) + n);
+ argc = -argc-1;
+ tmp = splat_value(argv[argc]);
+ nargv = TMP_ALLOC(argc + RARRAY(tmp)->len);
MEMCPY(nargv, argv, VALUE, argc);
- MEMCPY(nargv+argc, RARRAY_PTR(tmp), VALUE, RARRAY_LEN(tmp));
- MEMCPY(nargv + argc + RARRAY_LEN(tmp), argv + argc + 1, VALUE, n);
- argc += RARRAY_LEN(tmp) + n;
+ MEMCPY(nargv+argc, RARRAY(tmp)->ptr, VALUE, RARRAY(tmp)->len);
+ argc += RARRAY(tmp)->len;
argv = nargv;
}
+ PUSH_ITER(itr);
+ PUSH_FRAME();
+
+ ruby_frame->last_func = id;
+ ruby_frame->orig_func = oid;
+ ruby_frame->last_class = (flags & NOEX_NOSUPER)?0:klass;
+ ruby_frame->self = recv;
+ ruby_frame->argc = argc;
+ ruby_frame->flags = 0;
+
switch (nd_type(body)) {
case NODE_CFUNC:
{
@@ -5757,7 +5792,6 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
rb_bug("bad argc (%d) specified for `%s(%s)'",
len, rb_class2name(klass), rb_id2name(id));
}
- PUSH_METHOD_FRAME();
if (event_hooks) {
int state;
@@ -5776,7 +5810,6 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
else {
result = call_cfunc(body->nd_cfnc, recv, len, argc, argv);
}
- POP_FRAME();
}
break;
@@ -5794,24 +5827,25 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
result = rb_ivar_set(recv, body->nd_vid, argv[0]);
break;
- case NODE_ZSUPER: /* visibility override */
- result = call_super_0(klass, recv, oid, argc, argv, block);
+ case NODE_ZSUPER:
+ result = rb_call_super(argc, argv);
+ break;
+
+ case NODE_DMETHOD:
+ result = method_call(argc, argv, umethod_bind(body->nd_cval, recv));
break;
case NODE_BMETHOD:
- PUSH_METHOD_FRAME();
ruby_frame->flags |= FRAME_DMETH;
if (event_hooks) {
struct BLOCK *data;
Data_Get_Struct(body->nd_cval, struct BLOCK, data);
EXEC_EVENT_HOOK(RUBY_EVENT_CALL, data->body, recv, id, klass);
}
- result = proc_invoke(body->nd_cval, rb_ary_new4(argc, argv), recv, klass,
- INVOKE_CALL);
+ result = proc_invoke(body->nd_cval, rb_ary_new4(argc, argv), recv, klass);
if (event_hooks) {
EXEC_EVENT_HOOK(RUBY_EVENT_RETURN, body, recv, id, klass);
}
- POP_FRAME();
break;
case NODE_SCOPE:
@@ -5820,12 +5854,12 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
VALUE *local_vars; /* OK */
NODE *saved_cref = 0;
- PUSH_METHOD_FRAME();
PUSH_SCOPE();
if (body->nd_rval) {
saved_cref = ruby_cref;
ruby_cref = (NODE*)body->nd_rval;
}
+ PUSH_CLASS(ruby_cbase);
if (body->nd_tbl) {
local_vars = TMP_ALLOC(body->nd_tbl[0]+1);
*local_vars++ = (VALUE)body;
@@ -5847,6 +5881,7 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
PUSH_TAG(PROT_FUNC);
if ((state = EXEC_TAG()) == 0) {
NODE *node = 0;
+ int i, nopt = 0;
if (nd_type(body) == NODE_ARGS) {
node = body;
@@ -5857,10 +5892,63 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
body = body->nd_next;
}
if (node) {
- ruby_frame->argc =
- formal_assign(recv, node, argc, argv, local_vars);
- }
+ if (nd_type(node) != NODE_ARGS) {
+ rb_bug("no argument-node");
+ }
+ i = node->nd_cnt;
+ if (i > argc) {
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)",
+ argc, i);
+ }
+ if (!node->nd_rest) {
+ NODE *optnode = node->nd_opt;
+
+ nopt = i;
+ while (optnode) {
+ nopt++;
+ optnode = optnode->nd_next;
+ }
+ if (nopt < argc) {
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for %d)",
+ argc, nopt);
+ }
+ }
+ if (local_vars) {
+ if (i > 0) {
+ /* +2 for $_ and $~ */
+ MEMCPY(local_vars+2, argv, VALUE, i);
+ }
+ }
+ argv += i; argc -= i;
+ if (node->nd_opt) {
+ NODE *opt = node->nd_opt;
+
+ while (opt && argc) {
+ assign(recv, opt->nd_head, *argv, 1);
+ argv++; argc--;
+ opt = opt->nd_next;
+ }
+ if (opt) {
+ rb_eval(recv, opt);
+ }
+ i = nopt;
+ }
+ if (node->nd_rest) {
+ VALUE v;
+
+ if (argc > 0) {
+ v = rb_ary_new4(argc,argv);
+ i = -i - 1;
+ }
+ else {
+ v = rb_ary_new2(0);
+ }
+ assign(recv, node->nd_rest, v, 1);
+ }
+ ruby_frame->argc = i;
+ }
if (event_hooks) {
EXEC_EVENT_HOOK(RUBY_EVENT_CALL, b2, recv, id, klass);
}
@@ -5875,10 +5963,10 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
EXEC_EVENT_HOOK(RUBY_EVENT_RETURN, body, recv, id, klass);
}
POP_VARS();
+ POP_CLASS();
POP_SCOPE();
ruby_cref = saved_cref;
if (safe >= 0) ruby_safe_level = safe;
- POP_FRAME();
switch (state) {
case 0:
break;
@@ -5889,7 +5977,7 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
break;
case TAG_RETRY:
- if (block) JUMP_TAG(state);
+ if (rb_block_given_p()) JUMP_TAG(state);
/* fall through */
default:
jump_tag_but_local_jump(state, result);
@@ -5902,143 +5990,88 @@ rb_call0(VALUE klass, VALUE recv, ID id, ID oid,
unknown_node(body);
break;
}
+ POP_FRAME();
+ POP_ITER();
return result;
}
static VALUE
-rb_call(VALUE klass, VALUE recv, ID mid,
- int argc /* OK */, const VALUE *argv /* OK */, struct BLOCK *block,
- calling_scope_t scope, int iter, VALUE self)
+rb_call(klass, recv, mid, argc, argv, scope)
+ VALUE klass, recv;
+ ID mid;
+ int argc; /* OK */
+ const VALUE *argv; /* OK */
+ int scope;
{
NODE *body; /* OK */
int noex;
ID id = mid;
- struct cache_entry *ent = 0;
+ struct cache_entry *ent;
if (!klass) {
- rb_raise(rb_eNotImpError, "method `%s' called on terminated object (%p)",
- rb_id2name(mid), (void*)recv);
- }
- switch (scope) {
- case CALLING_FCALL:
- case CALLING_VCALL:
- if (recv == ruby_frame->self) {
- noex = LOOKUP_LOCAL;
- break;
- }
- /* fall thtough */
- default:
- noex = LOOKUP_NORMAL;
- break;
+ rb_raise(rb_eNotImpError, "method `%s' called on terminated object (0x%lx)",
+ rb_id2name(mid), recv);
}
-
/* is it in the method cache? */
- if (noex == LOOKUP_LOCAL) {
- ent = cache[LOOKUP_FCALL] + EXPR1(ruby_frame->this_class, mid);
- if (ent->mid != mid || ent->klass != ruby_frame->this_class) {
- ent = NULL;
- }
- }
- if (!ent) {
- ent = cache[LOOKUP_NORMAL] + EXPR1(klass, mid);
- if (ent->mid != mid || ent->klass != klass) {
- ent = NULL;
- }
- }
- if (ent) {
+ ent = cache + EXPR1(klass, mid);
+ if (ent->mid == mid && ent->klass == klass) {
if (!ent->method)
- return method_missing(recv, mid, argc, argv, block,
- scope==CALLING_VCALL?CSTAT_VCALL:0);
+ return method_missing(recv, mid, argc, argv, scope==2?CSTAT_VCALL:0);
klass = ent->origin;
id = ent->mid0;
noex = ent->noex;
body = ent->method;
}
else if ((body = rb_get_method_body(&klass, &id, &noex)) == 0) {
- if (scope == CALLING_SUPER) {
- return method_missing(recv, mid, argc, argv, block, CSTAT_SUPER);
+ if (scope == 3) {
+ return method_missing(recv, mid, argc, argv, CSTAT_SUPER);
}
- return method_missing(recv, mid, argc, argv, block, scope==CALLING_VCALL?CSTAT_VCALL:0);
+ return method_missing(recv, mid, argc, argv, scope==2?CSTAT_VCALL:0);
}
- if (mid != missing && scope == CALLING_NORMAL) {
+ if (mid != missing && scope == 0) {
/* receiver specified form for private method */
if (noex & NOEX_PRIVATE)
- return method_missing(recv, mid, argc, argv, block, CSTAT_PRIV);
+ return method_missing(recv, mid, argc, argv, CSTAT_PRIV);
/* self must be kind of a specified form for protected method */
if (noex & NOEX_PROTECTED) {
VALUE defined_class = klass;
- if (self == Qundef) self = ruby_frame->self;
if (TYPE(defined_class) == T_ICLASS) {
defined_class = RBASIC(defined_class)->klass;
}
- if (!rb_obj_is_kind_of(self, rb_class_real(defined_class)))
- return method_missing(recv, mid, argc, argv, block, CSTAT_PROT);
+ if (!rb_obj_is_kind_of(ruby_frame->self, rb_class_real(defined_class)))
+ return method_missing(recv, mid, argc, argv, CSTAT_PROT);
}
}
- if (scope > CALLING_NORMAL) { /* pass receiver info */
- noex |= NOEX_RECV;
- }
- if (block && !iter && !block_orphan(block)) {
- VALUE result;
- int state;
- PUSH_TAG(PROT_LOOP);
- state = EXEC_TAG();
- if (state == 0) {
- result = rb_call0(klass, recv, mid, id, argc, argv, block, body, noex);
- }
- else if (state == TAG_BREAK && TAG_DST()) {
- result = prot_tag->retval;
- state = 0;
- }
- POP_TAG();
- if (state) JUMP_TAG(state);
- return result;
- }
- else {
- return rb_call0(klass, recv, mid, id, argc, argv, block, body, noex);
- }
+ return rb_call0(klass, recv, mid, id, argc, argv, body, noex);
}
VALUE
-rb_apply(VALUE recv, ID mid, VALUE args)
+rb_apply(recv, mid, args)
+ VALUE recv;
+ ID mid;
+ VALUE args;
{
int argc;
VALUE *argv;
- argc = RARRAY_LEN(args); /* Assigns LONG, but argc is INT */
+ argc = RARRAY(args)->len; /* Assigns LONG, but argc is INT */
argv = ALLOCA_N(VALUE, argc);
- MEMCPY(argv, RARRAY_PTR(args), VALUE, argc);
- return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 0,CALLING_FUNCALL,0,Qundef);
-}
-
-static VALUE
-send_funcall(int argc, VALUE *argv, VALUE recv, calling_scope_t scope)
-{
- VALUE vid;
-
- if (argc == 0) rb_raise(rb_eArgError, "no method name given");
-
- vid = *argv++; argc--;
- vid = rb_call(CLASS_OF(recv), recv, rb_to_id(vid), argc, argv,
- ruby_frame->block, scope, 1, Qundef);
-
- return vid;
+ MEMCPY(argv, RARRAY(args)->ptr, VALUE, argc);
+ return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 1);
}
/*
* call-seq:
- * obj.send(symbol [, args...]) => obj
- * obj.__send(symbol [, args...]) => obj
+ * obj.send(symbol [, args...]) => obj
+ * obj.__send__(symbol [, args...]) => obj
*
* Invokes the method identified by _symbol_, passing it any
* arguments specified. You can use <code>\_\_send__</code> if the name
- * +send+ clashes with an existing method in _obj_. Raises an
- * NoMethodError exception for private methods except when it is
- * called in function call style.
+ * +send+ clashes with an existing method in _obj_.
*
* class Klass
* def hello(*args)
@@ -6047,50 +6080,34 @@ send_funcall(int argc, VALUE *argv, VALUE recv, calling_scope_t scope)
* end
* k = Klass.new
* k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
- *
- * 1.send(:puts, "foo") # NoMethodError exception
- * send(:puts, "foo") # prints "foo"
*/
static VALUE
-rb_f_send(int argc, VALUE *argv, VALUE recv)
+rb_f_send(argc, argv, recv)
+ int argc;
+ VALUE *argv;
+ VALUE recv;
{
- calling_scope_t scope;
+ VALUE vid;
- if (ruby_frame->flags & FRAME_FUNC) {
- scope = CALLING_FCALL;
- }
- else {
- scope = CALLING_NORMAL;
- }
- return send_funcall(argc, argv, recv, scope);
-}
+ if (argc == 0) rb_raise(rb_eArgError, "no method name given");
-/*
- * call-seq:
- * obj.funcall(symbol [, args...]) => obj
- * obj.__send!(symbol [, args...]) => obj
- *
- * Invokes the method identified by _symbol_, passing it any
- * arguments specified. Unlike send, which calls private methods only
- * when it is invoked in function call style, funcall always aware of
- * private methods.
- *
- * 1.funcall(:puts, "hello") # prints "foo"
- */
+ vid = *argv++; argc--;
+ PUSH_ITER(rb_block_given_p()?ITER_PRE:ITER_NOT);
+ vid = rb_call(CLASS_OF(recv), recv, rb_to_id(vid), argc, argv, 1);
+ POP_ITER();
-static VALUE
-rb_f_funcall(int argc, VALUE *argv, VALUE recv)
-{
- return send_funcall(argc, argv, recv, CALLING_FUNCALL);
+ return vid;
}
-VALUE
-rb_funcall(VALUE recv, ID mid, int n, ...)
+static VALUE
+vafuncall(recv, mid, n, ar)
+ VALUE recv;
+ ID mid;
+ int n;
+ va_list *ar;
{
VALUE *argv;
- va_list ar;
- va_start(ar, n);
if (n > 0) {
long i;
@@ -6098,73 +6115,138 @@ rb_funcall(VALUE recv, ID mid, int n, ...)
argv = ALLOCA_N(VALUE, n);
for (i=0;i<n;i++) {
- argv[i] = va_arg(ar, VALUE);
+ argv[i] = va_arg(*ar, VALUE);
}
- va_end(ar);
+ va_end(*ar);
}
else {
argv = 0;
}
- return rb_call(CLASS_OF(recv), recv, mid, n, argv, 0,CALLING_FUNCALL,0,Qundef);
+ return rb_call(CLASS_OF(recv), recv, mid, n, argv, 1);
}
VALUE
-rb_funcall2(VALUE recv, ID mid, int argc, const VALUE *argv)
+#ifdef HAVE_STDARG_PROTOTYPES
+rb_funcall(VALUE recv, ID mid, int n, ...)
+#else
+rb_funcall(recv, mid, n, va_alist)
+ VALUE recv;
+ ID mid;
+ int n;
+ va_dcl
+#endif
{
- return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 0,CALLING_FUNCALL,0,Qundef);
+ va_list ar;
+ va_init_list(ar, n);
+
+ return vafuncall(recv, mid, n, &ar);
}
VALUE
-rb_funcall3(VALUE recv, ID mid, int argc, const VALUE *argv)
+#ifdef HAVE_STDARG_PROTOTYPES
+rb_funcall_rescue(VALUE recv, ID mid, int n, ...)
+#else
+rb_funcall_rescue(recv, mid, n, va_alist)
+ VALUE recv;
+ ID mid;
+ int n;
+ va_dcl
+#endif
{
- return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 0,CALLING_NORMAL,0,Qundef);
-}
+ VALUE result = Qnil; /* OK */
+ int status;
+ va_list ar;
-static VALUE
-call_super_0(VALUE klass, VALUE self, ID mid,
- int argc, const VALUE *argv, struct BLOCK *block)
-{
- if (RCLASS(klass)->super == 0) {
- return method_missing(self, mid, argc, argv, block, CSTAT_SUPER);
+ va_init_list(ar, n);
+
+ PUSH_TAG(PROT_NONE);
+ if ((status = EXEC_TAG()) == 0) {
+ result = vafuncall(recv, mid, n, &ar);
}
+ POP_TAG();
+ switch (status) {
+ case 0:
+ return result;
+ case TAG_RAISE:
+ return Qundef;
+ default:
+ JUMP_TAG(status);
+ }
+}
- return rb_call(RCLASS(klass)->super, self, mid, argc, argv,
- block, CALLING_SUPER, 1, Qundef);
+VALUE
+rb_funcall2(recv, mid, argc, argv)
+ VALUE recv;
+ ID mid;
+ int argc;
+ const VALUE *argv;
+{
+ return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 1);
}
-static VALUE
-call_super(int argc, const VALUE *argv, struct BLOCK *block)
+VALUE
+rb_funcall3(recv, mid, argc, argv)
+ VALUE recv;
+ ID mid;
+ int argc;
+ const VALUE *argv;
{
- if (ruby_frame->this_class == 0) {
- rb_name_error(ruby_frame->callee, "calling `super' from `%s' is prohibited",
- rb_id2name(ruby_frame->this_func));
- }
- return call_super_0(ruby_frame->this_class, ruby_frame->self,
- ruby_frame->this_func, argc, argv, block);
+ return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 0);
}
VALUE
-rb_call_super(int argc, const VALUE *argv)
+rb_call_super(argc, argv)
+ int argc;
+ const VALUE *argv;
{
- return call_super(argc, argv, ruby_frame->block);
+ VALUE result, self, klass;
+
+ if (ruby_frame->last_class == 0) {
+ rb_name_error(ruby_frame->last_func, "calling `super' from `%s' is prohibited",
+ rb_id2name(ruby_frame->orig_func));
+ }
+
+ self = ruby_frame->self;
+ klass = ruby_frame->last_class;
+ if (RCLASS(klass)->super == 0) {
+ return method_missing(self, ruby_frame->orig_func, argc, argv, CSTAT_SUPER);
+ }
+
+ PUSH_ITER(ruby_iter->iter ? ITER_PRE : ITER_NOT);
+ result = rb_call(RCLASS(klass)->super, self, ruby_frame->orig_func, argc, argv, 3);
+ POP_ITER();
+
+ return result;
}
static VALUE
-backtrace(int lev)
+backtrace(lev)
+ int lev;
{
struct FRAME *frame = ruby_frame;
- VALUE str;
- volatile VALUE ary;
+ char buf[BUFSIZ];
+ VALUE ary;
NODE *n;
ary = rb_ary_new();
- if (frame->this_func == ID_ALLOCATOR) {
+ if (frame->last_func == ID_ALLOCATOR) {
frame = frame->prev;
}
if (lev < 0) {
- str = error_line(frame, 0);
- rb_ary_push(ary, str);
+ ruby_set_current_source();
+ if (frame->last_func) {
+ snprintf(buf, BUFSIZ, "%s:%d:in `%s'",
+ ruby_sourcefile, ruby_sourceline,
+ rb_id2name(frame->last_func));
+ }
+ else if (ruby_sourceline == 0) {
+ snprintf(buf, BUFSIZ, "%s", ruby_sourcefile);
+ }
+ else {
+ snprintf(buf, BUFSIZ, "%s:%d", ruby_sourcefile, ruby_sourceline);
+ }
+ rb_ary_push(ary, rb_str_new2(buf));
if (lev < -1) return ary;
}
else {
@@ -6177,16 +6259,18 @@ backtrace(int lev)
}
}
for (; frame && (n = frame->node); frame = frame->prev) {
- if (frame->prev && frame->prev->this_func) {
+ if (frame->prev && frame->prev->last_func) {
if (frame->prev->node == n) {
- if (frame->prev->this_func == frame->this_func) continue;
+ if (frame->prev->last_func == frame->last_func) continue;
}
- str = error_line(frame->prev, n);
+ snprintf(buf, BUFSIZ, "%s:%d:in `%s'",
+ n->nd_file, nd_line(n),
+ rb_id2name(frame->prev->last_func));
}
else {
- str = rb_sprintf("%s:%d", n->nd_file, nd_line(n));
+ snprintf(buf, BUFSIZ, "%s:%d", n->nd_file, nd_line(n));
}
- rb_ary_push(ary, str);
+ rb_ary_push(ary, rb_str_new2(buf));
}
return ary;
@@ -6198,7 +6282,7 @@ backtrace(int lev)
*
* Returns the current execution stack---an array containing strings in
* the form ``<em>file:line</em>'' or ``<em>file:line: in
- * `method'</em>''. The optional <i>start</i>_ parameter
+ * `method'</em>''. The optional _start_ parameter
* determines the number of initial stack entries to omit from the
* result.
*
@@ -6218,7 +6302,9 @@ backtrace(int lev)
*/
static VALUE
-rb_f_caller(int argc, VALUE *argv)
+rb_f_caller(argc, argv)
+ int argc;
+ VALUE *argv;
{
VALUE level;
int lev;
@@ -6233,31 +6319,34 @@ rb_f_caller(int argc, VALUE *argv)
}
void
-rb_backtrace(void)
+rb_backtrace()
{
long i;
VALUE ary;
ary = backtrace(-1);
- for (i=0; i<RARRAY_LEN(ary); i++) {
- printf("\tfrom %s\n", RSTRING_PTR(RARRAY_PTR(ary)[i]));
+ for (i=0; i<RARRAY(ary)->len; i++) {
+ printf("\tfrom %s\n", RSTRING(RARRAY(ary)->ptr[i])->ptr);
}
}
static VALUE
-make_backtrace(void)
+make_backtrace()
{
return backtrace(-1);
}
ID
-rb_frame_this_func(void)
+rb_frame_last_func()
{
- return ruby_frame->this_func;
+ return ruby_frame->last_func;
}
static NODE*
-compile(VALUE src, const char *file, int line)
+compile(src, file, line)
+ VALUE src;
+ char *file;
+ int line;
{
NODE *node;
int critical;
@@ -6274,17 +6363,22 @@ compile(VALUE src, const char *file, int line)
}
static VALUE
-eval(VALUE self, VALUE src, VALUE scope, const char *file, int line)
+eval(self, src, scope, file, line)
+ VALUE self, src, scope;
+ char *file;
+ int line;
{
struct BLOCK *data = NULL;
volatile VALUE result = Qnil;
struct SCOPE * volatile old_scope;
+ struct BLOCK * volatile old_block;
struct RVarmap * volatile old_dyna_vars;
VALUE volatile old_cref;
int volatile old_vmode;
volatile VALUE old_wrapper;
struct FRAME frame;
NODE *nodesave = ruby_current_node;
+ volatile int iter = ruby_frame->iter;
volatile int safe = ruby_safe_level;
int state;
@@ -6301,10 +6395,12 @@ eval(VALUE self, VALUE src, VALUE scope, const char *file, int line)
ruby_frame = &(frame);
old_scope = ruby_scope;
ruby_scope = data->scope;
+ old_block = ruby_block;
+ ruby_block = data->prev;
old_dyna_vars = ruby_dyna_vars;
ruby_dyna_vars = data->dyna_vars;
- old_vmode = vis_mode;
- vis_mode = data->vmode;
+ old_vmode = scope_vmode;
+ scope_vmode = data->vmode;
old_cref = (VALUE)ruby_cref;
ruby_cref = data->cref;
old_wrapper = ruby_wrapper;
@@ -6316,15 +6412,22 @@ eval(VALUE self, VALUE src, VALUE scope, const char *file, int line)
}
self = data->self;
+ ruby_frame->iter = data->iter;
+ }
+ else {
+ if (ruby_frame->prev) {
+ ruby_frame->iter = ruby_frame->prev->iter;
+ }
}
if (file == 0) {
ruby_set_current_source();
file = ruby_sourcefile;
line = ruby_sourceline;
}
+ PUSH_CLASS(data ? data->klass : ruby_class);
ruby_in_eval++;
- if (TYPE(ruby_cbase) == T_ICLASS) {
- ruby_cbase = RBASIC(ruby_cbase)->klass;
+ if (TYPE(ruby_class) == T_ICLASS) {
+ ruby_class = RBASIC(ruby_class)->klass;
}
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
@@ -6342,6 +6445,7 @@ eval(VALUE self, VALUE src, VALUE scope, const char *file, int line)
result = eval_node(self, node);
}
POP_TAG();
+ POP_CLASS();
ruby_in_eval--;
if (!NIL_P(scope)) {
int dont_recycle = ruby_scope->flags & SCOPE_DONT_RECYCLE;
@@ -6350,8 +6454,10 @@ eval(VALUE self, VALUE src, VALUE scope, const char *file, int line)
ruby_cref = (NODE*)old_cref;
ruby_frame = frame.tmp;
ruby_scope = old_scope;
+ ruby_block = old_block;
ruby_dyna_vars = old_dyna_vars;
- vis_mode = old_vmode;
+ data->vmode = scope_vmode; /* write back visibility mode */
+ scope_vmode = old_vmode;
if (dont_recycle) {
struct tag *tag;
struct RVarmap *vars;
@@ -6365,6 +6471,9 @@ eval(VALUE self, VALUE src, VALUE scope, const char *file, int line)
}
}
}
+ else {
+ ruby_frame->iter = iter;
+ }
ruby_current_node = nodesave;
ruby_set_current_source();
if (state) {
@@ -6377,9 +6486,9 @@ eval(VALUE self, VALUE src, VALUE scope, const char *file, int line)
if (!NIL_P(errat) && TYPE(errat) == T_ARRAY) {
if (!NIL_P(mesg) && TYPE(mesg) == T_STRING) {
rb_str_update(mesg, 0, 0, rb_str_new2(": "));
- rb_str_update(mesg, 0, 0, RARRAY_PTR(errat)[0]);
+ rb_str_update(mesg, 0, 0, RARRAY(errat)->ptr[0]);
}
- RARRAY_PTR(errat)[0] = RARRAY_PTR(backtrace(-2))[0];
+ RARRAY(errat)->ptr[0] = RARRAY(backtrace(-2))->ptr[0];
}
}
rb_exc_raise(ruby_errinfo);
@@ -6410,10 +6519,13 @@ eval(VALUE self, VALUE src, VALUE scope, const char *file, int line)
*/
static VALUE
-rb_f_eval(int argc, VALUE *argv, VALUE self)
+rb_f_eval(argc, argv, self)
+ int argc;
+ VALUE *argv;
+ VALUE self;
{
VALUE src, scope, vfile, vline;
- const char *file = "(eval)";
+ char *file = "(eval)";
int line = 1;
rb_scan_args(argc, argv, "13", &src, &scope, &vfile, &vline);
@@ -6433,13 +6545,13 @@ rb_f_eval(int argc, VALUE *argv, VALUE self)
line = NUM2INT(vline);
}
- if (!NIL_P(vfile)) file = RSTRING_PTR(vfile);
+ if (!NIL_P(vfile)) file = RSTRING(vfile)->ptr;
if (NIL_P(scope) && ruby_frame->prev) {
struct FRAME *prev;
VALUE val;
prev = ruby_frame;
- PUSH_FRAME(Qfalse);
+ PUSH_FRAME();
*ruby_frame = *prev->prev;
ruby_frame->prev = prev;
val = eval(self, src, scope, file, line);
@@ -6452,40 +6564,47 @@ rb_f_eval(int argc, VALUE *argv, VALUE self)
/* function to call func under the specified class/module context */
static VALUE
-exec_under(VALUE (*func) (VALUE), VALUE under, VALUE args)
+exec_under(func, under, cbase, args)
+ VALUE (*func)();
+ VALUE under, cbase;
+ void *args;
{
VALUE val = Qnil; /* OK */
int state;
int mode;
struct FRAME *f = ruby_frame;
- PUSH_CREF(under);
- PUSH_FRAME(Qtrue);
+ PUSH_CLASS(under);
+ PUSH_FRAME();
ruby_frame->self = f->self;
- ruby_frame->callee = f->callee;
- ruby_frame->this_func = f->this_func;
- ruby_frame->this_class = f->this_class;
+ ruby_frame->last_func = f->last_func;
+ ruby_frame->orig_func = f->orig_func;
+ ruby_frame->last_class = f->last_class;
ruby_frame->argc = f->argc;
+ if (cbase) {
+ PUSH_CREF(cbase);
+ }
- mode = vis_mode;
- VIS_SET(VIS_PUBLIC);
+ mode = scope_vmode;
+ SCOPE_SET(SCOPE_PUBLIC);
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
val = (*func)(args);
}
POP_TAG();
- POP_CREF();
- VIS_SET(mode);
+ if (cbase) POP_CREF();
+ SCOPE_SET(mode);
POP_FRAME();
+ POP_CLASS();
if (state) JUMP_TAG(state);
return val;
}
static VALUE
-eval_under_i(VALUE arg)
+eval_under_i(args)
+ VALUE *args;
{
- VALUE *args = (VALUE *)arg;
struct FRAME *f = ruby_frame;
if (f && (f = f->prev) && (f = f->prev)) {
@@ -6496,7 +6615,10 @@ eval_under_i(VALUE arg)
/* string eval under the class/module context */
static VALUE
-eval_under(VALUE under, VALUE self, VALUE src, const char *file, int line)
+eval_under(under, self, src, file, line)
+ VALUE under, self, src;
+ const char *file;
+ int line;
{
VALUE args[4];
@@ -6510,40 +6632,38 @@ eval_under(VALUE under, VALUE self, VALUE src, const char *file, int line)
args[1] = src;
args[2] = (VALUE)file;
args[3] = (VALUE)line;
- return exec_under(eval_under_i, under, (VALUE)args);
+ return exec_under(eval_under_i, under, under, args);
}
static VALUE
-yield_under_i(VALUE arg)
+yield_under_i(self)
+ VALUE self;
{
- VALUE *args = (VALUE *)arg;
- int flags = YIELD_PUBLIC_DEF;
- if (args[0] != Qundef) flags |= YIELD_VALUES;
-
- return rb_yield_0(args[0], args[1], ruby_cbase, flags);
+ return rb_yield_0(self, self, ruby_class, YIELD_PUBLIC_DEF, Qfalse);
}
/* block eval under the class/module context */
static VALUE
-yield_under(VALUE under, VALUE self, VALUE values)
+yield_under(under, self)
+ VALUE under, self;
{
- VALUE args[2];
- args[0] = values;
- args[1] = self;
- return exec_under(yield_under_i, under, (VALUE)args);
+ return exec_under(yield_under_i, under, 0, self);
}
static VALUE
-specific_eval(int argc, VALUE *argv, VALUE klass, VALUE self)
+specific_eval(argc, argv, klass, self)
+ int argc;
+ VALUE *argv;
+ VALUE klass, self;
{
if (rb_block_given_p()) {
if (argc > 0) {
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
}
- return yield_under(klass, self, Qundef);
+ return yield_under(klass, self);
}
else {
- const char *file = "(eval)";
+ char *file = "(eval)";
int line = 1;
if (argc == 0) {
@@ -6558,8 +6678,8 @@ specific_eval(int argc, VALUE *argv, VALUE klass, VALUE self)
}
if (argc > 3) {
rb_raise(rb_eArgError, "wrong number of arguments: %s(src) or %s{..}",
- rb_id2name(ruby_frame->callee),
- rb_id2name(ruby_frame->callee));
+ rb_id2name(ruby_frame->last_func),
+ rb_id2name(ruby_frame->last_func));
}
if (argc > 2) line = NUM2INT(argv[2]);
if (argc > 1) {
@@ -6582,10 +6702,7 @@ specific_eval(int argc, VALUE *argv, VALUE klass, VALUE self)
* instance variables. In the version of <code>instance_eval</code>
* that takes a +String+, the optional second and third
* parameters supply a filename and starting line number that are used
- * when reporting compilation errors. Note that, if a Proc that is
- * converted from a Method object is given as the block,
- * <code>instance_eval</code> will not change the context of this
- * block and it will be evaluated in Method object's original context.
+ * when reporting compilation errors.
*
* class Klass
* def initialize
@@ -6597,7 +6714,10 @@ specific_eval(int argc, VALUE *argv, VALUE klass, VALUE self)
*/
VALUE
-rb_obj_instance_eval(int argc, VALUE *argv, VALUE self)
+rb_obj_instance_eval(argc, argv, self)
+ int argc;
+ VALUE *argv;
+ VALUE self;
{
VALUE klass;
@@ -6612,38 +6732,6 @@ rb_obj_instance_eval(int argc, VALUE *argv, VALUE self)
/*
* call-seq:
- * obj.instance_exec(arg...) {|var...| block } => obj
- *
- * Executes the given block within the context of the receiver
- * (_obj_). In order to set the context, the variable +self+ is set
- * to _obj_ while the code is executing, giving the code access to
- * _obj_'s instance variables. Arguments are passed as block parameters.
- *
- * class Klass
- * def initialize
- * @secret = 99
- * end
- * end
- * k = Klass.new
- * k.instance_exec(5) {|x| @secret+x } #=> 104
- */
-
-VALUE
-rb_obj_instance_exec(int argc, VALUE *argv, VALUE self)
-{
- VALUE klass;
-
- if (SPECIAL_CONST_P(self)) {
- klass = Qnil;
- }
- else {
- klass = rb_singleton_class(self);
- }
- return yield_under(klass, self, rb_ary_new4(argc, argv));
-}
-
-/*
- * call-seq:
* mod.class_eval(string [, filename [, lineno]]) => obj
* mod.module_eval {|| block } => obj
*
@@ -6667,56 +6755,39 @@ rb_obj_instance_exec(int argc, VALUE *argv, VALUE self)
*/
VALUE
-rb_mod_module_eval(int argc, VALUE *argv, VALUE mod)
+rb_mod_module_eval(argc, argv, mod)
+ int argc;
+ VALUE *argv;
+ VALUE mod;
{
return specific_eval(argc, argv, mod, mod);
}
-/*
- * call-seq:
- * mod.module_exec(arg...) {|var...| block } => obj
- * mod.class_exec(arg...) {|var...| block } => obj
- *
- * Evaluates the given block in the context of the class/module.
- * The method defined in the block will belong to the receiver.
- *
- * class Thing
- * end
- * Thing.class_exec{
- * def hello() "Hello there!" end
- * }
- * puts Thing.new.hello()
- *
- * <em>produces:</em>
- *
- * Hello there!
- */
-
-VALUE
-rb_mod_module_exec(int argc, VALUE *argv, VALUE mod)
-{
- return yield_under(mod, mod, rb_ary_new4(argc, argv));
-}
-
VALUE rb_load_path;
-NORETURN(static void load_failed(VALUE));
+NORETURN(static void load_failed _((VALUE)));
void
-rb_load(VALUE fname, int wrap)
+rb_load(fname, wrap)
+ VALUE fname;
+ int wrap;
{
VALUE tmp;
int state;
volatile int prohibit_int = rb_prohibit_interrupt;
- volatile ID callee, this_func;
+ volatile ID last_func;
volatile VALUE wrapper = ruby_wrapper;
volatile VALUE self = ruby_top_self;
- NODE * volatile last_node;
+ NODE *volatile last_node;
NODE *saved_cref = ruby_cref;
TMP_PROTECT;
- if (!wrap) rb_secure(4);
- FilePathValue(fname);
+ if (wrap && ruby_safe_level >= 4) {
+ StringValue(fname);
+ }
+ else {
+ SafeStringValue(fname);
+ }
fname = rb_str_new4(fname);
tmp = rb_find_file(fname);
if (!tmp) {
@@ -6726,43 +6797,45 @@ rb_load(VALUE fname, int wrap)
ruby_errinfo = Qnil; /* ensure */
PUSH_VARS();
- ruby_cref = ruby_top_cref;
+ PUSH_CLASS(ruby_wrapper);
+ ruby_cref = top_cref;
if (!wrap) {
rb_secure(4); /* should alter global state */
+ ruby_class = rb_cObject;
ruby_wrapper = 0;
}
else {
/* load in anonymous module as toplevel */
- ruby_wrapper = rb_module_new();
+ ruby_class = ruby_wrapper = rb_module_new();
self = rb_obj_clone(ruby_top_self);
rb_extend_object(self, ruby_wrapper);
PUSH_CREF(ruby_wrapper);
- /* default visibility is private at loading toplevel */
- VIS_SET(VIS_PRIVATE);
}
- PUSH_FRAME(Qfalse);
+ PUSH_ITER(ITER_NOT);
+ PUSH_FRAME();
+ ruby_frame->last_func = 0;
+ ruby_frame->last_class = 0;
ruby_frame->self = self;
PUSH_SCOPE();
- PUSH_TAG(PROT_NONE);
/* default visibility is private at loading toplevel */
- VIS_SET(VIS_PRIVATE);
+ SCOPE_SET(SCOPE_PRIVATE);
+ PUSH_TAG(PROT_NONE);
state = EXEC_TAG();
- callee = ruby_frame->callee;
- this_func = ruby_frame->this_func;
+ last_func = ruby_frame->last_func;
last_node = ruby_current_node;
if (!ruby_current_node && ruby_sourcefile) {
- last_node = NEW_BEGIN(0);
+ last_node = NEW_NEWLINE(0);
}
ruby_current_node = 0;
if (state == 0) {
- NODE * volatile node;
+ NODE *node;
volatile int critical;
DEFER_INTS;
ruby_in_eval++;
critical = rb_thread_critical;
rb_thread_critical = Qtrue;
- rb_load_file(RSTRING_PTR(fname));
+ rb_load_file(RSTRING(fname)->ptr);
ruby_in_eval--;
node = ruby_eval_tree;
rb_thread_critical = critical;
@@ -6771,12 +6844,11 @@ rb_load(VALUE fname, int wrap)
eval_node(self, node);
}
}
- ruby_frame->callee = callee;
- ruby_frame->this_func = this_func;
+ ruby_frame->last_func = last_func;
ruby_current_node = last_node;
ruby_sourcefile = 0;
ruby_set_current_source();
- if (ruby_scope->flags == SCOPE_ALLOCA && ruby_cbase == rb_cObject) {
+ if (ruby_scope->flags == SCOPE_ALLOCA && ruby_class == rb_cObject) {
if (ruby_scope->local_tbl) /* toplevel was empty */
free(ruby_scope->local_tbl);
}
@@ -6785,6 +6857,8 @@ rb_load(VALUE fname, int wrap)
ruby_cref = saved_cref;
POP_SCOPE();
POP_FRAME();
+ POP_ITER();
+ POP_CLASS();
POP_VARS();
ruby_wrapper = wrapper;
if (ruby_nerrs > 0) {
@@ -6797,18 +6871,18 @@ rb_load(VALUE fname, int wrap)
}
void
-rb_load_protect(VALUE fname, int wrap, int *state)
+rb_load_protect(fname, wrap, state)
+ VALUE fname;
+ int wrap;
+ int *state;
{
int status;
- PUSH_THREAD_TAG();
+ PUSH_TAG(PROT_NONE);
if ((status = EXEC_TAG()) == 0) {
rb_load(fname, wrap);
}
- else if (status == TAG_THREAD) {
- rb_thread_start_1();
- }
- POP_THREAD_TAG();
+ POP_TAG();
if (state) *state = status;
}
@@ -6828,7 +6902,9 @@ rb_load_protect(VALUE fname, int wrap, int *state)
static VALUE
-rb_f_load(int argc, VALUE *argv)
+rb_f_load(argc, argv)
+ int argc;
+ VALUE *argv;
{
VALUE fname, wrap;
@@ -6848,8 +6924,10 @@ static st_table *loading_tbl;
#define IS_DLEXT(e) (strcmp(e, DLEXT) == 0)
#endif
-static int
-rb_feature_p(const char *feature, const char *ext, int rb)
+static char *
+rb_feature_p(feature, ext, rb)
+ const char *feature, *ext;
+ int rb;
{
VALUE v;
char *f, *e;
@@ -6863,20 +6941,20 @@ rb_feature_p(const char *feature, const char *ext, int rb)
len = strlen(feature);
elen = 0;
}
- for (i = 0; i < RARRAY_LEN(rb_features); ++i) {
- v = RARRAY_PTR(rb_features)[i];
+ for (i = 0; i < RARRAY(rb_features)->len; ++i) {
+ v = RARRAY(rb_features)->ptr[i];
f = StringValuePtr(v);
if (strncmp(f, feature, len) != 0) continue;
if (!*(e = f + len)) {
if (ext) continue;
- return 'u';
+ return e;
}
if (*e != '.') continue;
if ((!rb || !ext) && (IS_SOEXT(e) || IS_DLEXT(e))) {
- return 's';
+ return e;
}
if ((rb || !ext) && (strcmp(e, ".rb") == 0)) {
- return 'r';
+ return e;
}
}
return 0;
@@ -6890,50 +6968,44 @@ static const char *const loadable_ext[] = {
0
};
-static int search_required(VALUE, VALUE *);
-
int
-rb_provided(const char *feature)
+rb_provided(feature)
+ const char *feature;
{
int i;
char *buf;
- VALUE fname;
if (rb_feature_p(feature, 0, Qfalse))
return Qtrue;
- if (loading_tbl) {
- if (st_lookup(loading_tbl, (st_data_t)feature, 0)) return Qtrue;
- buf = ALLOCA_N(char, strlen(feature)+8);
- strcpy(buf, feature);
- for (i=0; loadable_ext[i]; i++) {
- strcpy(buf+strlen(feature), loadable_ext[i]);
- if (st_lookup(loading_tbl, (st_data_t)buf, 0)) return Qtrue;
- }
- }
- if (search_required(rb_str_new2(feature), &fname)) {
- feature = RSTRING_PTR(fname);
- if (rb_feature_p(feature, 0, Qfalse))
- return Qtrue;
- if (loading_tbl && st_lookup(loading_tbl, (st_data_t)feature, 0))
- return Qtrue;
+ if (!loading_tbl) return Qfalse;
+ if (st_lookup(loading_tbl, (st_data_t)feature, 0)) return Qtrue;
+ buf = ALLOCA_N(char, strlen(feature)+8);
+ strcpy(buf, feature);
+ for (i=0; ; i++) {
+ if (!loadable_ext[i]) break;
+ strcpy(buf+strlen(feature), loadable_ext[i]);
+ if (st_lookup(loading_tbl, (st_data_t)buf, 0)) return Qtrue;
}
return Qfalse;
}
static void
-rb_provide_feature(VALUE feature)
+rb_provide_feature(feature)
+ VALUE feature;
{
rb_ary_push(rb_features, feature);
}
void
-rb_provide(const char *feature)
+rb_provide(feature)
+ const char *feature;
{
rb_provide_feature(rb_str_new2(feature));
}
static int
-load_wait(char *ftptr)
+load_wait(ftptr)
+ char *ftptr;
{
st_data_t th;
@@ -6969,156 +7041,139 @@ load_wait(char *ftptr)
*/
VALUE
-rb_f_require(VALUE obj, VALUE fname)
+rb_f_require(obj, fname)
+ VALUE obj, fname;
{
return rb_require_safe(fname, ruby_safe_level);
}
static int
-search_required(VALUE fname, VALUE *path)
+search_required(fname, featurep, path)
+ VALUE fname, *featurep, *path;
{
VALUE tmp;
char *ext, *ftptr;
- int type, ft = 0;
+ int type;
+ *featurep = fname;
*path = 0;
- ext = strrchr(ftptr = RSTRING_PTR(fname), '.');
+ ext = strrchr(ftptr = RSTRING(fname)->ptr, '.');
if (ext && !strchr(ext, '/')) {
if (strcmp(".rb", ext) == 0) {
if (rb_feature_p(ftptr, ext, Qtrue)) return 'r';
- if (tmp = rb_find_file(fname)) {
- tmp = rb_file_expand_path(tmp, Qnil);
- ext = strrchr(ftptr = RSTRING_PTR(tmp), '.');
- if (!rb_feature_p(ftptr, ext, Qtrue))
- *path = tmp;
- return 'r';
- }
+ if (*path = rb_find_file(fname)) return 'r';
return 0;
}
else if (IS_SOEXT(ext)) {
if (rb_feature_p(ftptr, ext, Qfalse)) return 's';
- tmp = rb_str_new(RSTRING_PTR(fname), ext-RSTRING_PTR(fname));
+ tmp = rb_str_new(RSTRING(fname)->ptr, ext-RSTRING(fname)->ptr);
+ *featurep = tmp;
#ifdef DLEXT2
OBJ_FREEZE(tmp);
if (rb_find_file_ext(&tmp, loadable_ext+1)) {
- tmp = rb_file_expand_path(tmp, Qnil);
- ext = strrchr(ftptr = RSTRING_PTR(tmp), '.');
- if (!rb_feature_p(ftptr, ext, Qfalse))
- *path = tmp;
+ *featurep = tmp;
+ *path = rb_find_file(tmp);
return 's';
}
#else
rb_str_cat2(tmp, DLEXT);
OBJ_FREEZE(tmp);
- if (tmp = rb_find_file(tmp)) {
- tmp = rb_file_expand_path(tmp, Qnil);
- ext = strrchr(ftptr = RSTRING_PTR(tmp), '.');
- if (!rb_feature_p(ftptr, ext, Qfalse))
- *path = tmp;
+ if (*path = rb_find_file(tmp)) {
return 's';
}
#endif
}
else if (IS_DLEXT(ext)) {
if (rb_feature_p(ftptr, ext, Qfalse)) return 's';
- if (tmp = rb_find_file(fname)) {
- tmp = rb_file_expand_path(tmp, Qnil);
- ext = strrchr(ftptr = RSTRING_PTR(tmp), '.');
- if (!rb_feature_p(ftptr, ext, Qfalse))
- *path = tmp;
- return 's';
- }
+ if (*path = rb_find_file(fname)) return 's';
}
}
- else if ((ft = rb_feature_p(ftptr, 0, Qfalse)) == 'r') {
- return 'r';
- }
tmp = fname;
- type = rb_find_file_ext(&tmp, loadable_ext);
- tmp = rb_file_expand_path(tmp, Qnil);
- switch (type) {
+ switch (type = rb_find_file_ext(&tmp, loadable_ext)) {
case 0:
- ftptr = RSTRING_PTR(tmp);
- if (ft) break;
- return rb_feature_p(ftptr, 0, Qfalse);
+ if ((ext = rb_feature_p(ftptr, 0, Qfalse))) {
+ type = strcmp(".rb", ext);
+ break;
+ }
+ return 0;
default:
- if (ft) break;
- case 1:
- ext = strrchr(ftptr = RSTRING_PTR(tmp), '.');
+ *featurep = tmp;
+ ext = strrchr(ftptr = RSTRING(tmp)->ptr, '.');
if (rb_feature_p(ftptr, ext, !--type)) break;
- *path = tmp;
+ *path = rb_find_file(tmp);
}
return type ? 's' : 'r';
}
static void
-load_failed(VALUE fname)
+load_failed(fname)
+ VALUE fname;
{
- rb_raise(rb_eLoadError, "no such file to load -- %s", RSTRING_PTR(fname));
+ rb_raise(rb_eLoadError, "no such file to load -- %s", RSTRING(fname)->ptr);
}
VALUE
-rb_require_safe(VALUE fname, int safe)
+rb_require_safe(fname, safe)
+ VALUE fname;
+ int safe;
{
VALUE result = Qnil;
volatile VALUE errinfo = ruby_errinfo;
int state;
struct {
NODE *node;
- ID this_func, callee;
- int safe, vmode;
+ ID func;
+ int vmode, safe;
} volatile saved;
char *volatile ftptr = 0;
+ if (OBJ_TAINTED(fname)) {
+ rb_check_safe_obj(fname);
+ }
+ StringValue(fname);
+ fname = rb_str_new4(fname);
+ saved.vmode = scope_vmode;
saved.node = ruby_current_node;
- saved.callee = ruby_frame->callee;
- saved.this_func = ruby_frame->this_func;
+ saved.func = ruby_frame->last_func;
saved.safe = ruby_safe_level;
- saved.vmode = vis_mode;
- PUSH_SCOPE();
- PUSH_CREF(ruby_cbase);
- VIS_SET(VIS_PUBLIC);
PUSH_TAG(PROT_NONE);
if ((state = EXEC_TAG()) == 0) {
- VALUE path;
+ VALUE feature, path;
long handle;
int found;
ruby_safe_level = safe;
- FilePathValue(fname);
- *(volatile VALUE *)&fname = rb_str_new4(fname);
- found = search_required(fname, &path);
+ found = search_required(fname, &feature, &path);
if (found) {
- if (!path || load_wait(RSTRING_PTR(path))) {
+ if (!path || load_wait(RSTRING(feature)->ptr)) {
result = Qfalse;
}
else {
ruby_safe_level = 0;
- /* loading ruby library should be serialized. */
- if (!loading_tbl) {
- loading_tbl = st_init_strtable();
- }
- /* partial state */
- ftptr = ruby_strdup(RSTRING_PTR(path));
- st_insert(loading_tbl, (st_data_t)ftptr, (st_data_t)curr_thread);
switch (found) {
case 'r':
+ /* loading ruby library should be serialized. */
+ if (!loading_tbl) {
+ loading_tbl = st_init_strtable();
+ }
+ /* partial state */
+ ftptr = ruby_strdup(RSTRING(feature)->ptr);
+ st_insert(loading_tbl, (st_data_t)ftptr, (st_data_t)curr_thread);
rb_load(path, 0);
break;
case 's':
ruby_current_node = 0;
- ruby_sourcefile = rb_source_filename(RSTRING_PTR(path));
+ ruby_sourcefile = rb_source_filename(RSTRING(path)->ptr);
ruby_sourceline = 0;
- ruby_frame->callee = 0;
- ruby_frame->this_func = 0;
- VIS_SET(VIS_PUBLIC);
- handle = (long)dln_load(RSTRING_PTR(path));
+ ruby_frame->last_func = 0;
+ SCOPE_SET(SCOPE_PUBLIC);
+ handle = (long)dln_load(RSTRING(path)->ptr);
rb_ary_push(ruby_dln_librefs, LONG2NUM(handle));
break;
}
- rb_provide_feature(path);
+ rb_provide_feature(feature);
result = Qtrue;
}
}
@@ -7126,12 +7181,9 @@ rb_require_safe(VALUE fname, int safe)
POP_TAG();
ruby_current_node = saved.node;
ruby_set_current_source();
- ruby_frame->this_func = saved.this_func;
- ruby_frame->callee = saved.callee;
+ ruby_frame->last_func = saved.func;
+ SCOPE_SET(saved.vmode);
ruby_safe_level = saved.safe;
- VIS_SET(saved.vmode);
- POP_CREF();
- POP_SCOPE();
if (ftptr) {
if (st_delete(loading_tbl, (st_data_t *)&ftptr, 0)) { /* loading done */
free(ftptr);
@@ -7147,7 +7199,8 @@ rb_require_safe(VALUE fname, int safe)
}
VALUE
-rb_require(const char *fname)
+rb_require(fname)
+ const char *fname;
{
VALUE fn = rb_str_new2(fname);
OBJ_FREEZE(fn);
@@ -7155,7 +7208,8 @@ rb_require(const char *fname)
}
static void
-secure_visibility(VALUE self)
+secure_visibility(self)
+ VALUE self;
{
if (ruby_safe_level >= 4 && !OBJ_TAINTED(self)) {
rb_raise(rb_eSecurityError, "Insecure: can't change method visibility");
@@ -7163,7 +7217,11 @@ secure_visibility(VALUE self)
}
static void
-set_method_visibility(VALUE self, int argc, VALUE *argv, ID ex)
+set_method_visibility(self, argc, argv, ex)
+ VALUE self;
+ int argc;
+ VALUE *argv;
+ ID ex;
{
int i;
@@ -7171,6 +7229,7 @@ set_method_visibility(VALUE self, int argc, VALUE *argv, ID ex)
for (i=0; i<argc; i++) {
rb_export_method(self, rb_to_id(argv[i]), ex);
}
+ rb_clear_cache_by_class(self);
}
/*
@@ -7184,11 +7243,14 @@ set_method_visibility(VALUE self, int argc, VALUE *argv, ID ex)
*/
static VALUE
-rb_mod_public(int argc, VALUE *argv, VALUE module)
+rb_mod_public(argc, argv, module)
+ int argc;
+ VALUE *argv;
+ VALUE module;
{
secure_visibility(module);
if (argc == 0) {
- VIS_SET(VIS_PUBLIC);
+ SCOPE_SET(SCOPE_PUBLIC);
}
else {
set_method_visibility(module, argc, argv, NOEX_PUBLIC);
@@ -7207,11 +7269,14 @@ rb_mod_public(int argc, VALUE *argv, VALUE module)
*/
static VALUE
-rb_mod_protected(int argc, VALUE *argv, VALUE module)
+rb_mod_protected(argc, argv, module)
+ int argc;
+ VALUE *argv;
+ VALUE module;
{
secure_visibility(module);
if (argc == 0) {
- VIS_SET(VIS_PROTECTED);
+ SCOPE_SET(SCOPE_PROTECTED);
}
else {
set_method_visibility(module, argc, argv, NOEX_PROTECTED);
@@ -7239,11 +7304,14 @@ rb_mod_protected(int argc, VALUE *argv, VALUE module)
*/
static VALUE
-rb_mod_private(int argc, VALUE *argv, VALUE module)
+rb_mod_private(argc, argv, module)
+ int argc;
+ VALUE *argv;
+ VALUE module;
{
secure_visibility(module);
if (argc == 0) {
- VIS_SET(VIS_PRIVATE);
+ SCOPE_SET(SCOPE_PRIVATE);
}
else {
set_method_visibility(module, argc, argv, NOEX_PRIVATE);
@@ -7253,37 +7321,16 @@ rb_mod_private(int argc, VALUE *argv, VALUE module)
/*
* call-seq:
- * local => self
- * local(symbol, ...) => self
- *
- * With no arguments, sets the default visibility for subsequently
- * defined methods to local. With arguments, sets the named methods to
- * have local visibility.
- */
-
-static VALUE
-rb_mod_local(int argc, VALUE *argv, VALUE module)
-{
- secure_visibility(module);
- if (argc == 0) {
- VIS_SET(VIS_LOCAL);
- }
- else {
- set_method_visibility(module, argc, argv, NOEX_LOCAL);
- rb_clear_cache();
- }
- return module;
-}
-
-/*
- * call-seq:
* mod.public_class_method(symbol, ...) => mod
*
* Makes a list of existing class methods public.
*/
static VALUE
-rb_mod_public_method(int argc, VALUE *argv, VALUE obj)
+rb_mod_public_method(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
set_method_visibility(CLASS_OF(obj), argc, argv, NOEX_PUBLIC);
return obj;
@@ -7306,7 +7353,10 @@ rb_mod_public_method(int argc, VALUE *argv, VALUE obj)
*/
static VALUE
-rb_mod_private_method(int argc, VALUE *argv, VALUE obj)
+rb_mod_private_method(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
set_method_visibility(CLASS_OF(obj), argc, argv, NOEX_PRIVATE);
return obj;
@@ -7323,23 +7373,17 @@ rb_mod_private_method(int argc, VALUE *argv, VALUE obj)
*/
static VALUE
-top_public(int argc, VALUE *argv)
+top_public(argc, argv)
+ int argc;
+ VALUE *argv;
{
return rb_mod_public(argc, argv, rb_cObject);
}
-/*
- * call-seq:
- * private => self
- * private(symbol, ...) => self
- *
- * With no arguments, sets the default visibility for subsequently
- * defined methods to private. With arguments, sets the named methods
- * to have private visibility.
- */
-
static VALUE
-top_private(int argc, VALUE *argv)
+top_private(argc, argv)
+ int argc;
+ VALUE *argv;
{
return rb_mod_private(argc, argv, rb_cObject);
}
@@ -7381,7 +7425,10 @@ top_private(int argc, VALUE *argv)
*/
static VALUE
-rb_mod_modfunc(int argc, VALUE *argv, VALUE module)
+rb_mod_modfunc(argc, argv, module)
+ int argc;
+ VALUE *argv;
+ VALUE module;
{
int i;
ID id;
@@ -7393,7 +7440,7 @@ rb_mod_modfunc(int argc, VALUE *argv, VALUE module)
secure_visibility(module);
if (argc == 0) {
- VIS_SET(VIS_MODFUNC);
+ SCOPE_SET(SCOPE_MODFUNC);
return module;
}
@@ -7403,9 +7450,9 @@ rb_mod_modfunc(int argc, VALUE *argv, VALUE module)
id = rb_to_id(argv[i]);
for (;;) {
- body = search_method(m, id, &m, LOOKUP_NOSKIP, 0);
+ body = search_method(m, id, &m);
if (body == 0) {
- body = search_method(rb_cObject, id, &m, LOOKUP_NOSKIP, 0);
+ body = search_method(rb_cObject, id, &m);
}
if (body == 0 || body->nd_body == 0) {
rb_bug("undefined method `%s'; can't happen", rb_id2name(id));
@@ -7434,17 +7481,18 @@ rb_mod_modfunc(int argc, VALUE *argv, VALUE module)
*/
static VALUE
-rb_mod_append_features(VALUE module, VALUE dest)
+rb_mod_append_features(module, include)
+ VALUE module, include;
{
- switch (TYPE(dest)) {
+ switch (TYPE(include)) {
case T_CLASS:
case T_MODULE:
break;
default:
- Check_Type(dest, T_CLASS);
+ Check_Type(include, T_CLASS);
break;
}
- rb_include_module(dest, module);
+ rb_include_module(include, module);
return module;
}
@@ -7457,7 +7505,10 @@ rb_mod_append_features(VALUE module, VALUE dest)
*/
static VALUE
-rb_mod_include(int argc, VALUE *argv, VALUE module)
+rb_mod_include(argc, argv, module)
+ int argc;
+ VALUE *argv;
+ VALUE module;
{
int i;
@@ -7470,14 +7521,19 @@ rb_mod_include(int argc, VALUE *argv, VALUE module)
}
void
-rb_obj_call_init(VALUE obj, int argc, VALUE *argv)
+rb_obj_call_init(obj, argc, argv)
+ VALUE obj;
+ int argc;
+ VALUE *argv;
{
- rb_call(CLASS_OF(obj), obj, init, argc, argv,
- ruby_frame->block, CALLING_FUNCALL, 1, Qundef);
+ PUSH_ITER(rb_block_given_p()?ITER_PRE:ITER_NOT);
+ rb_funcall2(obj, init, argc, argv);
+ POP_ITER();
}
void
-rb_extend_object(VALUE obj, VALUE module)
+rb_extend_object(obj, module)
+ VALUE obj, module;
{
rb_include_module(rb_singleton_class(obj), module);
}
@@ -7510,7 +7566,8 @@ rb_extend_object(VALUE obj, VALUE module)
*/
static VALUE
-rb_mod_extend_object(VALUE mod, VALUE obj)
+rb_mod_extend_object(mod, obj)
+ VALUE mod, obj;
{
rb_extend_object(obj, mod);
return obj;
@@ -7542,7 +7599,10 @@ rb_mod_extend_object(VALUE mod, VALUE obj)
*/
static VALUE
-rb_obj_extend(int argc, VALUE *argv, VALUE obj)
+rb_obj_extend(argc, argv, obj)
+ int argc;
+ VALUE *argv;
+ VALUE obj;
{
int i;
@@ -7567,7 +7627,10 @@ rb_obj_extend(int argc, VALUE *argv, VALUE obj)
*/
static VALUE
-top_include(int argc, VALUE *argv, VALUE self)
+top_include(argc, argv, self)
+ int argc;
+ VALUE *argv;
+ VALUE self;
{
rb_secure(4);
if (ruby_wrapper) {
@@ -7577,11 +7640,14 @@ top_include(int argc, VALUE *argv, VALUE self)
return rb_mod_include(argc, argv, rb_cObject);
}
-VALUE rb_f_trace_var(int, VALUE *);
-VALUE rb_f_untrace_var(int, VALUE *);
+VALUE rb_f_trace_var();
+VALUE rb_f_untrace_var();
static void
-errinfo_setter(VALUE val, ID id, VALUE *var)
+errinfo_setter(val, id, var)
+ VALUE val;
+ ID id;
+ VALUE *var;
{
if (!NIL_P(val) && !rb_obj_is_kind_of(val, rb_eException)) {
rb_raise(rb_eTypeError, "assigning non-exception to $!");
@@ -7590,13 +7656,17 @@ errinfo_setter(VALUE val, ID id, VALUE *var)
}
static VALUE
-errat_getter(ID id)
+errat_getter(id)
+ ID id;
{
return get_backtrace(ruby_errinfo);
}
static void
-errat_setter(VALUE val, ID id, VALUE *var)
+errat_setter(val, id, var)
+ VALUE val;
+ ID id;
+ VALUE *var;
{
if (NIL_P(ruby_errinfo)) {
rb_raise(rb_eArgError, "$! not set");
@@ -7618,7 +7688,7 @@ errat_setter(VALUE val, ID id, VALUE *var)
*/
static VALUE
-rb_f_local_variables(void)
+rb_f_local_variables()
{
ID *tbl;
int n, i;
@@ -7630,14 +7700,14 @@ rb_f_local_variables(void)
n = *tbl++;
for (i=2; i<n; i++) { /* skip first 2 ($_ and $~) */
if (!rb_is_local_id(tbl[i])) continue; /* skip flip states */
- rb_ary_push(ary, ID2SYM(tbl[i]));
+ rb_ary_push(ary, rb_str_new2(rb_id2name(tbl[i])));
}
}
vars = ruby_dyna_vars;
while (vars) {
if (vars->id && rb_is_local_id(vars->id)) { /* skip $_, $~ and flip states */
- rb_ary_push(ary, ID2SYM(vars->id));
+ rb_ary_push(ary, rb_str_new2(rb_id2name(vars->id)));
}
vars = vars->next;
}
@@ -7645,8 +7715,8 @@ rb_f_local_variables(void)
return ary;
}
-static VALUE rb_f_catch(VALUE,VALUE);
-NORETURN(static VALUE rb_f_throw(int,VALUE*));
+static VALUE rb_f_catch _((VALUE,VALUE));
+NORETURN(static VALUE rb_f_throw _((int,VALUE*)));
struct end_proc_data {
void (*func)();
@@ -7658,7 +7728,9 @@ struct end_proc_data {
static struct end_proc_data *end_procs, *ephemeral_end_procs, *tmp_end_procs;
void
-rb_set_end_proc(void (*func) (VALUE), VALUE data)
+rb_set_end_proc(func, data)
+ void (*func) _((VALUE));
+ VALUE data;
{
struct end_proc_data *link = ALLOC(struct end_proc_data);
struct end_proc_data **list;
@@ -7673,7 +7745,7 @@ rb_set_end_proc(void (*func) (VALUE), VALUE data)
}
void
-rb_mark_end_proc(void)
+rb_mark_end_proc()
{
struct end_proc_data *link;
@@ -7694,20 +7766,29 @@ rb_mark_end_proc(void)
}
}
+static void call_end_proc _((VALUE data));
+
static void
-call_end_proc(VALUE data)
+call_end_proc(data)
+ VALUE data;
{
- PUSH_FRAME(Qfalse);
+ PUSH_ITER(ITER_NOT);
+ PUSH_FRAME();
ruby_frame->self = ruby_frame->prev->self;
ruby_frame->node = 0;
- proc_invoke(data, rb_ary_new2(0), Qundef, 0, INVOKE_VALUES);
+ ruby_frame->last_func = 0;
+ ruby_frame->last_class = 0;
+ proc_invoke(data, rb_ary_new2(0), Qundef, 0);
POP_FRAME();
+ POP_ITER();
}
static void
-rb_f_END(void)
+rb_f_END()
{
- PUSH_FRAME(Qfalse);
+ PUSH_FRAME();
+ ruby_frame->argc = 0;
+ ruby_frame->iter = ITER_CUR;
rb_set_end_proc(call_end_proc, rb_block_proc());
POP_FRAME();
}
@@ -7734,7 +7815,7 @@ rb_f_END(void)
*/
static VALUE
-rb_f_at_exit(void)
+rb_f_at_exit()
{
VALUE proc;
@@ -7747,7 +7828,7 @@ rb_f_at_exit(void)
}
void
-rb_exec_end_proc(void)
+rb_exec_end_proc()
{
struct end_proc_data *link, *tmp;
int status;
@@ -7792,74 +7873,8 @@ rb_exec_end_proc(void)
ruby_safe_level = safe;
}
-/*
- * call-seq:
- * __method__ => symbol
- *
- * Returns the name of the current method as a Symbol.
- * If called from inside of an aliased method it will return the original
- * nonaliased name.
- * If called outside of a method, it returns <code>nil</code>.
- *
- * def foo
- * __method__
- * end
- * alias bar foo
- *
- * foo # => :foo
- * bar # => :foo
- *
- * See also <code>\_\_callee__</code>.
- *
- */
-
-static VALUE
-rb_f_method_name(void)
-{
- struct FRAME* prev = ruby_frame->prev;
- if (prev && prev->this_func) {
- return ID2SYM(prev->this_func);
- }
- else {
- return Qnil;
- }
-}
-
-/*
- * call-seq:
- * __callee__ => symbol
- *
- * Returns the name of the current method as Symbol.
- * If called from inside of an aliased method it will return the aliased
- * name.
- * If called outside of a method, it returns <code>nil</code>.
- *
- * def foo
- * __callee__
- * end
- * alias bar foo
- *
- * foo # => :foo
- * bar # => :bar
- *
- * See also <code>\_\_method__</code>.
- *
- */
-
-static VALUE
-rb_f_callee_name(void)
-{
- struct FRAME* prev = ruby_frame->prev;
- if (prev && prev->callee) {
- return ID2SYM(prev->callee);
- }
- else {
- return Qnil;
- }
-}
-
void
-Init_eval(void)
+Init_eval()
{
init = rb_intern("initialize");
eqq = rb_intern("===");
@@ -7876,11 +7891,12 @@ Init_eval(void)
undefined = rb_intern("method_undefined");
singleton_undefined = rb_intern("singleton_method_undefined");
- object_id = rb_intern("object_id");
- __send = rb_intern("__send");
- __send_bang = rb_intern("__send!");
+ __id__ = rb_intern("__id__");
+ __send__ = rb_intern("__send__");
rb_global_variable((VALUE*)&top_scope);
+ rb_global_variable((VALUE*)&ruby_eval_tree_begin);
+
rb_global_variable((VALUE*)&ruby_eval_tree);
rb_global_variable((VALUE*)&ruby_dyna_vars);
@@ -7890,13 +7906,13 @@ Init_eval(void)
rb_define_global_function("eval", rb_f_eval, -1);
rb_define_global_function("iterator?", rb_f_block_given_p, 0);
rb_define_global_function("block_given?", rb_f_block_given_p, 0);
+ rb_define_global_function("method_missing", rb_method_missing, -1);
rb_define_global_function("loop", rb_f_loop, 0);
- rb_define_private_method(rb_cBasicObject, "method_missing", rb_method_missing, -1);
- rb_define_method(rb_cBasicObject, "respond_to?", obj_respond_to, -1);
+ rb_define_method(rb_mKernel, "respond_to?", obj_respond_to, -1);
respond_to = rb_intern("respond_to?");
rb_global_variable((VALUE*)&basic_respond_to);
- basic_respond_to = rb_method_node(rb_cBasicObject, respond_to);
+ basic_respond_to = rb_method_node(rb_cObject, respond_to);
rb_define_global_function("raise", rb_f_raise, -1);
rb_define_global_function("fail", rb_f_raise, -1);
@@ -7913,17 +7929,9 @@ Init_eval(void)
rb_define_global_function("global_variables", rb_f_global_variables, 0); /* in variable.c */
rb_define_global_function("local_variables", rb_f_local_variables, 0);
- rb_define_global_function("__method__", rb_f_method_name, 0);
- rb_define_global_function("__callee__", rb_f_callee_name, 0);
-
- rb_define_method(rb_cBasicObject, "send", rb_f_send, -1);
- rb_define_method(rb_cBasicObject, "__send__", rb_f_send, -1);
- rb_define_method(rb_cBasicObject, "__send", rb_f_send, -1);
- rb_define_method(rb_cBasicObject, "funcall", rb_f_funcall, -1);
- rb_define_method(rb_cBasicObject, "__send!", rb_f_funcall, -1);
+ rb_define_method(rb_mKernel, "send", rb_f_send, -1);
+ rb_define_method(rb_mKernel, "__send__", rb_f_send, -1);
rb_define_method(rb_mKernel, "instance_eval", rb_obj_instance_eval, -1);
- rb_define_method(rb_mKernel, "instance_exec", rb_obj_instance_exec, -1);
- rb_define_method(rb_mKernel, "define_singleton_method", rb_obj_define_method, -1);
rb_define_private_method(rb_cModule, "append_features", rb_mod_append_features, 1);
rb_define_private_method(rb_cModule, "extend_object", rb_mod_extend_object, 1);
@@ -7931,9 +7939,8 @@ Init_eval(void)
rb_define_private_method(rb_cModule, "public", rb_mod_public, -1);
rb_define_private_method(rb_cModule, "protected", rb_mod_protected, -1);
rb_define_private_method(rb_cModule, "private", rb_mod_private, -1);
- rb_define_private_method(rb_cModule, "local", rb_mod_local, -1);
rb_define_private_method(rb_cModule, "module_function", rb_mod_modfunc, -1);
- rb_define_method(rb_cModule, "method_defined?", rb_mod_method_defined, -1);
+ rb_define_method(rb_cModule, "method_defined?", rb_mod_method_defined, 1);
rb_define_method(rb_cModule, "public_method_defined?", rb_mod_public_method_defined, 1);
rb_define_method(rb_cModule, "private_method_defined?", rb_mod_private_method_defined, 1);
rb_define_method(rb_cModule, "protected_method_defined?", rb_mod_protected_method_defined, 1);
@@ -7941,8 +7948,6 @@ Init_eval(void)
rb_define_method(rb_cModule, "private_class_method", rb_mod_private_method, -1);
rb_define_method(rb_cModule, "module_eval", rb_mod_module_eval, -1);
rb_define_method(rb_cModule, "class_eval", rb_mod_module_eval, -1);
- rb_define_method(rb_cModule, "module_exec", rb_mod_module_exec, -1);
- rb_define_method(rb_cModule, "class_exec", rb_mod_module_exec, -1);
rb_undef_method(rb_cClass, "module_function");
@@ -7973,7 +7978,7 @@ Init_eval(void)
* call-seq:
* mod.autoload(name, filename) => nil
*
- * Registers _filename_ to be loaded (using <code>Kernel::require</code>)
+ * Registers _filename_ to be loaded (using <code>Kernel::require</code>)
* the first time that _name_ (which may be a <code>String</code> or
* a symbol) is accessed in the namespace of _mod_.
*
@@ -7984,12 +7989,15 @@ Init_eval(void)
*/
static VALUE
-rb_mod_autoload(VALUE mod, VALUE sym, VALUE file)
+rb_mod_autoload(mod, sym, file)
+ VALUE mod;
+ VALUE sym;
+ VALUE file;
{
ID id = rb_to_id(sym);
Check_SafeStr(file);
- rb_autoload(mod, id, RSTRING_PTR(file));
+ rb_autoload(mod, id, RSTRING(file)->ptr);
return Qnil;
}
@@ -8007,7 +8015,8 @@ rb_mod_autoload(VALUE mod, VALUE sym, VALUE file)
*/
static VALUE
-rb_mod_autoload_p(VALUE mod, VALUE sym)
+rb_mod_autoload_p(mod, sym)
+ VALUE mod, sym;
{
return rb_autoload_p(mod, rb_to_id(sym));
}
@@ -8016,7 +8025,7 @@ rb_mod_autoload_p(VALUE mod, VALUE sym)
* call-seq:
* autoload(module, filename) => nil
*
- * Registers _filename_ to be loaded (using <code>Kernel::require</code>)
+ * Registers _filename_ to be loaded (using <code>Kernel::require</code>)
* the first time that _module_ (which may be a <code>String</code> or
* a symbol) is accessed.
*
@@ -8024,7 +8033,10 @@ rb_mod_autoload_p(VALUE mod, VALUE sym)
*/
static VALUE
-rb_f_autoload(VALUE obj, VALUE sym, VALUE file)
+rb_f_autoload(obj, sym, file)
+ VALUE obj;
+ VALUE sym;
+ VALUE file;
{
if (NIL_P(ruby_cbase)) {
rb_raise(rb_eTypeError, "no class/module for autoload target");
@@ -8034,17 +8046,19 @@ rb_f_autoload(VALUE obj, VALUE sym, VALUE file)
/*
* call-seq:
- * autoload(module) => filename or nil
+ * autoload(module, filename) => nil
*
- * Returns _filename_ to be loaded if _module_ is registered as
- * +autoload+.
+ * Registers _filename_ to be loaded (using <code>Kernel::require</code>)
+ * the first time that _module_ (which may be a <code>String</code> or
+ * a symbol) is accessed.
*
* autoload(:MyModule, "/usr/local/lib/modules/my_module.rb")
- * autoload?(:MyModule) # => "/usr/local/lib/modules/my_module.rb"
*/
static VALUE
-rb_f_autoload_p(VALUE obj, VALUE sym)
+rb_f_autoload_p(obj, sym)
+ VALUE obj;
+ VALUE sym;
{
/* use ruby_cbase as same as rb_f_autoload. */
if (NIL_P(ruby_cbase)) {
@@ -8054,7 +8068,7 @@ rb_f_autoload_p(VALUE obj, VALUE sym)
}
void
-Init_load(void)
+Init_load()
{
rb_define_readonly_variable("$:", &rb_load_path);
rb_define_readonly_variable("$-I", &rb_load_path);
@@ -8078,9 +8092,10 @@ Init_load(void)
}
static void
-scope_dup(struct SCOPE *scope)
+scope_dup(scope)
+ struct SCOPE *scope;
{
- volatile ID *tbl;
+ ID *tbl;
VALUE *vars;
scope->flags |= SCOPE_DONT_RECYCLE;
@@ -8097,7 +8112,8 @@ scope_dup(struct SCOPE *scope)
}
static void
-blk_mark(struct BLOCK *data)
+blk_mark(data)
+ struct BLOCK *data;
{
while (data) {
rb_gc_mark_frame(&data->frame);
@@ -8109,12 +8125,13 @@ blk_mark(struct BLOCK *data)
rb_gc_mark((VALUE)data->cref);
rb_gc_mark(data->wrapper);
rb_gc_mark(data->block_obj);
- data = data->frame.block;
+ data = data->prev;
}
}
static void
-frame_free(struct FRAME *frame)
+frame_free(frame)
+ struct FRAME *frame;
{
struct FRAME *tmp;
@@ -8127,20 +8144,22 @@ frame_free(struct FRAME *frame)
}
static void
-blk_free(struct BLOCK *data)
+blk_free(data)
+ struct BLOCK *data;
{
void *tmp;
while (data) {
frame_free(&data->frame);
tmp = data;
- data = data->frame.block;
+ data = data->prev;
free(tmp);
}
}
static void
-frame_dup(struct FRAME *frame)
+frame_dup(frame)
+ struct FRAME *frame;
{
struct FRAME *tmp;
@@ -8154,40 +8173,44 @@ frame_dup(struct FRAME *frame)
}
}
-static void
-dvar_nail_down(struct RVarmap *vars)
-{
- while (vars) {
- if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
- FL_SET(vars, DVAR_DONT_RECYCLE);
- vars = vars->next;
- }
-}
static void
-blk_nail_down(struct BLOCK *block)
+blk_copy_prev(block)
+ struct BLOCK *block;
{
struct BLOCK *tmp;
+ struct RVarmap* vars;
- dvar_nail_down(block->dyna_vars);
- while (block->frame.block) {
+ while (block->prev) {
tmp = ALLOC_N(struct BLOCK, 1);
- MEMCPY(tmp, block->frame.block, struct BLOCK, 1);
+ MEMCPY(tmp, block->prev, struct BLOCK, 1);
scope_dup(tmp->scope);
frame_dup(&tmp->frame);
- dvar_nail_down(tmp->dyna_vars);
- block->frame.block = tmp;
+
+ for (vars = tmp->dyna_vars; vars; vars = vars->next) {
+ if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
+ FL_SET(vars, DVAR_DONT_RECYCLE);
+ }
+
+ block->prev = tmp;
block = tmp;
}
}
static void
-blk_dup(struct BLOCK *dup, struct BLOCK *orig)
+blk_dup(dup, orig)
+ struct BLOCK *dup, *orig;
{
MEMCPY(dup, orig, struct BLOCK, 1);
frame_dup(&dup->frame);
- blk_nail_down(dup);
+
+ if (dup->iter) {
+ blk_copy_prev(dup);
+ }
+ else {
+ dup->prev = 0;
+ }
}
/*
@@ -8195,7 +8218,8 @@ blk_dup(struct BLOCK *dup, struct BLOCK *orig)
*/
static VALUE
-proc_clone(VALUE self)
+proc_clone(self)
+ VALUE self;
{
struct BLOCK *orig, *data;
VALUE bind;
@@ -8204,7 +8228,6 @@ proc_clone(VALUE self)
bind = Data_Make_Struct(rb_obj_class(self),struct BLOCK,blk_mark,blk_free,data);
CLONESETUP(bind, self);
blk_dup(data, orig);
- if (orig->block_obj) data->block_obj = bind;
return bind;
}
@@ -8214,7 +8237,8 @@ proc_clone(VALUE self)
*/
static VALUE
-proc_dup(VALUE self)
+proc_dup(self)
+ VALUE self;
{
struct BLOCK *orig, *data;
VALUE bind;
@@ -8243,152 +8267,131 @@ proc_dup(VALUE self)
*/
static VALUE
-rb_f_binding(VALUE self)
+rb_f_binding(self)
+ VALUE self;
{
- struct BLOCK *data;
+ struct BLOCK *data, *p;
+ struct RVarmap *vars;
VALUE bind;
- PUSH_FRAME(Qtrue);
- PUSH_BLOCK(ruby_frame->block,0,0);
+ PUSH_BLOCK(0,0);
bind = Data_Make_Struct(rb_cBinding,struct BLOCK,blk_mark,blk_free,data);
- *data = *ruby_frame->block;
+ *data = *ruby_block;
data->orig_thread = rb_thread_current();
data->wrapper = ruby_wrapper;
+ data->iter = rb_f_block_given_p();
frame_dup(&data->frame);
if (ruby_frame->prev) {
- data->frame.callee = ruby_frame->prev->callee;
- data->frame.this_func = ruby_frame->prev->this_func;
- data->frame.this_class = ruby_frame->prev->this_class;
+ data->frame.last_func = ruby_frame->prev->last_func;
+ data->frame.last_class = ruby_frame->prev->last_class;
+ data->frame.orig_func = ruby_frame->prev->orig_func;
+ }
+
+ if (data->iter) {
+ blk_copy_prev(data);
+ }
+ else {
+ data->prev = 0;
+ }
+
+ for (p = data; p; p = p->prev) {
+ for (vars = p->dyna_vars; vars; vars = vars->next) {
+ if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
+ FL_SET(vars, DVAR_DONT_RECYCLE);
+ }
}
- blk_nail_down(data);
scope_dup(data->scope);
POP_BLOCK();
- POP_FRAME();
return bind;
}
-/*
- * call-seq:
- * binding.eval(string [, filename [,lineno]]) => obj
- *
- * Evaluates the Ruby expression(s) in <em>string</em>, in the
- * <em>binding</em>'s context. If the optional <em>filename</em> and
- * <em>lineno</em> parameters are present, they will be used when
- * reporting syntax errors.
- *
- * def getBinding(param)
- * return binding
- * end
- * b = getBinding("hello")
- * b.eval("param") #=> "hello"
- */
-
-static VALUE
-bind_eval(int argc, VALUE *argv, VALUE bind)
-{
- struct BLOCK *data;
- VALUE args[4];
-
- rb_scan_args(argc, argv, "12", &args[0], &args[2], &args[3]);
- args[1] = bind;
- Data_Get_Struct(bind, struct BLOCK, data);
-
- return rb_f_eval(argc+1, args, data->self);
-}
-
#define PROC_TSHIFT (FL_USHIFT+1)
#define PROC_TMASK (FL_USER1|FL_USER2|FL_USER3)
#define PROC_TMAX (PROC_TMASK >> PROC_TSHIFT)
-#define PROC_SAFE_SAVED FL_USER4
#define SAFE_LEVEL_MAX PROC_TMASK
-#define proc_safe_level_p(data) (RBASIC(data)->flags & PROC_SAFE_SAVED)
-#define proc_delete_safe_level(data) FL_UNSET(data, PROC_SAFE_SAVED)
-
static void
-proc_save_safe_level(VALUE data)
+proc_save_safe_level(data)
+ VALUE data;
{
int safe = ruby_safe_level;
if (safe > PROC_TMAX) safe = PROC_TMAX;
- FL_UNSET(data, PROC_TMASK);
FL_SET(data, (safe << PROC_TSHIFT) & PROC_TMASK);
- FL_SET(data, PROC_SAFE_SAVED);
}
static int
-proc_get_safe_level(VALUE data)
+proc_get_safe_level(data)
+ VALUE data;
{
return (RBASIC(data)->flags & PROC_TMASK) >> PROC_TSHIFT;
}
static void
-proc_set_safe_level(VALUE data)
+proc_set_safe_level(data)
+ VALUE data;
{
- if (!proc_safe_level_p(data)) return;
ruby_safe_level = proc_get_safe_level(data);
}
static VALUE
-proc_alloc(VALUE klass, struct BLOCK *blk, int lambda)
+proc_alloc(klass, proc)
+ VALUE klass;
+ int proc;
{
volatile VALUE block;
- struct BLOCK *data;
+ struct BLOCK *data, *p;
+ struct RVarmap *vars;
- block = Data_Make_Struct(klass, struct BLOCK, blk_mark, blk_free, data);
- *data = *blk;
+ if (!rb_block_given_p() && !rb_f_block_given_p()) {
+ rb_raise(rb_eArgError, "tried to create Proc object without a block");
+ }
+ if (proc && !rb_block_given_p()) {
+ rb_warn("tried to create Proc object without a block");
+ }
- if (!lambda && data->block_obj) {
- return data->block_obj;
+ if (!proc && ruby_block->block_obj && CLASS_OF(ruby_block->block_obj) == klass) {
+ return ruby_block->block_obj;
}
+ block = Data_Make_Struct(klass, struct BLOCK, blk_mark, blk_free, data);
+ *data = *ruby_block;
+
data->orig_thread = rb_thread_current();
data->wrapper = ruby_wrapper;
+ data->iter = data->prev?Qtrue:Qfalse;
+ data->block_obj = block;
frame_dup(&data->frame);
- blk_nail_down(data);
- scope_dup(data->scope);
- proc_save_safe_level(block);
- if (lambda) {
- data->flags |= BLOCK_LAMBDA;
+ if (data->iter) {
+ blk_copy_prev(data);
}
else {
- data->block_obj = block;
+ data->prev = 0;
}
- return block;
-}
-static VALUE
-proc_new(VALUE klass, int lambda)
-{
- volatile VALUE block;
- struct FRAME *frame = ruby_frame;
-
- if (!rb_block_given_p()) {
- if (lambda || !ruby_frame->prev || !ruby_frame->prev->block) {
- rb_raise(rb_eArgError, "tried to create Proc object without a block");
+ for (p = data; p; p = p->prev) {
+ for (vars = p->dyna_vars; vars; vars = vars->next) {
+ if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
+ FL_SET(vars, DVAR_DONT_RECYCLE);
}
- frame = ruby_frame->prev;
}
- else if (!lambda && frame->block->block_obj) {
- VALUE obj = frame->block->block_obj;
- if (CLASS_OF(obj) != klass) {
- obj = proc_clone(obj);
- RBASIC(obj)->klass = klass;
- }
- return obj;
+ scope_dup(data->scope);
+ proc_save_safe_level(block);
+ if (proc) {
+ data->flags |= BLOCK_LAMBDA;
}
- block = proc_alloc(klass, frame->block, lambda);
- if (!lambda) {
- frame->block->block_obj = block;
+ else {
+ ruby_block->block_obj = block;
}
+
return block;
}
/*
* call-seq:
- * Proc.new {|...| block } => a_proc
- * Proc.new => a_proc
+ * Proc.new {|...| block } => a_proc
+ * Proc.new => a_proc
*
* Creates a new <code>Proc</code> object, bound to the current
* context. <code>Proc::new</code> may be called without a block only
@@ -8403,36 +8406,33 @@ proc_new(VALUE klass, int lambda)
*/
static VALUE
-proc_s_new(int argc, VALUE *argv, VALUE klass)
+proc_s_new(argc, argv, klass)
+ int argc;
+ VALUE *argv;
+ VALUE klass;
{
- VALUE block = proc_new(klass, Qfalse);
+ VALUE block = proc_alloc(klass, Qfalse);
rb_obj_call_init(block, argc, argv);
return block;
}
-/*
- * call-seq:
- * proc {|...| block } => a_proc
- *
- * Equivalent to <code>Proc.new</code>.
- */
-
VALUE
-rb_block_proc(void)
+rb_block_proc()
{
- return proc_new(rb_cProc, Qfalse);
+ return proc_alloc(rb_cProc, Qfalse);
}
VALUE
-rb_f_lambda(void)
+rb_f_lambda()
{
rb_warn("rb_f_lambda() is deprecated; use rb_block_proc() instead");
- return proc_new(rb_cProc, Qtrue);
+ return proc_alloc(rb_cProc, Qtrue);
}
/*
* call-seq:
+ * proc { |...| block } => a_proc
* lambda { |...| block } => a_proc
*
* Equivalent to <code>Proc.new</code>, except the resulting Proc objects
@@ -8440,17 +8440,15 @@ rb_f_lambda(void)
*/
static VALUE
-proc_lambda(void)
+proc_lambda()
{
- return proc_new(rb_cProc, Qtrue);
+ return proc_alloc(rb_cProc, Qtrue);
}
static int
-block_orphan(struct BLOCK *data)
+block_orphan(data)
+ struct BLOCK *data;
{
- if (data->flags & (BLOCK_LAMBDA|BLOCK_FROM_METHOD)) {
- return 1;
- }
if (data->scope->flags & SCOPE_NOSTACK) {
return 1;
}
@@ -8461,59 +8459,72 @@ block_orphan(struct BLOCK *data)
}
static VALUE
-proc_invoke(VALUE proc, VALUE args /* OK */, VALUE self, VALUE klass, int flags)
+proc_invoke(proc, args, self, klass)
+ VALUE proc, args; /* OK */
+ VALUE self, klass;
{
+ struct BLOCK * volatile old_block;
struct BLOCK _block;
struct BLOCK *data;
volatile VALUE result = Qundef;
int state;
volatile int safe = ruby_safe_level;
volatile VALUE old_wrapper = ruby_wrapper;
- volatile int lambda;
- VALUE bvar = 0;
+ volatile int pcall, avalue = Qtrue;
+ volatile VALUE tmp = args;
- Data_Get_Struct(proc, struct BLOCK, data);
- flags |= YIELD_PROC_INVOKE;
- lambda = data->flags & BLOCK_LAMBDA;
- if (rb_block_given_p() && ruby_frame->callee) {
- if (klass != ruby_frame->this_class)
+ if (rb_block_given_p() && ruby_frame->last_func) {
+ if (klass != ruby_frame->last_class)
klass = rb_obj_class(proc);
+ rb_warning("block for %s#%s is useless",
+ rb_class2name(klass),
+ rb_id2name(ruby_frame->last_func));
+ }
+
+ Data_Get_Struct(proc, struct BLOCK, data);
+ pcall = (data->flags & BLOCK_LAMBDA) ? YIELD_LAMBDA_CALL : 0;
+ if (!pcall && RARRAY(args)->len == 1) {
+ avalue = Qfalse;
+ args = RARRAY(args)->ptr[0];
}
PUSH_VARS();
ruby_wrapper = data->wrapper;
ruby_dyna_vars = data->dyna_vars;
/* PUSH BLOCK from data */
+ old_block = ruby_block;
_block = *data;
- _block.block_obj = bvar;
if (self != Qundef) _block.frame.self = self;
- if (klass) _block.frame.this_class = klass;
- _block.frame.argc = (flags&YIELD_CALL) ? RARRAY_LEN(args) : 1;
+ if (klass) _block.frame.last_class = klass;
+ _block.frame.argc = RARRAY(tmp)->len;
_block.frame.flags = ruby_frame->flags;
- if (_block.frame.argc && (ruby_frame->flags & FRAME_DMETH)) {
+ if (_block.frame.argc && DMETHOD_P()) {
NEWOBJ(scope, struct SCOPE);
- OBJSETUP(scope, args, T_SCOPE);
+ OBJSETUP(scope, tmp, T_SCOPE);
scope->local_tbl = _block.scope->local_tbl;
scope->local_vars = _block.scope->local_vars;
+ scope->flags |= SCOPE_CLONE;
_block.scope = scope;
}
- PUSH_FRAME(Qfalse);
- ruby_frame->block = &_block;
- PUSH_TAG(lambda ? PROT_LAMBDA : PROT_NONE);
+ /* modify current frame */
+ ruby_block = &_block;
+ PUSH_ITER(ITER_CUR);
+ ruby_frame->iter = ITER_CUR;
+ PUSH_TAG(pcall ? PROT_LAMBDA : PROT_NONE);
state = EXEC_TAG();
if (state == 0) {
proc_set_safe_level(proc);
- result = rb_yield_0(args, self, (self!=Qundef)?CLASS_OF(self):0, flags);
+ result = rb_yield_0(args, self, (self!=Qundef)?CLASS_OF(self):0, pcall, avalue);
}
else if (TAG_DST()) {
result = prot_tag->retval;
}
POP_TAG();
- POP_FRAME();
+ POP_ITER();
+ ruby_block = old_block;
ruby_wrapper = old_wrapper;
POP_VARS();
- if (proc_safe_level_p(proc))
- ruby_safe_level = safe;
+ ruby_safe_level = safe;
switch (state) {
case 0:
@@ -8522,13 +8533,14 @@ proc_invoke(VALUE proc, VALUE args /* OK */, VALUE self, VALUE klass, int flags)
proc_jump_error(TAG_RETRY, Qnil); /* xxx */
JUMP_TAG(state);
break;
+ case TAG_NEXT:
case TAG_BREAK:
- if (lambda && result != Qundef) break;
- JUMP_TAG(state);
+ if (!pcall && result != Qundef) {
+ proc_jump_error(state, result);
+ }
case TAG_RETURN:
if (result != Qundef) {
- if (flags & YIELD_CALL)
- break;
+ if (pcall) break;
return_jump(result);
}
default:
@@ -8548,9 +8560,9 @@ proc_invoke(VALUE proc, VALUE args /* OK */, VALUE self, VALUE klass, int flags)
* <i>params</i> using something close to method calling semantics.
* Generates a warning if multiple values are passed to a proc that
* expects just one (previously this silently converted the parameters
- * to an array).
+ * to an array).
*
- * For procs created using <code>Kernel.proc</code>, generates an
+ * For procs created using <code>Kernel.proc</code>, generates an
* error if the wrong number of parameters
* are passed to a proc with multiple parameters. For procs created using
* <code>Proc.new</code>, extra parameters are silently discarded.
@@ -8571,93 +8583,15 @@ proc_invoke(VALUE proc, VALUE args /* OK */, VALUE self, VALUE klass, int flags)
* from prog.rb:5
*/
-VALUE
-rb_proc_call(VALUE proc, VALUE args /* OK */)
-{
- return proc_invoke(proc, args, Qundef, 0, INVOKE_CALL);
-}
-
-/*
- * call-seq:
- * prc.yield(params,...) => obj
- *
- * Invokes the block, setting the block's parameters to the values in
- * <i>params</i> in the same manner the yield statement does.
- *
- * a_proc = Proc.new {|a, *b| b.collect {|i| i*a }}
- * a_proc.yield(9, 1, 2, 3) #=> [9, 18, 27]
- * a_proc.yield([9, 1, 2, 3]) #=> [9, 18, 27]
- * a_proc = Proc.new {|a,b| a}
- * a_proc.yield(1,2,3) # => [1]
- */
-
-VALUE
-rb_proc_yield(int argc, VALUE *argv, VALUE proc)
-{
- switch (argc) {
- case 1:
- if (!NIL_P(argv[0])) {
- return proc_invoke(proc, argv[0], Qundef, 0, 0);
- }
- /* fall through */
- case 0:
- return proc_invoke(proc, Qundef, Qundef, 0, 0);
- default:
- return proc_invoke(proc, rb_ary_new4(argc, argv), Qundef, 0, INVOKE_VALUES);
- }
-}
-
-/* :nodoc: */
static VALUE
-nil_yield(int argc, VALUE *argv)
+proc_call(proc, args)
+ VALUE proc, args; /* OK */
{
- localjump_error("no block given", Qnil, 0, backtrace(0));
- return Qnil; /* not reached */
+ return proc_invoke(proc, args, Qundef, 0);
}
-int
-rb_proc_arity(VALUE proc)
-{
- struct BLOCK *data;
- NODE *var, *list;
- int n;
-
- Data_Get_Struct(proc, struct BLOCK, data);
- var = data->var;
- if (var == 0) {
- if (!data->body) return 0;
- if (nd_type(data->body) == NODE_IFUNC &&
- data->body->nd_cfnc == bmcall) {
- return method_arity(data->body->nd_tval);
- }
- return 0;
- }
- if (var == (NODE*)1) return 0;
- if (var == (NODE*)2) return 0;
- if (nd_type(var) == NODE_BLOCK_ARG) {
- var = var->nd_args;
- if (var == (NODE*)1) return 0;
- if (var == (NODE*)2) return 0;
- }
- switch (nd_type(var)) {
- default:
- return 1;
- case NODE_MASGN:
- list = var->nd_head;
- n = 0;
- while (list) {
- n++;
- list = list->nd_next;
- }
- if (var->nd_args) {
- if (var->nd_args != (NODE *)-1 && nd_type(var->nd_args) == NODE_POSTARG) {
- return -n-1-var->nd_args->nd_head->nd_alen;
- }
- return -n-1;
- }
- return n;
- }
-}
+static VALUE bmcall _((VALUE, VALUE));
+static VALUE method_arity _((VALUE));
/*
* call-seq:
@@ -8680,10 +8614,36 @@ rb_proc_arity(VALUE proc)
*/
static VALUE
-proc_arity(VALUE proc)
+proc_arity(proc)
+ VALUE proc;
{
- int arity = rb_proc_arity(proc);
- return INT2FIX(arity);
+ struct BLOCK *data;
+ NODE *list;
+ int n;
+
+ Data_Get_Struct(proc, struct BLOCK, data);
+ if (data->var == 0) {
+ if (data->body && nd_type(data->body) == NODE_IFUNC &&
+ data->body->nd_cfnc == bmcall) {
+ return method_arity(data->body->nd_tval);
+ }
+ return INT2FIX(-1);
+ }
+ if (data->var == (NODE*)1) return INT2FIX(0);
+ if (data->var == (NODE*)2) return INT2FIX(0);
+ switch (nd_type(data->var)) {
+ default:
+ return INT2FIX(1);
+ case NODE_MASGN:
+ list = data->var->nd_head;
+ n = 0;
+ while (list) {
+ n++;
+ list = list->nd_next;
+ }
+ if (data->var->nd_args) return INT2FIX(-n-1);
+ return INT2FIX(n);
+ }
}
/*
@@ -8695,7 +8655,8 @@ proc_arity(VALUE proc)
*/
static VALUE
-proc_eq(VALUE self, VALUE other)
+proc_eq(self, other)
+ VALUE self, other;
{
struct BLOCK *data, *data2;
@@ -8716,28 +8677,6 @@ proc_eq(VALUE self, VALUE other)
/*
* call-seq:
- * prc.hash => integer
- *
- * Return hash value corresponding to proc body.
- */
-
-static VALUE
-proc_hash(VALUE self)
-{
- struct BLOCK *data;
- long hash;
-
- Data_Get_Struct(self, struct BLOCK, data);
- hash = (long)data->body;
- hash ^= (long)data->var;
- hash ^= data->frame.uniq << 16;
- hash ^= data->flags;
-
- return INT2FIX(hash);
-}
-
-/*
- * call-seq:
* prc.to_s => string
*
* Shows the unique identifier for this proc, along with
@@ -8745,21 +8684,30 @@ proc_hash(VALUE self)
*/
static VALUE
-proc_to_s(VALUE self)
+proc_to_s(self)
+ VALUE self;
{
struct BLOCK *data;
NODE *node;
char *cname = rb_obj_classname(self);
+ const int w = (sizeof(VALUE) * CHAR_BIT) / 4;
+ long len = strlen(cname)+6+w; /* 6:tags 16:addr */
VALUE str;
Data_Get_Struct(self, struct BLOCK, data);
if ((node = data->frame.node) || (node = data->body)) {
- str = rb_sprintf("#<%s:%p@%s:%d>", cname, data->body,
- node->nd_file, nd_line(node));
+ len += strlen(node->nd_file) + 2 + (SIZEOF_LONG*CHAR_BIT-NODE_LSHIFT)/3;
+ str = rb_str_new(0, len);
+ snprintf(RSTRING(str)->ptr, len+1,
+ "#<%s:0x%.*lx@%s:%d>", cname, w, (VALUE)data->body,
+ node->nd_file, nd_line(node));
}
else {
- str = rb_sprintf("#<%s:%p>", cname, data->body);
+ str = rb_str_new(0, len);
+ snprintf(RSTRING(str)->ptr, len+1,
+ "#<%s:0x%.*lx>", cname, w, (VALUE)data->body);
}
+ RSTRING(str)->len = strlen(RSTRING(str)->ptr);
if (OBJ_TAINTED(self)) OBJ_TAINT(str);
return str;
@@ -8775,7 +8723,8 @@ proc_to_s(VALUE self)
*/
static VALUE
-proc_to_self(VALUE self)
+proc_to_self(self)
+ VALUE self;
{
return self;
}
@@ -8798,7 +8747,8 @@ proc_to_self(VALUE self)
*/
static VALUE
-proc_binding(VALUE proc)
+proc_binding(proc)
+ VALUE proc;
{
struct BLOCK *orig, *data;
VALUE bind;
@@ -8807,24 +8757,38 @@ proc_binding(VALUE proc)
bind = Data_Make_Struct(rb_cBinding,struct BLOCK,blk_mark,blk_free,data);
MEMCPY(data, orig, struct BLOCK, 1);
frame_dup(&data->frame);
- blk_nail_down(data);
+
+ if (data->iter) {
+ blk_copy_prev(data);
+ }
+ else {
+ data->prev = 0;
+ }
return bind;
}
-struct block_arg {
+static VALUE
+block_pass(self, node)
VALUE self;
- NODE *iter;
-};
-
-static struct BLOCK *
-passing_block(VALUE proc, struct BLOCK *blockp)
+ NODE *node;
{
+ VALUE proc = rb_eval(self, node->nd_body); /* OK */
VALUE b;
+ struct BLOCK * volatile old_block;
+ struct BLOCK _block;
struct BLOCK *data;
+ volatile VALUE result = Qnil;
+ int state;
volatile int orphan;
+ volatile int safe = ruby_safe_level;
- if (NIL_P(proc)) return 0;
+ if (NIL_P(proc)) {
+ PUSH_ITER(ITER_NOT);
+ result = rb_eval(self, node->nd_iter);
+ POP_ITER();
+ return result;
+ }
if (!rb_obj_is_proc(proc)) {
b = rb_check_convert_type(proc, T_DATA, "Proc", "to_proc");
if (!rb_obj_is_proc(b)) {
@@ -8839,17 +8803,73 @@ passing_block(VALUE proc, struct BLOCK *blockp)
rb_raise(rb_eSecurityError, "Insecure: tainted block value");
}
+ if (ruby_block && ruby_block->block_obj == proc) {
+ PUSH_ITER(ITER_PAS);
+ result = rb_eval(self, node->nd_iter);
+ POP_ITER();
+ return result;
+ }
+
Data_Get_Struct(proc, struct BLOCK, data);
orphan = block_orphan(data);
- if (!orphan) return data;
- *blockp = *data;
- blockp->uniq = block_unique++;
- return blockp;
+ /* PUSH BLOCK from data */
+ old_block = ruby_block;
+ _block = *data;
+ _block.outer = ruby_block;
+ if (orphan) _block.uniq = block_unique++;
+ ruby_block = &_block;
+ PUSH_ITER(ITER_PRE);
+ if (ruby_frame->iter == ITER_NOT)
+ ruby_frame->iter = ITER_PRE;
+
+ PUSH_TAG(PROT_LOOP);
+ state = EXEC_TAG();
+ if (state == 0) {
+ retry:
+ proc_set_safe_level(proc);
+ if (safe > ruby_safe_level)
+ ruby_safe_level = safe;
+ result = rb_eval(self, node->nd_iter);
+ }
+ else if (state == TAG_BREAK && TAG_DST()) {
+ result = prot_tag->retval;
+ state = 0;
+ }
+ else if (state == TAG_RETRY) {
+ state = 0;
+ goto retry;
+ }
+ POP_TAG();
+ POP_ITER();
+ ruby_block = old_block;
+ ruby_safe_level = safe;
+
+ switch (state) {/* escape from orphan block */
+ case 0:
+ break;
+ case TAG_RETURN:
+ if (orphan) {
+ proc_jump_error(state, prot_tag->retval);
+ }
+ default:
+ JUMP_TAG(state);
+ }
+
+ return result;
}
+struct METHOD {
+ VALUE klass, rklass;
+ VALUE recv;
+ ID id, oid;
+ int safe_level;
+ NODE *body;
+};
+
static void
-bm_mark(struct METHOD *data)
+bm_mark(data)
+ struct METHOD *data;
{
rb_gc_mark(data->rklass);
rb_gc_mark(data->klass);
@@ -8858,18 +8878,20 @@ bm_mark(struct METHOD *data)
}
static VALUE
-mnew(VALUE klass, VALUE obj, ID id, VALUE mklass)
+mnew(klass, obj, id, mklass)
+ VALUE klass, obj, mklass;
+ ID id;
{
VALUE method;
NODE *body;
+ int noex;
struct METHOD *data;
VALUE rklass = klass;
ID oid = id;
- int noex = LOOKUP_NORMAL;
again:
if ((body = rb_get_method_body(&klass, &id, &noex)) == 0) {
- raise_undef(rklass, oid);
+ print_undef(rklass, oid);
}
if (nd_type(body) == NODE_ZSUPER) {
@@ -8881,8 +8903,7 @@ mnew(VALUE klass, VALUE obj, ID id, VALUE mklass)
(FL_TEST(rklass, FL_SINGLETON) || TYPE(rklass) == T_ICLASS)) {
rklass = RCLASS(rklass)->super;
}
- if (TYPE(klass) == T_ICLASS) klass = RBASIC(klass)->klass;
- method = Data_Make_Struct(mklass, struct METHOD, bm_mark, -1, data);
+ method = Data_Make_Struct(mklass, struct METHOD, bm_mark, free, data);
data->klass = klass;
data->recv = obj;
data->id = id;
@@ -8930,7 +8951,8 @@ mnew(VALUE klass, VALUE obj, ID id, VALUE mklass)
static VALUE
-method_eq(VALUE method, VALUE other)
+method_eq(method, other)
+ VALUE method, other;
{
struct METHOD *m1, *m2;
@@ -8950,28 +8972,6 @@ method_eq(VALUE method, VALUE other)
}
/*
- * call-seq:
- * meth.hash => integer
- *
- * Return a hash value corresponding to the method object.
- */
-
-static VALUE
-method_hash(VALUE method)
-{
- struct METHOD *m;
- long hash;
-
- Data_Get_Struct(method, struct METHOD, m);
- hash = (long)m->klass;
- hash ^= (long)m->rklass;
- hash ^= (long)m->recv;
- hash ^= (long)m->body;
-
- return INT2FIX(hash);
-}
-
-/*
* call-seq:
* meth.unbind => unbound_method
*
@@ -8981,7 +8981,8 @@ method_hash(VALUE method)
*/
static VALUE
-method_unbind(VALUE obj)
+method_unbind(obj)
+ VALUE obj;
{
VALUE method;
struct METHOD *orig, *data;
@@ -9007,9 +9008,7 @@ method_unbind(VALUE obj)
* <code>Method</code> object (or raising <code>NameError</code>). The
* <code>Method</code> object acts as a closure in <i>obj</i>'s object
* instance, so instance variables and the value of <code>self</code>
- * remain available. Looks for private methods if optional second
- * argument is true.
-
+ * remain available.
*
* class Demo
* def initialize(n)
@@ -9029,8 +9028,10 @@ method_unbind(VALUE obj)
* m.call #=> "Hello, @iv = Fred"
*/
-VALUE
-rb_obj_method(VALUE obj, VALUE vid)
+static VALUE
+rb_obj_method(obj, vid)
+ VALUE obj;
+ VALUE vid;
{
return mnew(CLASS_OF(obj), obj, rb_to_id(vid), rb_cMethod);
}
@@ -9039,8 +9040,8 @@ rb_obj_method(VALUE obj, VALUE vid)
* call-seq:
* mod.instance_method(symbol) => unbound_method
*
- * Returns an +UnboundMethod+ representing the given instance method
- * in _mod_.
+ * Returns an +UnboundMethod+ representing the given
+ * instance method in _mod_.
*
* class Interpreter
* def do_a() print "there, "; end
@@ -9068,7 +9069,9 @@ rb_obj_method(VALUE obj, VALUE vid)
*/
static VALUE
-rb_mod_method(VALUE mod, VALUE vid)
+rb_mod_method(mod, vid)
+ VALUE mod;
+ VALUE vid;
{
return mnew(mod, Qundef, rb_to_id(vid), rb_cUnboundMethod);
}
@@ -9078,7 +9081,8 @@ rb_mod_method(VALUE mod, VALUE vid)
*/
static VALUE
-method_clone(VALUE self)
+method_clone(self)
+ VALUE self;
{
VALUE clone;
struct METHOD *orig, *data;
@@ -9104,8 +9108,11 @@ method_clone(VALUE self)
* m.call(20) #=> 32
*/
-VALUE
-rb_method_call(int argc, VALUE *argv, VALUE method)
+static VALUE
+method_call(argc, argv, method)
+ int argc;
+ VALUE *argv;
+ VALUE method;
{
VALUE result = Qnil; /* OK */
struct METHOD *data;
@@ -9116,13 +9123,14 @@ rb_method_call(int argc, VALUE *argv, VALUE method)
rb_raise(rb_eTypeError, "can't call unbound method; bind first");
}
if (OBJ_TAINTED(method)) {
- safe = NOEX_WITH(data->safe_level, 4);
+ safe = NOEX_WITH(data->safe_level, 4)|NOEX_TAINTED;
}
else {
safe = data->safe_level;
}
- result = rb_call0(data->klass,data->recv,data->id,data->oid,
- argc,argv,ruby_frame->block,data->body,safe);
+ PUSH_ITER(rb_block_given_p()?ITER_PRE:ITER_NOT);
+ result = rb_call0(data->klass,data->recv,data->id,data->oid,argc,argv,data->body,safe);
+ POP_ITER();
return result;
}
@@ -9218,7 +9226,8 @@ rb_method_call(int argc, VALUE *argv, VALUE method)
*/
static VALUE
-umethod_bind(VALUE method, VALUE recv)
+umethod_bind(method, recv)
+ VALUE method, recv;
{
struct METHOD *data, *bound;
VALUE rklass = CLASS_OF(recv);
@@ -9250,43 +9259,6 @@ umethod_bind(VALUE method, VALUE recv)
return method;
}
-int
-rb_node_arity(NODE *body)
-{
- int n;
-
- switch (nd_type(body)) {
- case NODE_CFUNC:
- if (body->nd_argc < 0) return -1;
- return body->nd_argc;
- case NODE_ZSUPER:
- return -1;
- case NODE_ATTRSET:
- return 1;
- case NODE_IVAR:
- return 0;
- case NODE_BMETHOD:
- return rb_proc_arity(body->nd_cval);
- case NODE_SCOPE:
- body = body->nd_next; /* skip NODE_SCOPE */
- if (nd_type(body) == NODE_BLOCK)
- body = body->nd_head;
- if (!body) return 0;
- n = body->nd_frml ? RARRAY_LEN(body->nd_frml) : 0;
- if (body->nd_opt)
- return -n-1;
- if (body->nd_rest) {
- if (nd_type(body->nd_rest) == NODE_POSTARG) {
- return -n-1-body->nd_rest->nd_head->nd_alen;
- }
- n = -n-1;
- }
- return n;
- default:
- rb_raise(rb_eArgError, "invalid node 0x%x", nd_type(body));
- }
-}
-
/*
* call-seq:
* meth.arity => fixnum
@@ -9321,32 +9293,42 @@ rb_node_arity(NODE *body)
*/
static VALUE
-method_arity_m(VALUE method)
-{
- int n = method_arity(method);
- return INT2FIX(n);
-}
-
-static int
-method_arity(VALUE method)
+method_arity(method)
+ VALUE method;
{
struct METHOD *data;
+ NODE *body;
+ int n;
Data_Get_Struct(method, struct METHOD, data);
- return rb_node_arity(data->body);
-}
-
-int
-rb_mod_method_arity(VALUE mod, ID id)
-{
- NODE *node = rb_method_node(mod, id);
- return rb_node_arity(node);
-}
-int
-rb_obj_method_arity(VALUE obj, ID id)
-{
- return rb_mod_method_arity(CLASS_OF(obj), id);
+ body = data->body;
+ switch (nd_type(body)) {
+ case NODE_CFUNC:
+ if (body->nd_argc < 0) return INT2FIX(-1);
+ return INT2FIX(body->nd_argc);
+ case NODE_ZSUPER:
+ return INT2FIX(-1);
+ case NODE_ATTRSET:
+ return INT2FIX(1);
+ case NODE_IVAR:
+ return INT2FIX(0);
+ case NODE_BMETHOD:
+ return proc_arity(body->nd_cval);
+ case NODE_DMETHOD:
+ return method_arity(body->nd_cval);
+ case NODE_SCOPE:
+ body = body->nd_next; /* skip NODE_SCOPE */
+ if (nd_type(body) == NODE_BLOCK)
+ body = body->nd_head;
+ if (!body) return INT2FIX(0);
+ n = body->nd_cnt;
+ if (body->nd_opt || body->nd_rest)
+ n = -n-1;
+ return INT2FIX(n);
+ default:
+ rb_raise(rb_eArgError, "invalid node 0x%x", nd_type(body));
+ }
}
/*
@@ -9360,12 +9342,13 @@ rb_obj_method_arity(VALUE obj, ID id)
*/
static VALUE
-method_inspect(VALUE method)
+method_inspect(method)
+ VALUE method;
{
struct METHOD *data;
VALUE str;
const char *s;
- const char *sharp = "#";
+ char *sharp = "#";
Data_Get_Struct(method, struct METHOD, data);
str = rb_str_buf_new2("#<");
@@ -9394,8 +9377,12 @@ method_inspect(VALUE method)
else {
rb_str_buf_cat2(str, rb_class2name(data->rklass));
if (data->rklass != data->klass) {
+ VALUE klass = data -> klass;
+ if (TYPE(klass) == T_ICLASS) {
+ klass = RBASIC(klass)->klass;
+ }
rb_str_buf_cat2(str, "(");
- rb_str_buf_cat2(str, rb_class2name(data->klass));
+ rb_str_buf_cat2(str, rb_class2name(klass));
rb_str_buf_cat2(str, ")");
}
}
@@ -9407,34 +9394,41 @@ method_inspect(VALUE method)
}
static VALUE
-mproc(VALUE method)
+mproc(method)
+ VALUE method;
{
VALUE proc;
+ /* emulate ruby's method call */
+ PUSH_ITER(ITER_CUR);
+ PUSH_FRAME();
proc = rb_block_proc();
- proc_delete_safe_level(proc);
+ POP_FRAME();
+ POP_ITER();
+
return proc;
}
static VALUE
-bmcall(VALUE args, VALUE method)
+bmcall(args, method)
+ VALUE args, method;
{
volatile VALUE a;
VALUE ret;
a = svalue_to_avalue(args);
- ret = rb_method_call(RARRAY_LEN(a), RARRAY_PTR(a), method);
+ ret = method_call(RARRAY(a)->len, RARRAY(a)->ptr, method);
a = Qnil; /* prevent tail call */
return ret;
}
VALUE
-rb_proc_new(
- VALUE (*func)(ANYARGS), /* VALUE yieldarg[, VALUE procarg] */
- VALUE val)
+rb_proc_new(func, val)
+ VALUE (*func)(ANYARGS); /* VALUE yieldarg[, VALUE procarg] */
+ VALUE val;
{
struct BLOCK *data;
- VALUE proc = rb_iterate((VALUE(*)(VALUE))mproc, 0, func, val);
+ VALUE proc = rb_iterate((VALUE(*)_((VALUE)))mproc, 0, func, val);
Data_Get_Struct(proc, struct BLOCK, data);
data->body->nd_state = YIELD_FUNC_AVALUE;
@@ -9449,28 +9443,26 @@ rb_proc_new(
*/
static VALUE
-method_proc(VALUE method)
+method_proc(method)
+ VALUE method;
{
VALUE proc;
struct METHOD *mdata;
struct BLOCK *bdata;
+ proc = rb_iterate((VALUE(*)_((VALUE)))mproc, 0, bmcall, method);
Data_Get_Struct(method, struct METHOD, mdata);
- if (nd_type(mdata->body) == NODE_BMETHOD) {
- return mdata->body->nd_cval;
- }
- proc = rb_iterate((VALUE(*)(VALUE))mproc, 0, bmcall, method);
Data_Get_Struct(proc, struct BLOCK, bdata);
bdata->body->nd_file = mdata->body->nd_file;
nd_set_line(bdata->body, nd_line(mdata->body));
bdata->body->nd_state = YIELD_FUNC_SVALUE;
- bdata->flags |= BLOCK_FROM_METHOD;
return proc;
}
static VALUE
-rb_obj_is_method(VALUE m)
+rb_obj_is_method(m)
+ VALUE m;
{
if (TYPE(m) == T_DATA && RDATA(m)->dmark == (RUBY_DATA_FUNC)bm_mark) {
return Qtrue;
@@ -9516,7 +9508,10 @@ rb_obj_is_method(VALUE m)
*/
static VALUE
-rb_mod_define_method(int argc, VALUE *argv, VALUE mod)
+rb_mod_define_method(argc, argv, mod)
+ int argc;
+ VALUE *argv;
+ VALUE mod;
{
ID id;
VALUE body;
@@ -9539,28 +9534,16 @@ rb_mod_define_method(int argc, VALUE *argv, VALUE mod)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
}
if (RDATA(body)->dmark == (RUBY_DATA_FUNC)bm_mark) {
- struct METHOD *method = (struct METHOD *)DATA_PTR(body);
- VALUE rklass = method->rklass;
- if (rklass != mod) {
- if (FL_TEST(rklass, FL_SINGLETON)) {
- rb_raise(rb_eTypeError, "can't bind singleton method to a different class");
- }
- if (!RTEST(rb_class_inherited_p(mod, rklass))) {
- rb_raise(rb_eTypeError, "bind argument must be a subclass of %s",
- rb_class2name(rklass));
- }
- }
- node = method->body;
+ node = NEW_DMETHOD(method_unbind(body));
}
else if (RDATA(body)->dmark == (RUBY_DATA_FUNC)blk_mark) {
struct BLOCK *block;
body = proc_clone(body);
- proc_delete_safe_level(body);
Data_Get_Struct(body, struct BLOCK, block);
- block->frame.callee = id;
- block->frame.this_func = id;
- block->frame.this_class = mod;
+ block->frame.last_func = id;
+ block->frame.orig_func = id;
+ block->frame.last_class = mod;
node = NEW_BMETHOD(body);
}
else {
@@ -9568,10 +9551,10 @@ rb_mod_define_method(int argc, VALUE *argv, VALUE mod)
rb_raise(rb_eTypeError, "wrong argument type (expected Proc/Method)");
}
- if (VIS_TEST(VIS_PRIVATE)) {
+ if (SCOPE_TEST(SCOPE_PRIVATE)) {
noex = NOEX_PRIVATE;
}
- else if (VIS_TEST(VIS_PROTECTED)) {
+ else if (SCOPE_TEST(SCOPE_PROTECTED)) {
noex = NOEX_PROTECTED;
}
else {
@@ -9582,25 +9565,6 @@ rb_mod_define_method(int argc, VALUE *argv, VALUE mod)
}
/*
- * call-seq:
- * obj.define_singleton_method(symbol, method) => new_method
- * obj.define_singleton_method(symbol) { block } => proc
- *
- * Defines a singleton method for the receiver. The _method_
- * parameter can be a +Proc+ or +Method+ object.
- * If a block is specified, it is used as the method body.
- * See <code>Kernel#define_method</code>.
- */
-
-static VALUE
-rb_obj_define_method(int argc, VALUE *argv, VALUE obj)
-{
- VALUE klass = rb_singleton_class(obj);
-
- return rb_mod_define_method(argc, argv, klass);
-}
-
-/*
* <code>Proc</code> objects are blocks of code that have been bound to
* a set of local variables. Once bound, the code may be called in
* different contexts and still access those variables.
@@ -9619,7 +9583,7 @@ rb_obj_define_method(int argc, VALUE *argv, VALUE obj)
*/
void
-Init_Proc(void)
+Init_Proc()
{
rb_eLocalJumpError = rb_define_class("LocalJumpError", rb_eStandardError);
rb_define_method(rb_eLocalJumpError, "exit_value", localjump_xvalue, 0);
@@ -9628,7 +9592,7 @@ Init_Proc(void)
rb_global_variable(&exception_error);
exception_error = rb_exc_new2(rb_eFatal, "exception reentered");
- rb_eSysStackError = rb_define_class("SystemStackError", rb_eException);
+ rb_eSysStackError = rb_define_class("SystemStackError", rb_eStandardError);
rb_global_variable(&sysstack_error);
sysstack_error = rb_exc_new2(rb_eSysStackError, "stack level too deep");
OBJ_TAINT(sysstack_error);
@@ -9639,32 +9603,25 @@ Init_Proc(void)
rb_define_method(rb_cProc, "clone", proc_clone, 0);
rb_define_method(rb_cProc, "dup", proc_dup, 0);
- rb_define_method(rb_cProc, "call", rb_proc_call, -2);
- rb_define_method(rb_cProc, "yield", rb_proc_yield, -1);
+ rb_define_method(rb_cProc, "call", proc_call, -2);
rb_define_method(rb_cProc, "arity", proc_arity, 0);
- rb_define_method(rb_cProc, "[]", rb_proc_call, -2);
+ rb_define_method(rb_cProc, "[]", proc_call, -2);
rb_define_method(rb_cProc, "==", proc_eq, 1);
- rb_define_method(rb_cProc, "eql?", proc_eq, 1);
- rb_define_method(rb_cProc, "hash", proc_hash, 0);
rb_define_method(rb_cProc, "to_s", proc_to_s, 0);
rb_define_method(rb_cProc, "to_proc", proc_to_self, 0);
rb_define_method(rb_cProc, "binding", proc_binding, 0);
- rb_define_global_function("proc", rb_block_proc, 0);
+ rb_define_global_function("proc", proc_lambda, 0);
rb_define_global_function("lambda", proc_lambda, 0);
- rb_define_method(rb_cNilClass, "yield", nil_yield, -1);
-
rb_cMethod = rb_define_class("Method", rb_cObject);
rb_undef_alloc_func(rb_cMethod);
rb_undef_method(CLASS_OF(rb_cMethod), "new");
rb_define_method(rb_cMethod, "==", method_eq, 1);
- rb_define_method(rb_cMethod, "eql?", method_eq, 1);
- rb_define_method(rb_cMethod, "hash", method_hash, 0);
rb_define_method(rb_cMethod, "clone", method_clone, 0);
- rb_define_method(rb_cMethod, "call", rb_method_call, -1);
- rb_define_method(rb_cMethod, "[]", rb_method_call, -1);
- rb_define_method(rb_cMethod, "arity", method_arity_m, 0);
+ rb_define_method(rb_cMethod, "call", method_call, -1);
+ rb_define_method(rb_cMethod, "[]", method_call, -1);
+ rb_define_method(rb_cMethod, "arity", method_arity, 0);
rb_define_method(rb_cMethod, "inspect", method_inspect, 0);
rb_define_method(rb_cMethod, "to_s", method_inspect, 0);
rb_define_method(rb_cMethod, "to_proc", method_proc, 0);
@@ -9675,10 +9632,8 @@ Init_Proc(void)
rb_undef_alloc_func(rb_cUnboundMethod);
rb_undef_method(CLASS_OF(rb_cUnboundMethod), "new");
rb_define_method(rb_cUnboundMethod, "==", method_eq, 1);
- rb_define_method(rb_cUnboundMethod, "eql?", method_eq, 1);
- rb_define_method(rb_cUnboundMethod, "hash", method_hash, 0);
rb_define_method(rb_cUnboundMethod, "clone", method_clone, 0);
- rb_define_method(rb_cUnboundMethod, "arity", method_arity_m, 0);
+ rb_define_method(rb_cUnboundMethod, "arity", method_arity, 0);
rb_define_method(rb_cUnboundMethod, "inspect", method_inspect, 0);
rb_define_method(rb_cUnboundMethod, "to_s", method_inspect, 0);
rb_define_method(rb_cUnboundMethod, "bind", umethod_bind, 1);
@@ -9687,7 +9642,7 @@ Init_Proc(void)
/*
* Objects of class <code>Binding</code> encapsulate the execution
- * context at some particular place in the code and retain this context
+ * context at some particular place in the code and retain this context
* for future use. The variables, methods, value of <code>self</code>,
* and possibly an iterator block that can be accessed in this context
* are all retained. Binding objects can be created using
@@ -9720,18 +9675,30 @@ Init_Proc(void)
*
*/
-void
-Init_Binding(void)
+void
+Init_Binding()
{
rb_cBinding = rb_define_class("Binding", rb_cObject);
rb_undef_alloc_func(rb_cBinding);
rb_undef_method(CLASS_OF(rb_cBinding), "new");
rb_define_method(rb_cBinding, "clone", proc_clone, 0);
rb_define_method(rb_cBinding, "dup", proc_dup, 0);
- rb_define_method(rb_cBinding, "eval", bind_eval, -1);
rb_define_global_function("binding", rb_f_binding, 0);
}
+#ifdef __ia64__
+#if defined(__FreeBSD__)
+/*
+ * FreeBSD/ia64 currently does not have a way for a process to get the
+ * base address for the RSE backing store, so hardcode it.
+ */
+#define __libc_ia64_register_backing_store_base (4ULL<<61)
+#else
+#pragma weak __libc_ia64_register_backing_store_base
+extern unsigned long __libc_ia64_register_backing_store_base;
+#endif
+#endif
+
/* Windows SEH refers data on the stack. */
#undef SAVE_WIN32_EXCEPTION_LIST
#if defined _WIN32 || defined __CYGWIN__
@@ -9740,7 +9707,7 @@ typedef unsigned long DWORD;
#endif
static inline DWORD
-win32_get_exception_list(void)
+win32_get_exception_list()
{
DWORD p;
# if defined _MSC_VER
@@ -9767,7 +9734,8 @@ win32_get_exception_list(void)
}
static inline void
-win32_set_exception_list(DWORD p)
+win32_set_exception_list(p)
+ DWORD p;
{
# if defined _MSC_VER
# ifdef _M_IX86
@@ -9795,6 +9763,13 @@ VALUE rb_cThread;
extern VALUE rb_last_status;
+enum thread_status {
+ THREAD_TO_KILL,
+ THREAD_RUNNABLE,
+ THREAD_STOPPED,
+ THREAD_KILLED,
+};
+
#define WAIT_FD (1<<0)
#define WAIT_SELECT (1<<1)
#define WAIT_TIME (1<<2)
@@ -9812,105 +9787,70 @@ extern VALUE rb_last_status;
# endif
#endif
-#if defined(NFDBITS) && defined(HAVE_RB_FD_INIT)
-void
-rb_fd_init(volatile rb_fdset_t *fds)
-{
- fds->maxfd = 0;
- fds->fdset = ALLOC(fd_set);
- FD_ZERO(fds->fdset);
-}
-
-void
-rb_fd_term(rb_fdset_t *fds)
-{
- if (fds->fdset) free(fds->fdset);
- fds->maxfd = 0;
- fds->fdset = 0;
-}
-
-void
-rb_fd_zero(rb_fdset_t *fds)
-{
- if (fds->fdset) {
- MEMZERO(fds->fdset, fd_mask, howmany(fds->maxfd, NFDBITS));
- FD_ZERO(fds->fdset);
- }
-}
+/* typedef struct thread * rb_thread_t; */
-static void
-rb_fd_resize(int n, rb_fdset_t *fds)
-{
- int m = howmany(n + 1, NFDBITS) * sizeof(fd_mask);
- int o = howmany(fds->maxfd, NFDBITS) * sizeof(fd_mask);
+struct thread {
+ struct thread *next, *prev;
+ rb_jmpbuf_t context;
+#ifdef SAVE_WIN32_EXCEPTION_LIST
+ DWORD win32_exception_list;
+#endif
- if (m < sizeof(fd_set)) m = sizeof(fd_set);
- if (o < sizeof(fd_set)) o = sizeof(fd_set);
+ VALUE result;
- if (m > o) {
- fds->fdset = realloc(fds->fdset, m);
- memset((char *)fds->fdset + o, 0, m - o);
- }
- if (n >= fds->maxfd) fds->maxfd = n + 1;
-}
+ long stk_len;
+ long stk_max;
+ VALUE *stk_ptr;
+ VALUE *stk_pos;
+#ifdef __ia64__
+ VALUE *bstr_ptr;
+ long bstr_len;
+#endif
-void
-rb_fd_set(int n, rb_fdset_t *fds)
-{
- rb_fd_resize(n, fds);
- FD_SET(n, fds->fdset);
-}
+ struct FRAME *frame;
+ struct SCOPE *scope;
+ struct RVarmap *dyna_vars;
+ struct BLOCK *block;
+ struct iter *iter;
+ struct tag *tag;
+ VALUE klass;
+ VALUE wrapper;
+ NODE *cref;
-void
-rb_fd_clr(int n, rb_fdset_t *fds)
-{
- if (n >= fds->maxfd) return;
- FD_CLR(n, fds->fdset);
-}
+ int flags; /* misc. states (vmode/rb_trap_immediate/raised) */
-int
-rb_fd_isset(int n, const rb_fdset_t *fds)
-{
- if (n >= fds->maxfd) return 0;
- return FD_ISSET(n, fds->fdset) != 0; /* "!= 0" avoids FreeBSD PR 91421 */
-}
+ NODE *node;
-void
-rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int max)
-{
- int size = howmany(max, NFDBITS) * sizeof(fd_mask);
+ int tracing;
+ VALUE errinfo;
+ VALUE last_status;
+ VALUE last_line;
+ VALUE last_match;
- if (size < sizeof(fd_set)) size = sizeof(fd_set);
- dst->maxfd = max;
- dst->fdset = realloc(dst->fdset, size);
- memcpy(dst->fdset, src, size);
-}
+ int safe;
-int
-rb_fd_select(int n, rb_fdset_t *readfds, rb_fdset_t *writefds, rb_fdset_t *exceptfds, struct timeval *timeout)
-{
- rb_fd_resize(n - 1, readfds);
- rb_fd_resize(n - 1, writefds);
- rb_fd_resize(n - 1, exceptfds);
- return select(n, rb_fd_ptr(readfds), rb_fd_ptr(writefds), rb_fd_ptr(exceptfds), timeout);
-}
+ enum thread_status status;
+ int wait_for;
+ int fd;
+ fd_set readfds;
+ fd_set writefds;
+ fd_set exceptfds;
+ int select_value;
+ double delay;
+ rb_thread_t join;
-#undef FD_ZERO
-#undef FD_SET
-#undef FD_CLR
-#undef FD_ISSET
+ int abort;
+ int priority;
+ VALUE thgroup;
-#define FD_ZERO(f) rb_fd_zero(f)
-#define FD_SET(i, f) rb_fd_set(i, f)
-#define FD_CLR(i, f) rb_fd_clr(i, f)
-#define FD_ISSET(i, f) rb_fd_isset(i, f)
+ st_table *locals;
-#endif
+ VALUE thread;
+};
#define THREAD_RAISED 0x200 /* temporary flag */
#define THREAD_TERMINATING 0x400 /* persistent flag */
-#define THREAD_NO_ENSURE 0x800 /* persistent flag */
-#define THREAD_FLAGS_MASK 0xc00 /* mask for persistent flags */
+#define THREAD_FLAGS_MASK 0x400 /* mask for persistent flags */
#define FOREACH_THREAD_FROM(f,x) x = f; do { x = x->next;
#define END_FOREACH_FROM(f,x) } while (x != f)
@@ -9932,9 +9872,9 @@ struct thread_status_t {
enum thread_status status;
int wait_for;
int fd;
- rb_fdset_t readfds;
- rb_fdset_t writefds;
- rb_fdset_t exceptfds;
+ fd_set readfds;
+ fd_set writefds;
+ fd_set exceptfds;
int select_value;
double delay;
rb_thread_t join;
@@ -9957,16 +9897,13 @@ struct thread_status_t {
(dst)->readfds = (src)->readfds, \
(dst)->writefds = (src)->writefds, \
(dst)->exceptfds = (src)->exceptfds, \
- rb_fd_init(&(src)->readfds), \
- rb_fd_init(&(src)->writefds), \
- rb_fd_init(&(src)->exceptfds), \
(dst)->select_value = (src)->select_value, \
(dst)->delay = (src)->delay, \
(dst)->join = (src)->join, \
0)
static int
-thread_set_raised(void)
+thread_set_raised()
{
if (curr_thread->flags & THREAD_RAISED) return 1;
curr_thread->flags |= THREAD_RAISED;
@@ -9974,30 +9911,28 @@ thread_set_raised(void)
}
static int
-thread_reset_raised(void)
+thread_reset_raised()
{
if (!(curr_thread->flags & THREAD_RAISED)) return 0;
curr_thread->flags &= ~THREAD_RAISED;
return 1;
}
-static int
-thread_no_ensure()
-{
- return ((curr_thread->flags & THREAD_NO_ENSURE) == THREAD_NO_ENSURE);
-}
-
-static void rb_thread_ready(rb_thread_t);
+static void rb_thread_ready _((rb_thread_t));
+static VALUE run_trap_eval _((VALUE));
static VALUE
-run_trap_eval(VALUE arg)
+run_trap_eval(arg)
+ VALUE arg;
{
VALUE *p = (VALUE *)arg;
return rb_eval_cmd(p[0], p[1], (int)p[2]);
}
static VALUE
-rb_trap_eval(VALUE cmd, int sig, int safe)
+rb_trap_eval(cmd, sig, safe)
+ VALUE cmd;
+ int sig, safe;
{
int state;
VALUE val = Qnil; /* OK */
@@ -10009,7 +9944,9 @@ rb_trap_eval(VALUE cmd, int sig, int safe)
arg[2] = (VALUE)safe;
THREAD_COPY_STATUS(curr_thread, &save);
rb_thread_ready(curr_thread);
+ PUSH_ITER(ITER_NOT);
val = rb_protect(run_trap_eval, (VALUE)&arg, &state);
+ POP_ITER();
THREAD_COPY_STATUS(&save, curr_thread);
if (state) {
@@ -10027,7 +9964,8 @@ rb_trap_eval(VALUE cmd, int sig, int safe)
}
static const char *
-thread_status_name(enum thread_status status)
+thread_status_name(status)
+ enum thread_status status;
{
switch (status) {
case THREAD_RUNNABLE:
@@ -10045,7 +9983,8 @@ thread_status_name(enum thread_status status)
/* $SAFE accessor */
void
-rb_set_safe_level(int level)
+rb_set_safe_level(level)
+ int level;
{
if (level > ruby_safe_level) {
if (level > SAFE_LEVEL_MAX) level = SAFE_LEVEL_MAX;
@@ -10055,13 +9994,14 @@ rb_set_safe_level(int level)
}
static VALUE
-safe_getter(void)
+safe_getter()
{
return INT2NUM(ruby_safe_level);
}
static void
-safe_setter(VALUE val)
+safe_setter(val)
+ VALUE val;
{
int level = NUM2INT(val);
@@ -10076,7 +10016,7 @@ safe_setter(VALUE val)
/* Return the current time as a floating-point number */
static double
-timeofday(void)
+timeofday()
{
struct timeval tv;
gettimeofday(&tv, NULL);
@@ -10085,9 +10025,9 @@ timeofday(void)
#define STACK(addr) (th->stk_pos<(VALUE*)(addr) && (VALUE*)(addr)<th->stk_pos+th->stk_len)
#define ADJ(addr) (void*)(STACK(addr)?(((VALUE*)(addr)-th->stk_pos)+th->stk_ptr):(VALUE*)(addr))
-
static void
-thread_mark(rb_thread_t th)
+thread_mark(th)
+ rb_thread_t th;
{
struct FRAME *frame;
struct BLOCK *block;
@@ -10096,6 +10036,7 @@ thread_mark(rb_thread_t th)
rb_gc_mark(th->thread);
if (th->join) rb_gc_mark(th->join->thread);
+ rb_gc_mark(th->klass);
rb_gc_mark(th->wrapper);
rb_gc_mark((VALUE)th->cref);
@@ -10107,7 +10048,6 @@ thread_mark(rb_thread_t th)
rb_gc_mark(th->last_match);
rb_mark_tbl(th->locals);
rb_gc_mark(th->thgroup);
- rb_gc_mark_maybe(th->sandbox);
/* mark data in copied stack */
if (th == curr_thread) return;
@@ -10118,7 +10058,7 @@ thread_mark(rb_thread_t th)
#if defined(THINK_C) || defined(__human68k__)
rb_gc_mark_locations(th->stk_ptr+2, th->stk_ptr+th->stk_len+2);
#endif
-#ifdef __ia64
+#ifdef __ia64__
if (th->bstr_ptr) {
rb_gc_mark_locations(th->bstr_ptr, th->bstr_ptr+th->bstr_len);
}
@@ -10143,24 +10083,22 @@ thread_mark(rb_thread_t th)
while (block) {
block = ADJ(block);
rb_gc_mark_frame(&block->frame);
- block = block->frame.block;
+ block = block->prev;
}
}
-static struct {
- rb_thread_t thread;
- VALUE proc, arg;
-} new_thread;
-
static int
-mark_loading_thread(ID key, VALUE value, int lev)
+mark_loading_thread(key, value, lev)
+ ID key;
+ VALUE value;
+ int lev;
{
rb_gc_mark(((rb_thread_t)value)->thread);
return ST_CONTINUE;
}
void
-rb_gc_mark_threads(void)
+rb_gc_mark_threads()
{
rb_thread_t th;
@@ -10182,16 +10120,11 @@ rb_gc_mark_threads(void)
}
rb_gc_mark(th->thread);
} END_FOREACH_FROM(main_thread, th);
- if (new_thread.thread) {
- rb_gc_mark(new_thread.thread->thread);
- rb_gc_mark(new_thread.proc);
- rb_gc_mark(new_thread.arg);
- }
if (loading_tbl) st_foreach(loading_tbl, mark_loading_thread, 0);
}
void
-rb_gc_abort_threads(void)
+rb_gc_abort_threads()
{
rb_thread_t th;
@@ -10208,11 +10141,12 @@ rb_gc_abort_threads(void)
}
static void
-thread_free(rb_thread_t th)
+thread_free(th)
+ rb_thread_t th;
{
if (th->stk_ptr) free(th->stk_ptr);
th->stk_ptr = 0;
-#ifdef __ia64
+#ifdef __ia64__
if (th->bstr_ptr) free(th->bstr_ptr);
th->bstr_ptr = 0;
#endif
@@ -10221,14 +10155,12 @@ thread_free(rb_thread_t th)
if (th->prev) th->prev->next = th->next;
if (th->next) th->next->prev = th->prev;
}
- rb_fd_term(&th->readfds);
- rb_fd_term(&th->writefds);
- rb_fd_term(&th->exceptfds);
if (th != main_thread) free(th);
}
static rb_thread_t
-rb_thread_check(VALUE data)
+rb_thread_check(data)
+ VALUE data;
{
if (TYPE(data) != T_DATA || RDATA(data)->dmark != (RUBY_DATA_FUNC)thread_mark) {
rb_raise(rb_eTypeError, "wrong argument type %s (expected Thread)",
@@ -10237,13 +10169,13 @@ rb_thread_check(VALUE data)
return (rb_thread_t)RDATA(data)->data;
}
-static VALUE rb_thread_raise(int, VALUE*, rb_thread_t);
+static VALUE rb_thread_raise _((int, VALUE*, rb_thread_t));
static VALUE th_raise_exception;
static NODE *th_raise_node;
static VALUE th_cmd;
static int th_sig, th_safe;
-static const char *th_signm;
+static char *th_signm;
#define RESTORE_NORMAL 1
#define RESTORE_FATAL 2
@@ -10254,12 +10186,10 @@ static const char *th_signm;
#define RESTORE_EXIT 7
extern VALUE *rb_gc_stack_start;
-#ifdef __ia64
-extern VALUE *rb_gc_register_stack_start;
-#endif
static void
-rb_thread_save_context(rb_thread_t th)
+rb_thread_save_context(th)
+ rb_thread_t th;
{
VALUE *pos;
int len;
@@ -10277,19 +10207,22 @@ rb_thread_save_context(rb_thread_t th)
th->stk_len = len;
FLUSH_REGISTER_WINDOWS;
MEMCPY(th->stk_ptr, th->stk_pos, VALUE, th->stk_len);
-#ifdef __ia64
- th->bstr_pos = rb_gc_register_stack_start;
- len = (VALUE*)rb_ia64_bsp() - th->bstr_pos;
- th->bstr_len = 0;
- if (len > th->bstr_max) {
- VALUE *ptr = realloc(th->bstr_ptr, sizeof(VALUE) * len);
- if (!ptr) rb_memerror();
- th->bstr_ptr = ptr;
- th->bstr_max = len;
- }
- th->bstr_len = len;
- rb_ia64_flushrs();
- MEMCPY(th->bstr_ptr, th->bstr_pos, VALUE, th->bstr_len);
+#ifdef __ia64__
+ {
+ ucontext_t ctx;
+ VALUE *top, *bot;
+
+ getcontext(&ctx);
+ bot = (VALUE*)__libc_ia64_register_backing_store_base;
+#if defined(__FreeBSD__)
+ top = (VALUE*)ctx.uc_mcontext.mc_special.bspstore;
+#else
+ top = (VALUE*)ctx.uc_mcontext.sc_ar_bsp;
+#endif
+ th->bstr_len = top - bot;
+ REALLOC_N(th->bstr_ptr, VALUE, th->bstr_len);
+ MEMCPY(th->bstr_ptr, (VALUE*)__libc_ia64_register_backing_store_base, VALUE, th->bstr_len);
+ }
#endif
#ifdef SAVE_WIN32_EXCEPTION_LIST
th->win32_exception_list = win32_get_exception_list();
@@ -10298,11 +10231,14 @@ rb_thread_save_context(rb_thread_t th)
th->frame = ruby_frame;
th->scope = ruby_scope;
ruby_scope->flags |= SCOPE_DONT_RECYCLE;
+ th->klass = ruby_class;
th->wrapper = ruby_wrapper;
th->cref = ruby_cref;
th->dyna_vars = ruby_dyna_vars;
+ th->block = ruby_block;
th->flags &= THREAD_FLAGS_MASK;
- th->flags |= (rb_trap_immediate<<8) | vis_mode;
+ th->flags |= (rb_trap_immediate<<8) | scope_vmode;
+ th->iter = ruby_iter;
th->tag = prot_tag;
th->tracing = tracing;
th->errinfo = ruby_errinfo;
@@ -10316,16 +10252,13 @@ rb_thread_save_context(rb_thread_t th)
th->safe = ruby_safe_level;
th->node = ruby_current_node;
- if (ruby_sandbox_save != NULL)
- {
- ruby_sandbox_save(th);
- }
}
static int
-rb_thread_switch(int n)
+rb_thread_switch(n)
+ int n;
{
- rb_trap_immediate = (curr_thread->flags&(1<<8))?1:0;
+ rb_trap_immediate = (curr_thread->flags&0x100)?1:0;
switch (n) {
case 0:
return 0;
@@ -10339,8 +10272,7 @@ rb_thread_switch(int n)
rb_trap_eval(th_cmd, th_sig, th_safe);
break;
case RESTORE_RAISE:
- ruby_frame->callee = 0;
- ruby_frame->this_func = 0;
+ ruby_frame->last_func = 0;
ruby_current_node = th_raise_node;
rb_raise_jump(th_raise_exception);
break;
@@ -10363,31 +10295,62 @@ rb_thread_switch(int n)
}
#define THREAD_SAVE_CONTEXT(th) \
- (rb_thread_switch((FLUSH_REGISTER_WINDOWS, ruby_setjmp(rb_thread_save_context(th), (th)->context))))
+ (rb_thread_save_context(th),\
+ rb_thread_switch((FLUSH_REGISTER_WINDOWS, ruby_setjmp((th)->context))))
-NORETURN(static void rb_thread_restore_context(rb_thread_t,int));
-NORETURN(NOINLINE(static void rb_thread_restore_context_0(rb_thread_t,int,void*)));
-NORETURN(NOINLINE(static void stack_extend(rb_thread_t, int, VALUE *)));
+NORETURN(static void rb_thread_restore_context _((rb_thread_t,int)));
+# if defined(_MSC_VER) && _MSC_VER >= 1300
+__declspec(noinline) static void stack_extend(rb_thread_t, int);
+# endif
static void
-rb_thread_restore_context_0(rb_thread_t th, int exit, void *vp)
+stack_extend(th, exit)
+ rb_thread_t th;
+ int exit;
+{
+ VALUE space[1024];
+
+ memset(space, 0, 1); /* prevent array from optimization */
+ rb_thread_restore_context(th, exit);
+}
+
+static void
+rb_thread_restore_context(th, exit)
+ rb_thread_t th;
+ int exit;
{
- /* vp prevents tail call */
+ VALUE v;
static rb_thread_t tmp;
static int ex;
static VALUE tval;
- rb_trap_immediate = 0; /* inhibit interrupts from here */
- if (ruby_sandbox_restore != NULL)
- {
- ruby_sandbox_restore(th);
+ if (!th->stk_ptr) rb_bug("unsaved context");
+
+#if STACK_GROW_DIRECTION < 0
+ if (&v > th->stk_pos) stack_extend(th, exit);
+#elif STACK_GROW_DIRECTION > 0
+ if (&v < th->stk_pos + th->stk_len) stack_extend(th, exit);
+#else
+ if (&v < rb_gc_stack_start) {
+ /* Stack grows downward */
+ if (&v > th->stk_pos) stack_extend(th, exit);
}
+ else {
+ /* Stack grows upward */
+ if (&v < th->stk_pos + th->stk_len) stack_extend(th, exit);
+ }
+#endif
+
+ rb_trap_immediate = 0; /* inhibit interrupts from here */
ruby_frame = th->frame;
ruby_scope = th->scope;
+ ruby_class = th->klass;
ruby_wrapper = th->wrapper;
ruby_cref = th->cref;
- vis_mode = th->flags&VIS_MASK;
ruby_dyna_vars = th->dyna_vars;
+ ruby_block = th->block;
+ scope_vmode = th->flags&SCOPE_MASK;
+ ruby_iter = th->iter;
prot_tag = th->tag;
tracing = th->tracing;
ruby_errinfo = th->errinfo;
@@ -10403,8 +10366,8 @@ rb_thread_restore_context_0(rb_thread_t th, int exit, void *vp)
ex = exit;
FLUSH_REGISTER_WINDOWS;
MEMCPY(tmp->stk_pos, tmp->stk_ptr, VALUE, tmp->stk_len);
-#ifdef __ia64
- MEMCPY(tmp->bstr_pos, tmp->bstr_ptr, VALUE, tmp->bstr_len);
+#ifdef __ia64__
+ MEMCPY((VALUE*)__libc_ia64_register_backing_store_base, tmp->bstr_ptr, VALUE, tmp->bstr_len);
#endif
tval = rb_lastline_get();
@@ -10417,75 +10380,9 @@ rb_thread_restore_context_0(rb_thread_t th, int exit, void *vp)
ruby_longjmp(tmp->context, ex);
}
-#ifdef __ia64
-#define C(a) rse_##a##0, rse_##a##1, rse_##a##2, rse_##a##3, rse_##a##4
-#define E(a) rse_##a##0= rse_##a##1= rse_##a##2= rse_##a##3= rse_##a##4
-static volatile int C(a), C(b), C(c), C(d), C(e);
-static volatile int C(f), C(g), C(h), C(i), C(j);
-static volatile int C(k), C(l), C(m), C(n), C(o);
-static volatile int C(p), C(q), C(r), C(s), C(t);
-int rb_dummy_false = 0;
-NORETURN(NOINLINE(static void register_stack_extend(rb_thread_t, int, void *, VALUE *)));
-static void
-register_stack_extend(rb_thread_t th, int exit, void *vp, VALUE *curr_bsp)
-{
- if (rb_dummy_false) {
- /* use registers as much as possible */
- E(a) = E(b) = E(c) = E(d) = E(e) =
- E(f) = E(g) = E(h) = E(i) = E(j) =
- E(k) = E(l) = E(m) = E(n) = E(o) =
- E(p) = E(q) = E(r) = E(s) = E(t) = 0;
- E(a) = E(b) = E(c) = E(d) = E(e) =
- E(f) = E(g) = E(h) = E(i) = E(j) =
- E(k) = E(l) = E(m) = E(n) = E(o) =
- E(p) = E(q) = E(r) = E(s) = E(t) = 0;
- }
- if (curr_bsp < th->bstr_pos+th->bstr_len) {
- register_stack_extend(th, exit, &exit, (VALUE*)rb_ia64_bsp());
- }
- rb_thread_restore_context_0(th, exit, &exit);
-}
-#undef C
-#undef E
-#endif
-
-static void
-stack_extend(rb_thread_t th, int exit, VALUE *addr_in_prev_frame)
-{
-#define STACK_PAD_SIZE 1024
- VALUE space[STACK_PAD_SIZE];
-
-#if STACK_GROW_DIRECTION < 0
- if (addr_in_prev_frame > th->stk_pos) stack_extend(th, exit, &space[0]);
-#elif STACK_GROW_DIRECTION > 0
- if (addr_in_prev_frame < th->stk_pos + th->stk_len) stack_extend(th, exit, &space[STACK_PAD_SIZE-1]);
-#else
- if (addr_in_prev_frame < rb_gc_stack_start) {
- /* Stack grows downward */
- if (addr_in_prev_frame > th->stk_pos) stack_extend(th, exit, &space[0]);
- }
- else {
- /* Stack grows upward */
- if (addr_in_prev_frame < th->stk_pos + th->stk_len) stack_extend(th, exit, &space[STACK_PAD_SIZE-1]);
- }
-#endif
-#ifdef __ia64
- register_stack_extend(th, exit, space, (VALUE*)rb_ia64_bsp());
-#else
- rb_thread_restore_context_0(th, exit, space);
-#endif
-}
-
static void
-rb_thread_restore_context(rb_thread_t th, int exit)
-{
- VALUE v;
- if (!th->stk_ptr) rb_bug("unsaved context");
- stack_extend(th, exit, &v);
-}
-
-static void
-rb_thread_ready(rb_thread_t th)
+rb_thread_ready(th)
+ rb_thread_t th;
{
th->wait_for = 0;
if (th->status != THREAD_TO_KILL) {
@@ -10494,7 +10391,8 @@ rb_thread_ready(rb_thread_t th)
}
static void
-rb_thread_die(rb_thread_t th)
+rb_thread_die(th)
+ rb_thread_t th;
{
th->thgroup = 0;
th->status = THREAD_KILLED;
@@ -10503,7 +10401,8 @@ rb_thread_die(rb_thread_t th)
}
static void
-rb_thread_remove(rb_thread_t th)
+rb_thread_remove(th)
+ rb_thread_t th;
{
if (th->status == THREAD_KILLED) return;
@@ -10514,13 +10413,15 @@ rb_thread_remove(rb_thread_t th)
}
static int
-rb_thread_dead(rb_thread_t th)
+rb_thread_dead(th)
+ rb_thread_t th;
{
return th->status == THREAD_KILLED;
}
void
-rb_thread_fd_close(int fd)
+rb_thread_fd_close(fd)
+ int fd;
{
rb_thread_t th;
@@ -10537,9 +10438,11 @@ rb_thread_fd_close(int fd)
END_FOREACH(th);
}
-NORETURN(static void rb_thread_main_jump(VALUE, int));
+NORETURN(static void rb_thread_main_jump _((VALUE, int)));
static void
-rb_thread_main_jump(VALUE err, int tag)
+rb_thread_main_jump(err, tag)
+ VALUE err;
+ int tag;
{
curr_thread = main_thread;
th_raise_exception = err;
@@ -10547,14 +10450,14 @@ rb_thread_main_jump(VALUE err, int tag)
rb_thread_restore_context(main_thread, tag);
}
-NORETURN(static void rb_thread_deadlock(void));
+NORETURN(static void rb_thread_deadlock _((void)));
static void
-rb_thread_deadlock(void)
+rb_thread_deadlock()
{
char msg[21+SIZEOF_LONG*2];
VALUE e;
- sprintf(msg, "Thread(%p): deadlock", (void*)curr_thread->thread);
+ sprintf(msg, "Thread(0x%lx): deadlock", curr_thread->thread);
e = rb_exc_new2(rb_eFatal, msg);
if (curr_thread == main_thread) {
rb_exc_raise(e);
@@ -10563,12 +10466,13 @@ rb_thread_deadlock(void)
}
static void
-copy_fds(rb_fdset_t *dst, rb_fdset_t *src, int max)
+copy_fds(dst, src, max)
+ fd_set *dst, *src;
+ int max;
{
int n = 0;
int i;
- if (max >= rb_fd_max(src)) max = rb_fd_max(src) - 1;
for (i=0; i<=max; i++) {
if (FD_ISSET(i, src)) {
n = i;
@@ -10578,12 +10482,12 @@ copy_fds(rb_fdset_t *dst, rb_fdset_t *src, int max)
}
static int
-match_fds(rb_fdset_t *dst, rb_fdset_t *src, int max)
+match_fds(dst, src, max)
+ fd_set *dst, *src;
+ int max;
{
int i;
- if (max >= rb_fd_max(src)) max = rb_fd_max(src) - 1;
- if (max >= rb_fd_max(dst)) max = rb_fd_max(dst) - 1;
for (i=0; i<=max; i++) {
if (FD_ISSET(i, src) && FD_ISSET(i, dst)) {
return Qtrue;
@@ -10593,11 +10497,12 @@ match_fds(rb_fdset_t *dst, rb_fdset_t *src, int max)
}
static int
-intersect_fds(rb_fdset_t *src, rb_fdset_t *dst, int max)
+intersect_fds(src, dst, max)
+ fd_set *src, *dst;
+ int max;
{
int i, n = 0;
- if (max >= rb_fd_max(dst)) max = rb_fd_max(dst) - 1;
for (i=0; i<=max; i++) {
if (FD_ISSET(i, dst)) {
if (FD_ISSET(i, src)) {
@@ -10614,11 +10519,12 @@ intersect_fds(rb_fdset_t *src, rb_fdset_t *dst, int max)
}
static int
-find_bad_fds(rb_fdset_t *dst, rb_fdset_t *src, int max)
+find_bad_fds(dst, src, max)
+ fd_set *dst, *src;
+ int max;
{
int i, test = Qfalse;
- if (max >= rb_fd_max(src)) max = rb_fd_max(src) - 1;
for (i=0; i<=max; i++) {
if (FD_ISSET(i, src) && !FD_ISSET(i, dst)) {
FD_CLR(i, src);
@@ -10629,16 +10535,16 @@ find_bad_fds(rb_fdset_t *dst, rb_fdset_t *src, int max)
}
void
-rb_thread_schedule(void)
+rb_thread_schedule()
{
rb_thread_t next; /* OK */
rb_thread_t th;
rb_thread_t curr;
int found = 0;
- rb_fdset_t readfds;
- rb_fdset_t writefds;
- rb_fdset_t exceptfds;
+ fd_set readfds;
+ fd_set writefds;
+ fd_set exceptfds;
struct timeval delay_tv, *delay_ptr;
double delay, now; /* OK */
int n, max;
@@ -10650,7 +10556,7 @@ rb_thread_schedule(void)
rb_bug("cross-thread violation on rb_thread_schedule()");
}
#endif
- rb_thread_pending = rb_thread_critical = 0;
+ rb_thread_pending = 0;
if (curr_thread == curr_thread->next
&& curr_thread->status == THREAD_RUNNABLE)
return;
@@ -10662,10 +10568,6 @@ rb_thread_schedule(void)
curr = curr->prev;
}
- rb_fd_init(&readfds);
- rb_fd_init(&writefds);
- rb_fd_init(&exceptfds);
-
again:
max = -1;
FD_ZERO(&readfds);
@@ -10739,20 +10641,11 @@ rb_thread_schedule(void)
delay_ptr = &delay_tv;
}
- n = rb_fd_select(max+1, &readfds, &writefds, &exceptfds, delay_ptr);
+ n = select(max+1, &readfds, &writefds, &exceptfds, delay_ptr);
if (n < 0) {
int e = errno;
- if (rb_trap_pending) {
- int status;
- rb_protect((VALUE (*)(VALUE))rb_trap_exec, Qnil, &status);
- if (status) {
- rb_fd_term(&readfds);
- rb_fd_term(&writefds);
- rb_fd_term(&exceptfds);
- rb_jump_tag(status);
- }
- }
+ if (rb_trap_pending) rb_trap_exec();
if (e == EINTR) goto again;
#ifdef ERESTART
if (e == ERESTART) goto again;
@@ -10823,10 +10716,6 @@ rb_thread_schedule(void)
goto again;
}
- rb_fd_term(&readfds);
- rb_fd_term(&writefds);
- rb_fd_term(&exceptfds);
-
FOREACH_THREAD_FROM(curr, th) {
if (th->status == THREAD_TO_KILL) {
next = th;
@@ -10848,13 +10737,13 @@ rb_thread_schedule(void)
TRAP_END;
}
FOREACH_THREAD_FROM(curr, th) {
- warn_printf("deadlock %p: %s:",
+ warn_printf("deadlock 0x%lx: %s:",
th->thread, thread_status_name(th->status));
if (th->wait_for & WAIT_FD) warn_printf("F(%d)", th->fd);
if (th->wait_for & WAIT_SELECT) warn_printf("S");
if (th->wait_for & WAIT_TIME) warn_printf("T(%f)", th->delay);
if (th->wait_for & WAIT_JOIN)
- warn_printf("J(%p)", th->join ? th->join->thread : 0);
+ warn_printf("J(0x%lx)", th->join ? th->join->thread : 0);
if (th->wait_for & WAIT_PID) warn_printf("P");
if (!th->wait_for) warn_printf("-");
warn_printf(" %s - %s:%d\n",
@@ -10894,9 +10783,11 @@ rb_thread_schedule(void)
}
void
-rb_thread_wait_fd(int fd)
+rb_thread_wait_fd(fd)
+ int fd;
{
if (rb_thread_critical) return;
+ if (ruby_in_compile) return;
if (curr_thread == curr_thread->next) return;
if (curr_thread->status == THREAD_TO_KILL) return;
@@ -10907,7 +10798,8 @@ rb_thread_wait_fd(int fd)
}
int
-rb_thread_fd_writable(int fd)
+rb_thread_fd_writable(fd)
+ int fd;
{
if (rb_thread_critical) return Qtrue;
if (curr_thread == curr_thread->next) return Qtrue;
@@ -10926,7 +10818,8 @@ rb_thread_fd_writable(int fd)
}
void
-rb_thread_wait_for(struct timeval time)
+rb_thread_wait_for(time)
+ struct timeval time;
{
double date;
@@ -10978,16 +10871,19 @@ rb_thread_wait_for(struct timeval time)
rb_thread_schedule();
}
-void rb_thread_sleep_forever(void);
+void rb_thread_sleep_forever _((void));
int
-rb_thread_alone(void)
+rb_thread_alone()
{
return curr_thread == curr_thread->next;
}
int
-rb_thread_select(int max, fd_set *read, fd_set *write, fd_set *except, struct timeval *timeout)
+rb_thread_select(max, read, write, except, timeout)
+ int max;
+ fd_set *read, *write, *except;
+ struct timeval *timeout;
{
#ifndef linux
double limit;
@@ -11053,11 +10949,11 @@ rb_thread_select(int max, fd_set *read, fd_set *write, fd_set *except, struct ti
}
curr_thread->status = THREAD_STOPPED;
- if (read) rb_fd_copy(&curr_thread->readfds, read, max);
+ if (read) curr_thread->readfds = *read;
else FD_ZERO(&curr_thread->readfds);
- if (write) rb_fd_copy(&curr_thread->writefds, write, max);
+ if (write) curr_thread->writefds = *write;
else FD_ZERO(&curr_thread->writefds);
- if (except) rb_fd_copy(&curr_thread->exceptfds, except, max);
+ if (except) curr_thread->exceptfds = *except;
else FD_ZERO(&curr_thread->exceptfds);
curr_thread->fd = max;
curr_thread->wait_for = WAIT_SELECT;
@@ -11067,25 +10963,29 @@ rb_thread_select(int max, fd_set *read, fd_set *write, fd_set *except, struct ti
curr_thread->wait_for |= WAIT_TIME;
}
rb_thread_schedule();
- if (read) *read = *rb_fd_ptr(&curr_thread->readfds);
- if (write) *write = *rb_fd_ptr(&curr_thread->writefds);
- if (except) *except = *rb_fd_ptr(&curr_thread->exceptfds);
+ if (read) *read = curr_thread->readfds;
+ if (write) *write = curr_thread->writefds;
+ if (except) *except = curr_thread->exceptfds;
return curr_thread->select_value;
}
+static int rb_thread_join _((rb_thread_t, double));
+
static int
-rb_thread_join(rb_thread_t th, double limit)
+rb_thread_join(th, limit)
+ rb_thread_t th;
+ double limit;
{
enum thread_status last_status = THREAD_RUNNABLE;
if (rb_thread_critical) rb_thread_deadlock();
if (!rb_thread_dead(th)) {
if (th == curr_thread)
- rb_raise(rb_eThreadError, "thread %p tried to join itself",
- (void*)th->thread);
+ rb_raise(rb_eThreadError, "thread 0x%lx tried to join itself",
+ th->thread);
if ((th->wait_for & WAIT_JOIN) && th->join == curr_thread)
- rb_raise(rb_eThreadError, "Thread#join: deadlock %p - mutual join(%p)",
- (void*)curr_thread->thread, (void*)th->thread);
+ rb_raise(rb_eThreadError, "Thread#join: deadlock 0x%lx - mutual join(0x%lx)",
+ curr_thread->thread, th->thread);
if (curr_thread->status == THREAD_TO_KILL)
last_status = THREAD_TO_KILL;
if (limit == 0) return Qfalse;
@@ -11104,7 +11004,7 @@ rb_thread_join(rb_thread_t th, double limit)
VALUE errat = make_backtrace();
VALUE errinfo = rb_obj_dup(th->errinfo);
- if (TYPE(oldbt) == T_ARRAY && RARRAY_LEN(oldbt) > 0) {
+ if (TYPE(oldbt) == T_ARRAY && RARRAY(oldbt)->len > 0) {
rb_ary_unshift(errat, rb_ary_entry(oldbt, 0));
}
set_backtrace(errinfo, errat);
@@ -11156,7 +11056,10 @@ rb_thread_join(rb_thread_t th, double limit)
*/
static VALUE
-rb_thread_join_m(int argc, VALUE *argv, VALUE thread)
+rb_thread_join_m(argc, argv, thread)
+ int argc;
+ VALUE *argv;
+ VALUE thread;
{
VALUE limit;
double delay = DELAY_INFTY;
@@ -11180,7 +11083,7 @@ rb_thread_join_m(int argc, VALUE *argv, VALUE thread)
*/
VALUE
-rb_thread_current(void)
+rb_thread_current()
{
return curr_thread->thread;
}
@@ -11196,7 +11099,7 @@ rb_thread_current(void)
*/
VALUE
-rb_thread_main(void)
+rb_thread_main()
{
return main_thread->thread;
}
@@ -11223,7 +11126,7 @@ rb_thread_main(void)
*/
VALUE
-rb_thread_list(void)
+rb_thread_list()
{
rb_thread_t th;
VALUE ary = rb_ary_new();
@@ -11260,7 +11163,8 @@ rb_thread_list(void)
*/
VALUE
-rb_thread_wakeup(VALUE thread)
+rb_thread_wakeup(thread)
+ VALUE thread;
{
rb_thread_t th = rb_thread_check(thread);
@@ -11293,7 +11197,8 @@ rb_thread_wakeup(VALUE thread)
*/
VALUE
-rb_thread_run(VALUE thread)
+rb_thread_run(thread)
+ VALUE thread;
{
rb_thread_wakeup(thread);
if (!rb_thread_critical) rb_thread_schedule();
@@ -11302,68 +11207,38 @@ rb_thread_run(VALUE thread)
}
-static void
-kill_thread(th, flags)
- rb_thread_t th;
- int flags;
-{
- if (th != curr_thread && th->safe < 4) {
- rb_secure(4);
- }
- if (th->status == THREAD_TO_KILL || th->status == THREAD_KILLED)
- return;
- if (th == th->next || th == main_thread) rb_exit(EXIT_SUCCESS);
-
- rb_thread_ready(th);
- th->flags |= flags;
- th->status = THREAD_TO_KILL;
- if (!rb_thread_critical) rb_thread_schedule();
-}
-
-
/*
* call-seq:
- * thr.exit => thr
- * thr.kill => thr
- * thr.terminate => thr
+ * thr.exit => thr or nil
+ * thr.kill => thr or nil
+ * thr.terminate => thr or nil
*
- * Terminates <i>thr</i> and schedules another thread to be run, returning
- * the terminated <code>Thread</code>. If this is the main thread, or the
- * last thread, exits the process.
+ * Terminates <i>thr</i> and schedules another thread to be run. If this thread
+ * is already marked to be killed, <code>exit</code> returns the
+ * <code>Thread</code>. If this is the main thread, or the last thread, exits
+ * the process.
*/
VALUE
-rb_thread_kill(VALUE thread)
+rb_thread_kill(thread)
+ VALUE thread;
{
rb_thread_t th = rb_thread_check(thread);
- kill_thread(th, 0);
+ if (th != curr_thread && th->safe < 4) {
+ rb_secure(4);
+ }
+ if (th->status == THREAD_TO_KILL || th->status == THREAD_KILLED)
return thread;
-}
-
-
-/*
- * call-seq:
- * thr.exit! => thr
- * thr.kill! => thr
- * thr.terminate! => thr
- *
- * Terminates <i>thr</i> without calling ensure clauses and schedules
- * another thread to be run, returning the terminated <code>Thread</code>.
- * If this is the main thread, or the last thread, exits the process.
- *
- * See <code>Thread#exit</code> for the safer version.
- */
+ if (th == th->next || th == main_thread) rb_exit(EXIT_SUCCESS);
-static VALUE
-rb_thread_kill_bang(thread)
- VALUE thread;
-{
- rb_thread_t th = rb_thread_check(thread);
- kill_thread(th, THREAD_NO_ENSURE);
+ rb_thread_ready(th);
+ th->status = THREAD_TO_KILL;
+ if (!rb_thread_critical) rb_thread_schedule();
return thread;
}
+
/*
* call-seq:
* Thread.kill(thread) => thread
@@ -11379,7 +11254,8 @@ rb_thread_kill_bang(thread)
*/
static VALUE
-rb_thread_s_kill(VALUE obj, VALUE th)
+rb_thread_s_kill(obj, th)
+ VALUE obj, th;
{
return rb_thread_kill(th);
}
@@ -11396,7 +11272,7 @@ rb_thread_s_kill(VALUE obj, VALUE th)
*/
static VALUE
-rb_thread_exit(void)
+rb_thread_exit()
{
return rb_thread_kill(curr_thread->thread);
}
@@ -11423,7 +11299,7 @@ rb_thread_exit(void)
*/
static VALUE
-rb_thread_pass(void)
+rb_thread_pass()
{
rb_thread_schedule();
return Qnil;
@@ -11450,7 +11326,7 @@ rb_thread_pass(void)
*/
VALUE
-rb_thread_stop(void)
+rb_thread_stop()
{
enum thread_status last_status = THREAD_RUNNABLE;
@@ -11467,10 +11343,10 @@ rb_thread_stop(void)
return Qnil;
}
-struct timeval rb_time_timeval(VALUE time);
+struct timeval rb_time_timeval();
void
-rb_thread_polling(void)
+rb_thread_polling()
{
if (curr_thread != curr_thread->next) {
curr_thread->status = THREAD_STOPPED;
@@ -11481,7 +11357,8 @@ rb_thread_polling(void)
}
void
-rb_thread_sleep(int sec)
+rb_thread_sleep(sec)
+ int sec;
{
if (curr_thread == curr_thread->next) {
TRAP_BEG;
@@ -11493,7 +11370,7 @@ rb_thread_sleep(int sec)
}
void
-rb_thread_sleep_forever(void)
+rb_thread_sleep_forever()
{
int thr_critical = rb_thread_critical;
if (curr_thread == curr_thread->next ||
@@ -11524,7 +11401,8 @@ rb_thread_sleep_forever(void)
*/
static VALUE
-rb_thread_priority(VALUE thread)
+rb_thread_priority(thread)
+ VALUE thread;
{
return INT2NUM(rb_thread_check(thread)->priority);
}
@@ -11554,7 +11432,8 @@ rb_thread_priority(VALUE thread)
*/
static VALUE
-rb_thread_priority_set(VALUE thread, VALUE prio)
+rb_thread_priority_set(thread, prio)
+ VALUE thread, prio;
{
rb_thread_t th;
@@ -11580,7 +11459,8 @@ rb_thread_priority_set(VALUE thread, VALUE prio)
*/
static VALUE
-rb_thread_safe_level(VALUE thread)
+rb_thread_safe_level(thread)
+ VALUE thread;
{
rb_thread_t th;
@@ -11608,7 +11488,7 @@ static VALUE thgroup_default;
*/
static VALUE
-rb_thread_s_abort_exc(void)
+rb_thread_s_abort_exc()
{
return ruby_thread_abort?Qtrue:Qfalse;
}
@@ -11639,7 +11519,8 @@ rb_thread_s_abort_exc(void)
*/
static VALUE
-rb_thread_s_abort_exc_set(VALUE self, VALUE val)
+rb_thread_s_abort_exc_set(self, val)
+ VALUE self, val;
{
rb_secure(4);
ruby_thread_abort = RTEST(val);
@@ -11657,7 +11538,8 @@ rb_thread_s_abort_exc_set(VALUE self, VALUE val)
*/
static VALUE
-rb_thread_abort_exc(VALUE thread)
+rb_thread_abort_exc(thread)
+ VALUE thread;
{
return rb_thread_check(thread)->abort?Qtrue:Qfalse;
}
@@ -11673,7 +11555,8 @@ rb_thread_abort_exc(VALUE thread)
*/
static VALUE
-rb_thread_abort_exc_set(VALUE thread, VALUE val)
+rb_thread_abort_exc_set(thread, val)
+ VALUE thread, val;
{
rb_secure(4);
rb_thread_check(thread)->abort = RTEST(val);
@@ -11692,7 +11575,8 @@ rb_thread_abort_exc_set(VALUE thread, VALUE val)
*/
VALUE
-rb_thread_group(VALUE thread)
+rb_thread_group(thread)
+ VALUE thread;
{
VALUE group = rb_thread_check(thread)->thgroup;
if (!group) {
@@ -11701,7 +11585,7 @@ rb_thread_group(VALUE thread)
return group;
}
-#ifdef __ia64
+#ifdef __ia64__
# define IA64_INIT(x) x
#else
# define IA64_INIT(x)
@@ -11723,19 +11607,20 @@ rb_thread_group(VALUE thread)
th->wait_for = 0;\
IA64_INIT(th->bstr_ptr = 0);\
IA64_INIT(th->bstr_len = 0);\
- IA64_INIT(th->bstr_max = 0);\
- rb_fd_init(&th->readfds);\
- rb_fd_init(&th->writefds);\
- rb_fd_init(&th->exceptfds);\
+ FD_ZERO(&th->readfds);\
+ FD_ZERO(&th->writefds);\
+ FD_ZERO(&th->exceptfds);\
th->delay = 0.0;\
th->join = 0;\
\
th->frame = 0;\
th->scope = 0;\
+ th->klass = 0;\
th->wrapper = 0;\
th->cref = ruby_cref;\
th->dyna_vars = ruby_dyna_vars;\
th->block = 0;\
+ th->iter = 0;\
th->tag = 0;\
th->tracing = 0;\
th->errinfo = Qnil;\
@@ -11747,16 +11632,11 @@ rb_thread_group(VALUE thread)
th->thgroup = thgroup_default;\
th->locals = 0;\
th->thread = 0;\
- if (curr_thread == 0) {\
- th->sandbox = Qnil;\
- } else {\
- th->sandbox = curr_thread->sandbox;\
- }\
- th->anchor = 0;\
} while (0)
static rb_thread_t
-rb_thread_alloc(VALUE klass)
+rb_thread_alloc(klass)
+ VALUE klass;
{
rb_thread_t th;
struct RVarmap *vars;
@@ -11775,7 +11655,8 @@ static int thread_init = 0;
#if defined(_THREAD_SAFE)
static void
-catch_timer(int sig)
+catch_timer(sig)
+ int sig;
{
#if !defined(POSIX_SIGNAL) && !defined(BSD_SIGNAL)
signal(sig, catch_timer);
@@ -11786,7 +11667,8 @@ catch_timer(int sig)
static pthread_t time_thread;
static void*
-thread_timer(void *dummy)
+thread_timer(dummy)
+ void *dummy;
{
for (;;) {
#ifdef HAVE_NANOSLEEP
@@ -11821,7 +11703,8 @@ rb_thread_stop_timer()
}
#elif defined(HAVE_SETITIMER)
static void
-catch_timer(int sig)
+catch_timer(sig)
+ int sig;
{
#if !defined(POSIX_SIGNAL) && !defined(BSD_SIGNAL)
signal(sig, catch_timer);
@@ -11859,42 +11742,11 @@ rb_thread_stop_timer()
int rb_thread_tick = THREAD_TICK;
#endif
-NORETURN(static void rb_thread_terminated(rb_thread_t, int, enum thread_status));
-static VALUE rb_thread_yield(VALUE, rb_thread_t);
-
-static void
-push_thread_anchor(struct ruby_env *ip)
-{
- ip->tag = prot_tag;
- ip->frame = ruby_frame;
- ip->scope = ruby_scope;
- ip->cref = ruby_cref;
- ip->prev = curr_thread->anchor;
- curr_thread->anchor = ip;
-}
-
-static void
-pop_thread_anchor(struct ruby_env *ip)
-{
- curr_thread->anchor = ip->prev;
-}
-
-static void
-thread_insert(rb_thread_t th)
-{
- if (!th->next) {
- /* merge in thread list */
- th->prev = curr_thread;
- curr_thread->next->prev = th;
- th->next = curr_thread->next;
- curr_thread->next = th;
- th->priority = curr_thread->priority;
- th->thgroup = curr_thread->thgroup;
- }
-}
-
static VALUE
-rb_thread_start_0(VALUE (*fn)(ANYARGS), VALUE arg, rb_thread_t th)
+rb_thread_start_0(fn, arg, th)
+ VALUE (*fn)();
+ void *arg;
+ rb_thread_t th;
{
volatile rb_thread_t th_save = th;
volatile VALUE thread = th->thread;
@@ -11928,25 +11780,26 @@ rb_thread_start_0(VALUE (*fn)(ANYARGS), VALUE arg, rb_thread_t th)
return thread;
}
- if (fn == rb_thread_yield && curr_thread->anchor) {
- struct ruby_env *ip = curr_thread->anchor;
- new_thread.thread = th;
- new_thread.proc = rb_block_proc();
- new_thread.arg = (VALUE)arg;
- th->anchor = ip;
- thread_insert(th);
- curr_thread = th;
- ruby_longjmp((prot_tag = ip->tag)->buf, TAG_THREAD);
- }
+ if (ruby_block) { /* should nail down higher blocks */
+ struct BLOCK dummy;
- if (ruby_frame->block) { /* should nail down higher blocks */
- blk_nail_down(ruby_frame->block);
+ dummy.prev = ruby_block;
+ blk_copy_prev(&dummy);
+ saved_block = ruby_block = dummy.prev;
}
scope_dup(ruby_scope);
- thread_insert(th);
+ if (!th->next) {
+ /* merge in thread list */
+ th->prev = curr_thread;
+ curr_thread->next->prev = th;
+ th->next = curr_thread->next;
+ curr_thread->next = th;
+ th->priority = curr_thread->priority;
+ th->thgroup = curr_thread->thgroup;
+ }
- PUSH_TAG(PROT_NONE);
+ PUSH_TAG(PROT_THREAD);
if ((state = EXEC_TAG()) == 0) {
if (THREAD_SAVE_CONTEXT(th) == 0) {
curr_thread = th;
@@ -11968,13 +11821,6 @@ rb_thread_start_0(VALUE (*fn)(ANYARGS), VALUE arg, rb_thread_t th)
blk_free(saved_block);
}
- rb_thread_terminated(th, state, status);
- return 0; /* not reached */
-}
-
-static void
-rb_thread_terminated(rb_thread_t th, int state, enum thread_status status)
-{
if (state && status != THREAD_TO_KILL && !NIL_P(ruby_errinfo)) {
th->flags |= THREAD_RAISED;
if (state == TAG_FATAL) {
@@ -11994,7 +11840,7 @@ rb_thread_terminated(rb_thread_t th, int state, enum thread_status status)
rb_thread_main_jump(ruby_errinfo, RESTORE_RAISE);
}
}
- else if (th->safe < 4 && (ruby_thread_abort||th->abort||RTEST(ruby_debug))) {
+ else if (th->safe < 4 && (ruby_thread_abort || th->abort || RTEST(ruby_debug))) {
/* exit on main_thread */
error_print();
rb_thread_main_jump(ruby_errinfo, RESTORE_EXIT);
@@ -12005,60 +11851,26 @@ rb_thread_terminated(rb_thread_t th, int state, enum thread_status status)
}
rb_thread_schedule();
ruby_stop(0); /* last thread termination */
-}
-
-static void
-rb_thread_start_1(void)
-{
- rb_thread_t th = new_thread.thread;
- volatile rb_thread_t th_save = th;
- VALUE proc = new_thread.proc;
- volatile VALUE arg = new_thread.arg;
- struct ruby_env *ip = th->anchor;
- enum thread_status status;
- int state;
-
- ruby_frame = ip->frame;
- ruby_scope = ip->scope;
- ruby_cref = ip->cref;
- ruby_dyna_vars = ((struct BLOCK *)DATA_PTR(proc))->dyna_vars;
- PUSH_FRAME(Qtrue);
- *ruby_frame = *ip->frame;
- ruby_frame->prev = ip->frame;
- PUSH_TAG(PROT_NONE);
- if ((state = EXEC_TAG()) == 0) {
- if (THREAD_SAVE_CONTEXT(th) == 0) {
- new_thread.thread = 0;
- th->result = rb_proc_yield(RARRAY_LEN(arg), RARRAY_PTR(arg), proc);
- }
- th = th_save;
- }
- else if (TAG_DST()) {
- th = th_save;
- th->result = prot_tag->retval;
- }
- POP_TAG();
- POP_FRAME();
- status = th->status;
-
- if (th == main_thread) ruby_stop(state);
- rb_thread_remove(th);
- rb_thread_terminated(th, state, status);
+ return 0; /* not reached */
}
VALUE
-rb_thread_create(VALUE (*fn)(ANYARGS), void *arg)
+rb_thread_create(fn, arg)
+ VALUE (*fn)();
+ void *arg;
{
Init_stack((VALUE*)&arg);
- return rb_thread_start_0(fn, (VALUE)arg, rb_thread_alloc(rb_cThread));
+ return rb_thread_start_0(fn, arg, rb_thread_alloc(rb_cThread));
}
static VALUE
-rb_thread_yield(VALUE arg, rb_thread_t th)
+rb_thread_yield(arg, th)
+ VALUE arg;
+ rb_thread_t th;
{
const ID *tbl;
- scope_dup(ruby_frame->block->scope);
+ scope_dup(ruby_block->scope);
tbl = ruby_scope->local_tbl;
if (tbl) {
@@ -12071,9 +11883,9 @@ rb_thread_yield(VALUE arg, rb_thread_t th)
}
rb_dvar_push('_', Qnil);
rb_dvar_push('~', Qnil);
- ruby_frame->block->dyna_vars = ruby_dyna_vars;
+ ruby_block->dyna_vars = ruby_dyna_vars;
- return rb_yield_0(arg, 0, 0, 0);
+ return rb_yield_0(arg, 0, 0, YIELD_LAMBDA_CALL, Qtrue);
}
/*
@@ -12095,7 +11907,10 @@ rb_thread_yield(VALUE arg, rb_thread_t th)
*/
static VALUE
-rb_thread_s_new(int argc, VALUE *argv, VALUE klass)
+rb_thread_s_new(argc, argv, klass)
+ int argc;
+ VALUE *argv;
+ VALUE klass;
{
rb_thread_t th = rb_thread_alloc(klass);
volatile VALUE *pos;
@@ -12130,7 +11945,8 @@ rb_thread_s_new(int argc, VALUE *argv, VALUE klass)
*/
static VALUE
-rb_thread_initialize(VALUE thread, VALUE args)
+rb_thread_initialize(thread, args)
+ VALUE thread, args;
{
rb_thread_t th;
@@ -12161,7 +11977,8 @@ rb_thread_initialize(VALUE thread, VALUE args)
*/
static VALUE
-rb_thread_start(VALUE klass, VALUE args)
+rb_thread_start(klass, args)
+ VALUE klass, args;
{
if (!rb_block_given_p()) {
rb_raise(rb_eThreadError, "must be called with a block");
@@ -12182,7 +11999,8 @@ rb_thread_start(VALUE klass, VALUE args)
*/
static VALUE
-rb_thread_value(VALUE thread)
+rb_thread_value(thread)
+ VALUE thread;
{
rb_thread_t th = rb_thread_check(thread);
@@ -12216,7 +12034,8 @@ rb_thread_value(VALUE thread)
*/
static VALUE
-rb_thread_status(VALUE thread)
+rb_thread_status(thread)
+ VALUE thread;
{
rb_thread_t th = rb_thread_check(thread);
@@ -12243,7 +12062,8 @@ rb_thread_status(VALUE thread)
*/
static VALUE
-rb_thread_alive_p(VALUE thread)
+rb_thread_alive_p(thread)
+ VALUE thread;
{
rb_thread_t th = rb_thread_check(thread);
@@ -12265,7 +12085,8 @@ rb_thread_alive_p(VALUE thread)
*/
static VALUE
-rb_thread_stop_p(VALUE thread)
+rb_thread_stop_p(thread)
+ VALUE thread;
{
rb_thread_t th = rb_thread_check(thread);
@@ -12275,7 +12096,7 @@ rb_thread_stop_p(VALUE thread)
}
static void
-rb_thread_wait_other_threads(void)
+rb_thread_wait_other_threads()
{
rb_thread_t th;
int found;
@@ -12296,7 +12117,7 @@ rb_thread_wait_other_threads(void)
}
static void
-rb_thread_cleanup(void)
+rb_thread_cleanup()
{
rb_thread_t curr, th;
@@ -12330,7 +12151,7 @@ int rb_thread_critical;
*/
static VALUE
-rb_thread_critical_get(void)
+rb_thread_critical_get()
{
return rb_thread_critical?Qtrue:Qfalse;
}
@@ -12351,14 +12172,15 @@ rb_thread_critical_get(void)
*/
static VALUE
-rb_thread_critical_set(VALUE obj, VALUE val)
+rb_thread_critical_set(obj, val)
+ VALUE obj, val;
{
rb_thread_critical = RTEST(val);
return val;
}
void
-rb_thread_interrupt(void)
+rb_thread_interrupt()
{
rb_thread_critical = 0;
rb_thread_ready(main_thread);
@@ -12375,7 +12197,8 @@ rb_thread_interrupt(void)
}
void
-rb_thread_signal_raise(const char *sig)
+rb_thread_signal_raise(sig)
+ char *sig;
{
if (sig == 0) return; /* should not happen */
rb_thread_critical = 0;
@@ -12389,13 +12212,15 @@ rb_thread_signal_raise(const char *sig)
return;
}
}
- th_signm = sig; /* should be literal */
+ th_signm = sig;
curr_thread = main_thread;
rb_thread_restore_context(curr_thread, RESTORE_SIGNAL);
}
void
-rb_thread_trap_eval(VALUE cmd, int sig, int safe)
+rb_thread_trap_eval(cmd, sig, safe)
+ VALUE cmd;
+ int sig, safe;
{
rb_thread_critical = 0;
if (curr_thread == main_thread) {
@@ -12415,7 +12240,7 @@ rb_thread_trap_eval(VALUE cmd, int sig, int safe)
}
void
-rb_thread_signal_exit(void)
+rb_thread_signal_exit()
{
VALUE args[2];
@@ -12437,7 +12262,10 @@ rb_thread_signal_exit(void)
}
static VALUE
-rb_thread_raise(int argc, VALUE *argv, rb_thread_t th)
+rb_thread_raise(argc, argv, th)
+ int argc;
+ VALUE *argv;
+ rb_thread_t th;
{
volatile rb_thread_t th_save = th;
VALUE exc;
@@ -12487,7 +12315,10 @@ rb_thread_raise(int argc, VALUE *argv, rb_thread_t th)
*/
static VALUE
-rb_thread_raise_m(int argc, VALUE *argv, VALUE thread)
+rb_thread_raise_m(argc, argv, thread)
+ int argc;
+ VALUE *argv;
+ VALUE thread;
{
rb_thread_t th = rb_thread_check(thread);
@@ -12499,7 +12330,9 @@ rb_thread_raise_m(int argc, VALUE *argv, VALUE thread)
}
VALUE
-rb_thread_local_aref(VALUE thread, ID id)
+rb_thread_local_aref(thread, id)
+ VALUE thread;
+ ID id;
{
rb_thread_t th;
VALUE val;
@@ -12538,13 +12371,17 @@ rb_thread_local_aref(VALUE thread, ID id)
*/
static VALUE
-rb_thread_aref(VALUE thread, VALUE id)
+rb_thread_aref(thread, id)
+ VALUE thread, id;
{
return rb_thread_local_aref(thread, rb_to_id(id));
}
VALUE
-rb_thread_local_aset(VALUE thread, ID id, VALUE val)
+rb_thread_local_aset(thread, id, val)
+ VALUE thread;
+ ID id;
+ VALUE val;
{
rb_thread_t th = rb_thread_check(thread);
@@ -12575,7 +12412,8 @@ rb_thread_local_aset(VALUE thread, ID id, VALUE val)
*/
static VALUE
-rb_thread_aset(VALUE thread, VALUE id, VALUE val)
+rb_thread_aset(thread, id, val)
+ VALUE thread, id, val;
{
return rb_thread_local_aset(thread, rb_to_id(id), val);
}
@@ -12595,7 +12433,8 @@ rb_thread_aset(VALUE thread, VALUE id, VALUE val)
*/
static VALUE
-rb_thread_key_p(VALUE thread, VALUE id)
+rb_thread_key_p(thread, id)
+ VALUE thread, id;
{
rb_thread_t th = rb_thread_check(thread);
@@ -12606,7 +12445,9 @@ rb_thread_key_p(VALUE thread, VALUE id)
}
static int
-thread_keys_i(ID key, VALUE value, VALUE ary)
+thread_keys_i(key, value, ary)
+ ID key;
+ VALUE value, ary;
{
rb_ary_push(ary, ID2SYM(key));
return ST_CONTINUE;
@@ -12628,7 +12469,8 @@ thread_keys_i(ID key, VALUE value, VALUE ary)
*/
static VALUE
-rb_thread_keys(VALUE thread)
+rb_thread_keys(thread)
+ VALUE thread;
{
rb_thread_t th = rb_thread_check(thread);
VALUE ary = rb_ary_new();
@@ -12647,21 +12489,25 @@ rb_thread_keys(VALUE thread)
*/
static VALUE
-rb_thread_inspect(VALUE thread)
+rb_thread_inspect(thread)
+ VALUE thread;
{
char *cname = rb_obj_classname(thread);
rb_thread_t th = rb_thread_check(thread);
const char *status = thread_status_name(th->status);
VALUE str;
+ size_t len = strlen(cname)+7+16+9+1;
- str = rb_sprintf("#<%s:%p %s>", cname, (void*)thread, status);
+ str = rb_str_new(0, len); /* 7:tags 16:addr 9:status 1:nul */
+ snprintf(RSTRING(str)->ptr, len, "#<%s:0x%lx %s>", cname, thread, status);
+ RSTRING(str)->len = strlen(RSTRING(str)->ptr);
OBJ_INFECT(str, thread);
return str;
}
void
-rb_thread_atfork(void)
+rb_thread_atfork()
{
rb_thread_t th;
@@ -12736,13 +12582,14 @@ VALUE rb_cCont;
* cause the <code>callcc</code> to return (as will falling through the
* end of the block). The value returned by the <code>callcc</code> is
* the value of the block, or the value passed to
- * <em>cont</em><code>.call</code>. See class <code>Continuation</code>
+ * <em>cont</em><code>.call</code>. See class <code>Continuation</code>
* for more details. Also see <code>Kernel::throw</code> for
* an alternative mechanism for unwinding a call stack.
*/
static VALUE
-rb_callcc(VALUE self)
+rb_callcc(self)
+ VALUE self;
{
volatile VALUE cont;
rb_thread_t th;
@@ -12775,7 +12622,7 @@ rb_callcc(VALUE self)
/*
* call-seq:
- * cont.call(args, ...)
+ * cont.call(args, ...)
* cont[args, ...]
*
* Invokes the continuation. The program continues from the end of the
@@ -12790,7 +12637,10 @@ rb_callcc(VALUE self)
*/
static VALUE
-rb_cont_call(int argc, VALUE *argv, VALUE cont)
+rb_cont_call(argc, argv, cont)
+ int argc;
+ VALUE *argv;
+ VALUE cont;
{
rb_thread_t th = rb_thread_check(cont);
@@ -12834,8 +12684,10 @@ struct thgroup {
* were created.
*/
+static VALUE thgroup_s_alloc _((VALUE));
static VALUE
-thgroup_s_alloc(VALUE klass)
+thgroup_s_alloc(klass)
+ VALUE klass;
{
VALUE group;
struct thgroup *data;
@@ -12859,7 +12711,8 @@ thgroup_s_alloc(VALUE klass)
*/
static VALUE
-thgroup_list(VALUE group)
+thgroup_list(group)
+ VALUE group;
{
struct thgroup *data;
rb_thread_t th;
@@ -12898,7 +12751,8 @@ thgroup_list(VALUE group)
*/
static VALUE
-thgroup_enclose(VALUE group)
+thgroup_enclose(group)
+ VALUE group;
{
struct thgroup *data;
@@ -12918,7 +12772,8 @@ thgroup_enclose(VALUE group)
*/
static VALUE
-thgroup_enclosed_p(VALUE group)
+thgroup_enclosed_p(group)
+ VALUE group;
{
struct thgroup *data;
@@ -12955,7 +12810,8 @@ thgroup_enclosed_p(VALUE group)
*/
static VALUE
-thgroup_add(VALUE group, VALUE thread)
+thgroup_add(group, thread)
+ VALUE group, thread;
{
rb_thread_t th;
struct thgroup *data;
@@ -12990,21 +12846,18 @@ thgroup_add(VALUE group, VALUE thread)
return group;
}
-/* variables for recursive traversals */
-static ID recursive_key;
-
/*
* +Thread+ encapsulates the behavior of a thread of
* execution, including the main thread of the Ruby script.
*
* In the descriptions of the methods in this class, the parameter _sym_
- * refers to a symbol, which is either a quoted string or a
+ * refers to a symbol, which is either a quoted string or a
* +Symbol+ (such as <code>:name</code>).
*/
void
-Init_Thread(void)
+Init_Thread()
{
VALUE cThGroup;
@@ -13036,9 +12889,6 @@ Init_Thread(void)
rb_define_method(rb_cThread, "kill", rb_thread_kill, 0);
rb_define_method(rb_cThread, "terminate", rb_thread_kill, 0);
rb_define_method(rb_cThread, "exit", rb_thread_kill, 0);
- rb_define_method(rb_cThread, "kill!", rb_thread_kill_bang, 0);
- rb_define_method(rb_cThread, "terminate!", rb_thread_kill_bang, 0);
- rb_define_method(rb_cThread, "exit!", rb_thread_kill_bang, 0);
rb_define_method(rb_cThread, "value", rb_thread_value, 0);
rb_define_method(rb_cThread, "status", rb_thread_status, 0);
rb_define_method(rb_cThread, "join", rb_thread_join_m, -1);
@@ -13082,7 +12932,6 @@ Init_Thread(void)
/* allocate main thread */
main_thread = rb_thread_alloc(rb_cThread);
curr_thread = main_thread->prev = main_thread->next = main_thread;
- recursive_key = rb_intern("__recursive_key__");
}
/*
@@ -13117,7 +12966,8 @@ Init_Thread(void)
*/
static VALUE
-rb_f_catch(VALUE dmy, VALUE tag)
+rb_f_catch(dmy, tag)
+ VALUE dmy, tag;
{
int state;
VALUE val = Qnil; /* OK */
@@ -13125,7 +12975,7 @@ rb_f_catch(VALUE dmy, VALUE tag)
tag = ID2SYM(rb_to_id(tag));
PUSH_TAG(tag);
if ((state = EXEC_TAG()) == 0) {
- val = rb_yield_0(tag, 0, 0, 0);
+ val = rb_yield_0(tag, 0, 0, 0, Qfalse);
}
else if (state == TAG_THROW && tag == prot_tag->dst) {
val = prot_tag->retval;
@@ -13137,12 +12987,20 @@ rb_f_catch(VALUE dmy, VALUE tag)
return val;
}
-VALUE
-rb_catch(const char *tag, VALUE (*func)(ANYARGS), VALUE data)
+static VALUE
+catch_i(tag)
+ VALUE tag;
{
- VALUE vtag = ID2SYM(rb_intern(tag));
+ return rb_funcall(Qnil, rb_intern("catch"), 1, tag);
+}
- return rb_block_call(Qnil, rb_intern("catch"), 1, &vtag, func, data);
+VALUE
+rb_catch(tag, func, data)
+ const char *tag;
+ VALUE (*func)();
+ VALUE data;
+{
+ return rb_iterate((VALUE(*)_((VALUE)))catch_i, ID2SYM(rb_intern(tag)), func, data);
}
/*
@@ -13158,7 +13016,9 @@ rb_catch(const char *tag, VALUE (*func)(ANYARGS), VALUE data)
*/
static VALUE
-rb_f_throw(int argc, VALUE *argv)
+rb_f_throw(argc, argv)
+ int argc;
+ VALUE *argv;
{
VALUE tag, value;
struct tag *tt = prot_tag;
@@ -13173,7 +13033,7 @@ rb_f_throw(int argc, VALUE *argv)
break;
}
if (tt->tag == PROT_THREAD) {
- rb_raise(rb_eThreadError, "uncaught throw `%s' in thread %p",
+ rb_raise(rb_eThreadError, "uncaught throw `%s' in thread 0x%lx",
rb_id2name(SYM2ID(tag)),
curr_thread);
}
@@ -13190,7 +13050,9 @@ rb_f_throw(int argc, VALUE *argv)
}
void
-rb_throw(const char *tag, VALUE val)
+rb_throw(tag, val)
+ const char *tag;
+ VALUE val;
{
VALUE argv[2];
@@ -13199,85 +13061,12 @@ rb_throw(const char *tag, VALUE val)
rb_f_throw(2, argv);
}
-static VALUE
-recursive_check(VALUE obj)
-{
- VALUE hash = rb_thread_local_aref(rb_thread_current(), recursive_key);
-
- if (NIL_P(hash) || TYPE(hash) != T_HASH) {
- return Qfalse;
- }
- else {
- VALUE list = rb_hash_aref(hash, ID2SYM(ruby_frame->this_func));
-
- if (NIL_P(list) || TYPE(list) != T_ARRAY) return Qfalse;
- return rb_ary_includes(list, rb_obj_id(obj));
- }
-}
-
-static void
-recursive_push(VALUE obj)
-{
- VALUE hash = rb_thread_local_aref(rb_thread_current(), recursive_key);
- VALUE list, sym;
-
- sym = ID2SYM(ruby_frame->this_func);
- if (NIL_P(hash) || TYPE(hash) != T_HASH) {
- hash = rb_hash_new();
- rb_thread_local_aset(rb_thread_current(), recursive_key, hash);
- list = Qnil;
- }
- else {
- list = rb_hash_aref(hash, sym);
- }
- if (NIL_P(list) || TYPE(list) != T_ARRAY) {
- list = rb_ary_new();
- rb_hash_aset(hash, sym, list);
- }
- rb_ary_push(list, rb_obj_id(obj));
-}
-
-static void
-recursive_pop(void)
+/* flush_register_windows must not be inlined because flushrs doesn't flush
+ * current frame in register stack. */
+#ifdef __ia64__
+void flush_register_windows(void)
{
- VALUE hash = rb_thread_local_aref(rb_thread_current(), recursive_key);
- VALUE list, sym;
-
- sym = ID2SYM(ruby_frame->this_func);
- if (NIL_P(hash) || TYPE(hash) != T_HASH) {
- VALUE symname = rb_inspect(sym);
- VALUE thrname = rb_inspect(rb_thread_current());
- rb_raise(rb_eTypeError, "invalid inspect_tbl hash for %s in %s",
- StringValuePtr(symname), StringValuePtr(thrname));
- }
- list = rb_hash_aref(hash, sym);
- if (NIL_P(list) || TYPE(list) != T_ARRAY) {
- VALUE symname = rb_inspect(sym);
- VALUE thrname = rb_inspect(rb_thread_current());
- rb_raise(rb_eTypeError, "invalid inspect_tbl list for %s in %s",
- StringValuePtr(symname), StringValuePtr(thrname));
- }
- rb_ary_pop(list);
+ __asm__ ("flushrs");
}
+#endif
-VALUE
-rb_exec_recursive(VALUE (*func)(VALUE, VALUE, int), VALUE obj, VALUE arg)
-{
- if (recursive_check(obj)) {
- return (*func)(obj, arg, Qtrue);
- }
- else {
- VALUE result;
- int state;
-
- recursive_push(obj);
- PUSH_TAG(PROT_NONE);
- if ((state = EXEC_TAG()) == 0) {
- result = (*func)(obj, arg, Qfalse);
- }
- POP_TAG();
- recursive_pop();
- if (state) JUMP_TAG(state);
- return result;
- }
-}
diff --git a/ext/.document b/ext/.document
index e9f791facc..ba8182593e 100644
--- a/ext/.document
+++ b/ext/.document
@@ -1,11 +1,7 @@
# Add files to this as they become documented
-bigdecimal/bigdecimal.c
-digest/digest.c
-etc/etc.c
-fcntl/fcntl.c
+enumerator/enumerator.c
iconv/iconv.c
-io/wait/wait.c
nkf/lib/kconv.rb
nkf/nkf.c
socket/socket.c
diff --git a/ext/Setup b/ext/Setup
index b0f29b9f7b..7b214abde3 100644
--- a/ext/Setup
+++ b/ext/Setup
@@ -10,23 +10,24 @@
#digest/sha1
#digest/sha2
#dl
+#enumerator
#etc
#fcntl
#gdbm
#iconv
#io/wait
#nkf
-#openssl
#pty
+#openssl
#racc/cparse
#readline
-#ripper
#sdbm
#socket
#stringio
#strscan
#syck
#syslog
+#tcltklib
#tk
#win32ole
#zlib
diff --git a/ext/Setup.atheos b/ext/Setup.atheos
index 6e0b8ae5a6..9b1bdecb95 100644
--- a/ext/Setup.atheos
+++ b/ext/Setup.atheos
@@ -17,17 +17,17 @@ gdbm
iconv
io/wait
nkf
-#openssl
pty
+#openssl
racc/parse
readline
-ripper
sdbm
socket
stringio
strscan
syck
syslog
+#tcltklib
#tk
#win32ole
zlib
diff --git a/ext/Setup.dj b/ext/Setup.dj